1から初めて右方向に進み時計回りに数字を増やしていき, 5×5の螺旋が以下のように生成される:
1001×1001の螺旋を同じ方法で生成したとき, 対角線上の数字の和はいくつか?
21 22 23 24 25
20 07 08 09 10
19 06 01 02 11
18 05 04 03 12
17 16 15 14 13
両対角線上の数字の合計は101であることが確かめられる.20 07 08 09 10
19 06 01 02 11
18 05 04 03 12
17 16 15 14 13
1001×1001の螺旋を同じ方法で生成したとき, 対角線上の数字の和はいくつか?
対角線上の数の増え方にパターンがあります.
一番内側が+2, その外側が+4となっています.
まず, そのような数のリストを作ります.
(require srfi/1) (define c (fold (lambda (n ans) (cons (+ (car ans) n) ans)) '(1) (apply append (map (lambda (n) (list n n n n)) (iota 500 2 2)))))
計算してみます.
ようこそ DrRacket, バージョン 5.3.3 [3m]. 言語: Pretty Big; memory limit: 2048 MB. > (take (reverse c) 20) (1 3 5 7 9 13 17 21 25 31 37 43 49 57 65 73 81 91 101 111) > (fold + 0 c) 669171001 >
0 件のコメント:
コメントを投稿