Lý lịch
Trực quan hóa các thuật ngữ-tính toán
John Tromp nổi tiếng (và golfer mã ) John Tromp đã nghĩ ra một hình dung thú vị của các thuật ngữ trong-tính toán. Theo lời anh:
trừu tượng hóa (lambdas) được thể hiện bằng các đường ngang, biến bằng các đường thẳng đứng phát ra từ lambda ràng buộc của chúng và các ứng dụng bằng các liên kết ngang kết nối các biến ngoài cùng bên trái.
Ví dụ: thuật ngữ lambda f.λx.f (f (f (fx))) tương ứng với trực quan hóa:
-------------------
| | | |
-------------------
| | | | |
| | | |----
| | |----
| |----
|----
|
Đọc nó từ trên xuống dưới:
- Đường ngang đầu tiên đại diện cho đầu tiên.
- Bốn dòng giảm dần từ nó đại diện cho f s trong cơ thể.
- Tương tự, đường ngang thứ hai đại diện cho second thứ hai và dòng mới duy nhất giảm dần từ nó đại diện cho x trong cơ thể.
- Dòng f ngoài cùng bên phải và dòng x được kết nối bằng một đường nằm ngang thể hiện một ứng dụng (f x) .
- Ứng dụng tiếp theo là (f (f x)) , et cetera.
Chữ số nhà thờ
Các số của Giáo hội là một chuỗi các thuật ngữ cụ thể trong phép tính λ, theo mẫu sau:
0 = λf. λx. x
1 = λf. λx. f x
2 = λf. λx. f (f x)
3 = λf. λx. f (f (f x))
...
Bài tập
Cho số đầu vào n , in một số nghệ thuật ASCII trực quan hóa chữ số Church thứ n . Chẳng hạn, ví dụ trên là đầu ra mục tiêu của bạn khi được n = 4 . Với n = 0 , in:
---
---
|
|
Các trường hợp thử nghiệm
Câu trả lời của bạn phải xuất chính xác cùng một văn bản (dòng mới theo modulo) vì đoạn mã ngăn xếp này cho tất cả các đầu vào số nguyên n ≥ 0 :
Đây là mã golf , vì vậy mã ngắn nhất tính bằng byte sẽ thắng.
.repeat
.