らでぃっくすを底としちゃうかもしれない その2.1
summation f (x:xs) = (f x) + summation f xs
で前回やった series を使うと:
square x = x * x summation (square) take(series(9 2) 45)
こんなんなって、このままだと無限に配列ができちゃうので take をつかう。
take は、簡単に言うと指定された数だけ配列を持ってくる関数。
上記では、とりあえず 45 個持ってくることにした。
ということで、Ruby で計算してみる:
r = 9 n = 2 summation = 0 ary = [] 45.times do |i| answer = r ** (n + i) puts "#{r} ** #{(n + i).to_s.rjust(2)} = #{answer.to_s.rjust(50)}" ary << answer end ary.each do |it| summation += it end p summation
の結果:
9 ** 2 = 81 9 ** 3 = 729 9 ** 4 = 6561 9 ** 5 = 59049 9 ** 6 = 531441 9 ** 7 = 4782969 9 ** 8 = 43046721 9 ** 9 = 387420489 9 ** 10 = 3486784401 9 ** 11 = 31381059609 9 ** 12 = 282429536481 9 ** 13 = 2541865828329 9 ** 14 = 22876792454961 9 ** 15 = 205891132094649 9 ** 16 = 1853020188851841 9 ** 17 = 16677181699666569 9 ** 18 = 150094635296999121 9 ** 19 = 1350851717672992089 9 ** 20 = 12157665459056928801 9 ** 21 = 109418989131512359209 9 ** 22 = 984770902183611232881 9 ** 23 = 8862938119652501095929 9 ** 24 = 79766443076872509863361 9 ** 25 = 717897987691852588770249 9 ** 26 = 6461081889226673298932241 9 ** 27 = 58149737003040059690390169 9 ** 28 = 523347633027360537213511521 9 ** 29 = 4710128697246244834921603689 9 ** 30 = 42391158275216203514294433201 9 ** 31 = 381520424476945831628649898809 9 ** 32 = 3433683820292512484657849089281 9 ** 33 = 30903154382632612361920641803529 9 ** 34 = 278128389443693511257285776231761 9 ** 35 = 2503155504993241601315571986085849 9 ** 36 = 22528399544939174411840147874772641 9 ** 37 = 202755595904452569706561330872953769 9 ** 38 = 1824800363140073127359051977856583921 9 ** 39 = 16423203268260658146231467800709255289 9 ** 40 = 147808829414345923316083210206383297601 9 ** 41 = 1330279464729113309844748891857449678409 9 ** 42 = 11972515182562019788602740026717047105681 9 ** 43 = 107752636643058178097424660240453423951129 9 ** 44 = 969773729787523602876821942164080815560161 9 ** 45 = 8727963568087712425891397479476727340041449 9 ** 46 = 78551672112789411833022577315290546060373041 88370631126888088312150399479701864317919661
どっかの RPG の経験値ですね、わかります。