চ্যালেঞ্জ
সবচেয়ে দীর্ঘতম স্বাক্ষর সহ কমপক্ষে 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 এর স্কোর হবে - সর্বোচ্চ স্কোর জয়!
উদাহরণ
অন্য ভাষাগুলির অনুমতি থাকলেও নিম্নলিখিত উদাহরণগুলি হ্যাসকেলে রয়েছে:
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)]