Project Euler – 問題13

以下の100個の50桁の数の和の最初の10桁を求めよ。(データ省略)

大きな数の足し算をどのように実現するかという問題であるが、Haskellの場合 はデフォルトで処理が可能なので単純な計算問題になる。データの扱いかたが 一考の余地があるが、ここではまたしてもプログラム中にリテラルとして埋め 込んだ。ソースコードは無駄に長くなるので一部省略して掲載した。全てのデー タが知りたい場合はProject Eulerのサイトを参照して欲しい。このデータに sumを適用するだけで和を求めることができる。非常に便利である。答えを showで文字列に変換しtake 10で最初の10桁を求められる。

euler013Digits = [ 37107287533902102798797998220837590246510135740250,
                   46376937677490009712648124896970078050417018260538,
                   74324986199524741059474233309513058123726617309629,
                   91942213363574161572522430563301811072406154908250,
                   23067588207539346171171980310421047513778063246676,
                   89261670696623633820136378418383684178734361726757,
                   28112879812849979408065481931592621691275889832738,
                   44274228917432520321923589422876796487670272189318,
                   47451445736001306439091167216856844588711603153276,

                   ... 省略 ...

                   82616570773948327592232845941706525094512325230608,
                   22918802058777319719839450180888072429661980811197,
                   77158542502016545090413245809786882778948721859617,
                   72107838435069186155435662884062257473692284509516,
                   20849603980134001723930671666823555245252804609722,
                   53503534226472524250874054075591789781264330331690]

euler013 = take 10 $ show $ sum euler013Digits