> 最初の2桁は 14 なので、アルファベット・インデックス表の 「o」 にあたり、カウントしません。 > 次の2桁は 15 なので、アルファベット・インデックス表の 「p」 にあたり、カウントします。
以下のプログラムは,要求されている仕様と異なる。以下のプログラムでは,14, 41, 15 のようにして二桁ずつ区切る。ははは。
この解は,βバージョン
str = "1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989"
str1 = unlist(strsplit(str, ""))
str2 = str1[2:1000]
str1 = str1[1:999]
func = function(x, y) {
(x == 0 && y == 0) || # a
(x == 0 && y == 1) || # b
(x == 0 && y == 4) || # e
(x == 1 && y == 5) || # p
(x == 1 && y == 7) || # r
(x == 1 && y == 8) || # s
(x == 2 && y == 4) # y
}
system.time(print(sum(mapply(func, str1, str2))))
[1] 63
ユーザ システム 経過
0.030 0.001 0.037
題意どおりに解く場合は,str1, str2 をちょっと変えればよい。答えは 31 になるはず。hahaha...