tło
Wizualizacja terminów rachunku λ
Słynny żongler lambda (i golfista kodu ) John Tromp opracował interesującą wizualizację terminów w rachunku λ. Jego słowami:
abstrakcje (lambda) są reprezentowane przez linie poziome, zmienne przez linie pionowe wychodzące z ich wiążącej lambda, a aplikacje przez poziome połączenia łączące zmienne skrajnie lewe.
Na przykład termin lambda λf.λx.f (f (f (fx))) odpowiada wizualizacji:
-------------------
| | | |
-------------------
| | | | |
| | | |----
| | |----
| |----
|----
|
Przeczytaj od góry do dołu:
- Pierwsza linia pozioma reprezentuje pierwszą λ.
- Cztery linie zstępujące z niego reprezentują fs w ciele.
- Podobnie druga linia pozioma reprezentuje drugą λ, a pojedyncza nowa linia zstępująca z niej reprezentuje x w ciele.
- Najbardziej wysunięta w prawo linia f i linia x są połączone poziomą linią reprezentującą aplikację (f x) .
- Następna aplikacja to (f (f x)) i tak dalej.
Cyfry kościelne
Te cyfry Kościół to specyficzna sekwencja terminów w X-rachunku, biorąc pod następującym wzorem:
0 = λf. λx. x
1 = λf. λx. f x
2 = λf. λx. f (f x)
3 = λf. λx. f (f (f x))
...
Zadanie
Biorąc pod uwagę liczbę wejściową n , wydrukuj grafikę ASCII, która wizualizuje n- tą cyfrę Kościoła. Na przykład powyższy przykład jest wynikiem docelowym, gdy podano n = 4 . Dla n = 0 wydrukuj:
---
---
|
|
Przypadki testowe
Twoja odpowiedź musi wypisać dokładnie ten sam tekst (modulo końcowe znaki nowej linii), co ten fragment kodu stosu dla wszystkich liczb całkowitych n ≥ 0 :
To jest golf-golf, więc wygrywa najkrótszy kod w bajtach.
.repeat
.