ท้าทาย
ค้นหานิพจน์ที่มีความยาวไม่เกิน 100 ไบต์ด้วยลายเซ็นชนิดที่ยาวที่สุด
กฎระเบียบ
- อนุญาตให้ใช้ภาษาที่พิมพ์แบบสแตติกที่มีการอนุมานประเภท
- ประเภทต้องไม่คลุมเครือ แต่อย่างอื่นอาจรวมถึงประเภทที่ไม่มีอินสแตนซ์ที่กำหนดไว้ ตัวอย่างเช่น
Num [a]
และEq [a]
ได้รับอนุญาตแม้ไม่มีอินสแตนซ์ที่กำหนดไว้ - ไม่มีการนำเข้าอื่นนอกจากขั้นต่ำที่จำเป็นในการรวบรวมโปรแกรมด้วย STDIN / STDOUT
- ไม่อนุญาตประเภทอนันต์
- หากคำตอบมีมากกว่าหนึ่งการแสดงออกเพียงหนึ่งอาจส่งผลให้คะแนน ตัวอย่างเช่นแม้ว่าลายเซ็นประเภทของการแต่งเพลงจะ
(.) :: (b -> c) -> (a -> b) -> a -> c
มีคะแนน 20 แต่คำตอบที่มี 25 สำเนา(.)\n
จะมีคะแนนเท่ากับ 20 ไม่ใช่ 500 - นิพจน์ต้องมีขนาดไม่เกิน 100 ไบต์
- คะแนนคือจำนวนตัวอักษรในลายเซ็นประเภทไม่รวมชื่อของฟังก์ชั่นและช่องว่างใด ๆ ตัวอย่างเช่น
f :: (a -> b) -> a -> b
จะมีคะแนน 12 - คะแนนสูงสุดชนะ!
ตัวอย่าง
แม้ว่าจะอนุญาตให้ใช้ภาษาอื่น แต่ตัวอย่างต่อไปนี้อยู่ใน Haskell:
Score: 112
map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map
f :: (a -> b)
-> [[[[[[[[[[[[[[[[[[[[[[[[[a]]]]]]]]]]]]]]]]]]]]]]]]]
-> [[[[[[[[[[[[[[[[[[[[[[[[[b]]]]]]]]]]]]]]]]]]]]]]]]]
Score: 240
(.).(.).(.).(.).(.).(.).(.).(.).(.).(.).(.).(.).(.).(.).(.).(.).(.).(.).(.).(.).(.).(.).(.).(.).(.)
f :: (b->c)->(a->a1->a2->a3->a4->a5->a6->a7->a8->a9->a10->a11->a12->a13->a14->a15->a16->a17->a18->a19->a20->a21->a22->a23->a24->b)->a1->a2->a3->a4->a5->a6->a7->a8->a9->a10->a11->a12->a13->a14->a15->a16->a17->a18->a19->a20->a21->a22->a23->a24->c
Score: 313
foldl$foldl$foldl$foldl$foldl$foldl$foldl$foldl$foldl$foldl$foldl$foldl$foldl$foldl$foldl$foldl(.)
f :: (Foldable t, Foldable t1, Foldable t2, Foldable t3, Foldable t4,
Foldable t5, Foldable t6, Foldable t7, Foldable t8, Foldable t9,
Foldable t10, Foldable t11, Foldable t12, Foldable t13,
Foldable t14, Foldable t15) =>
(b -> c)
-> t (t1 (t2 (t3 (t4 (t5 (t6 (t7 (t8 (t9 (t10 (t11 (t12 (t13 (t14 (t15 (b
-> b))))))))))))))))
-> b
-> c
Score: 538
lex.show.foldl1.mapM.traverse.sum.mapM.sum.traverse.(.).mapM.scanl.zipWith3((.traverse).(.traverse))
(Num
(a -> ([[c]] -> t3 [[a1 -> f b]]) -> [[c]] -> t3 [[a1 -> f b]]),
Num
(([[c]] -> t3 [[a1 -> f b]])
-> t1 (t2 ([[c]] -> t3 [[a1 -> f b]]))
-> [[c]]
-> t3 [[a1 -> f b]]),
Show
(t (t1 (t2 ([[c]] -> t3 [[a1 -> f b]])))
-> t1 (t2 ([[c]] -> t3 [[a1 -> f b]]))),
Applicative f, Foldable t,
Foldable ((->) (t1 (t2 ([[c]] -> t3 [[a1 -> f b]])) -> a)),
Foldable
((->) (([[c]] -> t3 [[a1 -> f b]]) -> a -> t3 [a1 -> f b])),
Traversable t1, Traversable t2, Traversable t3, Traversable t4,
Traversable t5,
Traversable ((->) (t1 (t2 ([[c]] -> t3 [[a1 -> f b]])))),
Traversable ((->) ([[c]] -> t3 [[a1 -> f b]]))) =>
[(t5 (t4 a1) -> f (t5 (t4 b))) -> c -> a1 -> f b]
-> [(String, String)]