LoginSignup
4
0

More than 5 years have passed since last update.

会社で少し盛り上がった Project Euler をやってみる 018

Posted at

Problem 018

以下の三角形の頂点から下まで移動するとき, その数値の和の最大値は23になる.

   3
  7 4
 2 4 6
8 5 9 3
この例では 3 + 7 + 4 + 9 = 23.

以下の三角形を頂点から下まで移動するとき, その最大の和を求めよ.

              75
             95 64
            17 47 82
           18 35 87 10
          20 04 82 47 65
         19 01 23 75 03 34
        88 02 77 73 07 63 67
       99 65 04 28 06 16 70 92
      41 41 26 56 83 40 80 70 33
     41 48 72 33 47 32 37 16 94 29
    53 71 44 65 25 43 91 52 97 51 14
   70 11 33 28 77 73 17 78 39 68 17 57
  91 71 52 38 17 14 91 43 58 50 27 29 48
 63 66 04 68 89 53 67 30 73 16 69 87 40 31
04 62 98 27 23 09 70 98 73 93 38 53 60 04 23


Answer 018 (Python)

class Problem18:

    DATA = [
        [75],
        [95,64],
        [17,47,82],
        [18,35,87,10],
        [20 ,4,82,47,65],
        [19 ,1,23,75 ,3,34],
        [88 ,2,77,73 ,7,63,67],
        [99,65 ,4,28 ,6,16,70,92],
        [41,41,26,56,83,40,80,70,33],
        [41,48,72,33,47,32,37,16,94,29],
        [53,71,44,65,25,43,91,52,97,51,14],
        [70,11,33,28,77,73,17,78,39,68,17,57],
        [91,71,52,38,17,14,91,43,58,50,27,29,48],
        [63,66 ,4,68,89,53,67,30,73,16,69,87,40,31],
        [ 4,62,98,27,23 ,9,70,98,73,93,38,53,60 ,4,23],
    ]

    def main(self):
        while(len(self.DATA) > 1):
            self.reduceOne()
        return self.DATA

    def reduceOne(self):
        lastLine = self.triangleMaxSumList(self.DATA.pop(), self.DATA.pop())
        self.DATA.append(lastLine)

    def triangleMaxSumList(self, l1, l2):
        return [max(l2[i] + l1[i], l2[i] + l1[i+1]) for i in range(len(l2))]

if __name__ == '__main__':
    p = Problem18()
    print(p.main()[0][0])

(参考) Project Euler とは

Project Euler はプログラミングで数学の問題を解くサイトです。問題は600問以上あるので、勉強に使うのも良し、楽しむのも良しです。

サイトに登録すれば、解答を submit することができ、その場であっているか判定してくれます。

また、問題だけであれば、日本語に翻訳された Wiki もあるのでそちらを見ながらやると捗ると思います。

Project Euler(日本語訳)

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0