問題はこれ Problem 56 - Project Euler
Ruby。30分くらい。
def digitsum(x)
if not Integer === x then
return "error"
end
dsum = 0
while x != 0
dsum += x % 10
x = x / 10
end
return dsum
end
max = 0
for a in 1..99
for b in 1..99
c = digitsum(a**b)
if max < c then
max = c
a1 = a
b1 = b
end
end
end
puts max
puts a1,b1
上のソースコード、タブ文字も半角空白も表示されないから
全角空白で表示させるという醜悪なことをするはめに……(´・ω・`)
最後のputs maxを「puts c」とずっと書いていて、「答えが間違ってる」と言われた。
しばらく気づかなかったし……
Rubyで「これがあるクラスに属するかの判定」ってどうやるのか、しばし迷った。
今回は本質的なことじゃないけれど。
Ruby/インスタンスが任意のクラスのインスタンスかどうか判定する - 俺の基地
を見て演算子「===」を使ったけど、
Rubyのお勉強第4回、クラスの判別編 - Unknown::Programming
instance_of?とis_a?の違い - mic_footprints
を見ると……
is_aとかkind_ofとかinstance_ofとか色々あるみたいね。
細かい違いもあるようだけど今回は省略っと。

