--/--/--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2008/10/21

Project Euler: Problem 18

Problem 18

総当たりはやめとけと注意書きがあるにも関わらず、総当たりで。

実行結果

$ runhaskell 18.hs
1482

プログラム

 1 input = [[75],
 2          [95,64],
 3          [17,47,82],
 4          [18,35,87,10],
 5          [20,04,82,47,65],
 6          [19,01,23,75,03,34],
 7          [88,02,77,73,07,63,67],
 8          [99,65,04,28,06,16,70,92],
 9          [41,41,26,56,83,40,80,70,33],
10          [41,48,72,33,47,32,37,16,94,29],
11          [53,71,44,65,25,43,91,52,97,51,14],
12          [70,11,33,28,77,73,17,78,39,68,17,57],
13          [91,71,52,38,17,14,91,43,58,50,27,29,48],
14          [63,66,04,68,89,53,67,30,73,16,69,87,40,31],
15          [04,62,98,27,23,09,70,98,73,93,38,53,60,04,23]]
16
17 downPyramid :: [[a]] -> [[a]]
18 downPyramid (top:low) = down' top low
19   where down' [] _ = []
20         down' top [] = map (:[]) top
21         down' (t:ts) ((l1:l2:ls):low') =
22             map (t:$ down' [l1,l2] low' ++
23             down' ts ((l2:ls):low')
24
25 maxDownPyramid = maximum . map sum . downPyramid
26
27 stupid = maxDownPyramid input
28
29 main = print $ stupid
スポンサーサイト

comment

post




上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。