Latar Belakang
Visualisasi istilah λ-kalkulus
Lambda-juggler terkenal (dan pegolf kode ) John Tromp merancang visualisasi yang menarik dari istilah dalam λ-calculus. Dalam kata-katanya:
abstraksi (lambda) diwakili oleh garis-garis horizontal, variabel-variabel dengan garis-garis vertikal yang turun dari lambda pengikatnya, dan aplikasi oleh tautan-tautan horisontal yang menghubungkan variabel-variabel paling kiri.
Misalnya, istilah lambda λf.λx.f (f (f (fx)))) sesuai dengan visualisasi:
-------------------
| | | |
-------------------
| | | | |
| | | |----
| | |----
| |----
|----
|
Baca dari atas ke bawah:
- Garis horizontal pertama mewakili λ pertama.
- Empat garis yang turun darinya mewakili huruf f dalam tubuh.
- Demikian pula, garis horizontal kedua mewakili λ kedua, dan garis baru tunggal turun dari itu mewakili x dalam tubuh.
- Garis f paling kanan dan garis x dihubungkan oleh garis horizontal yang mewakili aplikasi (f x) .
- Aplikasi selanjutnya adalah (f (f x)) , dan sebagainya.
Angka gereja
The angka Gereja adalah urutan tertentu dari istilah dalam λ-kalkulus, mengambil pola berikut:
0 = λf. λx. x
1 = λf. λx. f x
2 = λf. λx. f (f x)
3 = λf. λx. f (f (f x))
...
Tugas
Diberi nomor input n , cetak beberapa seni ASCII yang memvisualisasikan angka Gereja ke- n . Sebagai contoh, contoh di atas adalah output target Anda ketika diberikan n = 4 . Untuk n = 0 , cetak:
---
---
|
|
Uji kasus
Jawaban Anda harus menampilkan teks yang persis sama (modulo trailing newlines) seperti snipet tumpukan ini untuk semua input integer n ≥ 0 :
Ini adalah kode-golf , jadi kode terpendek dalam byte menang.
.repeat
.