พื้นหลัง
คุณเพิ่งเรียนรู้ว่าตรรกะเชิงการรวมคืออะไร ทึ่งกับ combinators ต่าง ๆ ที่คุณใช้เวลาเรียนรู้เกี่ยวกับพวกเขาสักหน่อย ในที่สุดคุณก็สะดุดกับการแสดงออกนี้:
(S I I (S I I))
คุณสังเกตเห็นว่าเมื่อพยายามที่จะลดขนาดให้อยู่ในรูปแบบปกติมันจะลดตัวเองลงหลังจากสามขั้นตอน:
(S I I (S I I))
= (I (S I I) (I (S I I))) (1)
= (S I I (I (S I I))) (2)
= (S I I (S I I)) (3)
คุณมุ่งมั่นที่จะค้นหานิพจน์อื่นที่ใช้คุณลักษณะนี้และเริ่มทำงานกับเรื่องนี้ทันที
กฎระเบียบ
คุณสามารถใช้ combinators ต่อไปนี้ร่วมกัน:
B f g x = f (g x) C f x y = f y x I x = x K x y = x S f g x = f x (g x) W f x = f x x
แอปพลิเคเชื่อมโยงทางด้านซ้ายซึ่งหมายความว่าเป็นจริง
(S K K)
((S K) K)
การลดลงเพียงเล็กน้อยนั้นไม่มีขั้นตอนการลดอื่น ๆ ที่ใช้ขั้นตอนน้อยลง ตัวอย่าง: หาก
x
มีการลดลงการลดy
ที่น้อยที่สุดที่ถูกต้อง(W f x)
คือ(W f x) = (W f y) (1) = f y y (2)
และไม่
(W f x) = f x x (1) = f y x (2) = f y y (3)
ช่องโหว่มาตรฐานใช้
งาน
เรากำหนดวัฏจักรของนิพจน์ให้มีการลดจำนวนน้อยที่สุดระหว่างสองนิพจน์เดียวกัน
งานของคุณคือค้นหานิพจน์ด้วยจำนวนผู้ใช้ที่ใช้ <100 ซึ่งสร้างรอบที่ยาวที่สุด
เกณฑ์การให้คะแนน
คะแนนของคุณจะถูกกำหนดโดยความยาวของรอบการแสดงออกของคุณ หากการแสดงออกของคนสองคนมีวัฏจักรเดียวกันคำตอบที่ใช้ combinators น้อยกว่าจะชนะ หากพวกเขาทั้งสองใช้ combinators จำนวนเท่ากันคำตอบก่อนหน้านี้จะชนะ
ขอให้โชคดีและสนุก!
x
มีการลดลงy
แล้วW f x -> W f y -> f y y
หรือW f x -> f x x -> f x y -> f y y
มีความยาวแตกต่างกัน