読者です 読者をやめる 読者になる 読者になる

プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問の1問目

1日1問ぐらいのペースで解いていきたい。

まず、1問目から普通に難しい・・・

これ、10分で解答せよって書いてあったけど、みんなできるのか?

Q.1 10進数で回文

10進数、2進数、8進数のいずれで表示しても回文となる数のうち、10進数の10以上で最小の値を求めてください。

9(10) = 1001(2) = 11(8)

()内は進数を表している

答え

num = 11
while true
  if num.to_s == num.to_s.reverse &&
     num.to_s(8) == num.to_s(8).reverse &&
     num.to_s(2) == num.to_s(2).reverse
    puts num
    break
  end
  num += 2
end

私は解けませんでしたよ。