พื้นหลัง
การแสดงเงื่อนไข calcul-แคลคูลัส
lambda-juggler ที่มีชื่อเสียง (และนักกอล์ฟโค้ด ) John Tromp คิดค้นภาพที่น่าสนใจของคำศัพท์ในλ-แคลคูลัส ในคำพูดของเขา:
abstractions (lambdas) แสดงด้วยเส้นแนวนอนตัวแปรตามเส้นแนวตั้งเล็ดลอดออกมาจาก lambda ที่มีผลผูกพันและแอปพลิเคชันโดยลิงก์แนวนอนที่เชื่อมต่อตัวแปรซ้ายสุด
ตัวอย่างเช่นคำแลมบ์ดาλf.λx.f (f (f (f (fx)))) สอดคล้องกับการสร้างภาพ:
-------------------
| | | |
-------------------
| | | | |
| | | |----
| | |----
| |----
|----
|
อ่านจากบนลงล่าง:
- เส้นแนวนอนแรกแสดงถึง first เส้นแรก
- เส้นสี่เส้นที่ลงมาจากนั้นแทนค่าfในร่างกาย
- ในทำนองเดียวกันเส้นแนวนอนที่สองแสดงถึง second ที่สองและบรรทัดใหม่เดียวที่ลงมาจากนั้นหมายถึงxในร่างกาย
- ขวาสุดฉบรรทัดและxสายให้เชื่อมต่อกันด้วยเส้นแนวนอนเป็นตัวแทนของแอพลิเคชัน(ฉ 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
เบราว์เซอร์บางส่วนไม่สนับสนุน