Фон
Визуализация терминов λ-исчисления
Знаменитый лямбда-жонглер (и гольфист кода ) Джон Тромп изобрел интересную визуализацию терминов в λ-исчислении. По его словам:
абстракции (лямбды) представлены горизонтальными линиями, переменные - вертикальными линиями, исходящими от их связующей лямбды, а приложения - горизонтальными связями, соединяющими крайние левые переменные.
Например, лямбда-член λf.λx.f (f (f (fx))) соответствует визуализации:
-------------------
| | | |
-------------------
| | | | |
| | | |----
| | |----
| |----
|----
|
Прочитайте это сверху донизу:
- Первая горизонтальная линия представляет первую λ.
- Четыре нисходящие линии представляют fs в теле.
- Аналогично, вторая горизонтальная линия представляет вторую λ, а единственная новая линия, идущая от нее, представляет x в теле.
- Крайняя правая линия f и линия x соединены горизонтальной линией, представляющей приложение (f x) .
- Следующее приложение (f (f x)) и так далее.
Церковные цифры
В позиции Церкви представляют собой специфическую последовательность терминов в Х-исчислении, принимая на следующей схеме:
0 = λf. λx. x
1 = λf. λx. f x
2 = λf. λx. f (f x)
3 = λf. λx. f (f (f x))
...
задача
Учитывая введенное число n , напечатайте немного искусства ASCII, которое визуализирует n- ую церковную цифру. Например, приведенный выше пример является вашим целевым выходом, когда задано n = 4 . Для n = 0 выведите:
---
---
|
|
Контрольные примеры
Ваш ответ должен выводить точно такой же текст (по модулю завершающие символы новой строки), как этот фрагмент стека для всех целочисленных входов n ≥ 0 :
Это Код-гольф, поэтому выигрывает самый короткий код в байтах.
.repeat
.