Arka fon
Λ-kalkülüs terimlerini görselleştirme
Ünlü lambda-hokkabaz (ve kod golfçüsü ) John Tromp cal hesabındaki terimlerin ilginç bir görselleştirmesini tasarladı . Onun sözleriyle:
soyutlamalar (lambdalar) yatay çizgilerle, değişkenler bağlayıcı lambdadan aşağıya doğru dikey çizgilerle temsil edilir ve en soldaki değişkenleri bağlayan yatay bağlantılarla uygulamalar.
Örneğin, lambda terimi λf.λx.f (f (f (fx))) görselleştirmeye karşılık gelir:
-------------------
| | | |
-------------------
| | | | |
| | | |----
| | |----
| |----
|----
|
Yukarıdan aşağıya doğru okuyun:
- İlk yatay çizgi ilk λ'yı temsil eder.
- Ondan inen dört çizgi vücuttaki f'leri temsil eder .
- Benzer şekilde, ikinci yatay çizgi ikinci λ'yı temsil eder ve ondan inen tek yeni çizgi vücuttaki x'i temsil eder .
- En sağdaki f çizgisi ve x çizgisi, bir uygulamayı temsil eden yatay bir çizgi ile bağlanır (f x) .
- Bir sonraki uygulama (f (fx)) , vb.
Kilise rakamları
Church rakamları aşağıdaki modele alarak, λ-Diferensiyel terimler belirli bir dizi vardır:
0 = λf. λx. x
1 = λf. λx. f x
2 = λf. λx. f (f x)
3 = λf. λx. f (f (f x))
...
Görev
Bir giriş numarası n verildiğinde , aşağıdakileri görselleştiren bir ASCII resmi yazdırın: n . Kilise numarasını . Örneğin, yukarıdaki örnek n = 4 verildiğinde hedef çıktınızdır . For n = 0 , baskı:
---
---
|
|
Test senaryoları
Cevabınız , tüm tamsayı girişleri için bu yığın snippet'i ile tam olarak aynı metni (modulo takip eden yeni satırlar) vermelidir n ≥ 0 :
Bu kod golf, bayt cinsinden en kısa kod kazanır.
.repeat
.