yuuki blog

プログラミング をアプトプットしています。

Ruby 回文数の計算

解答が回文数になる問題です。

  • 入力した数字の桁を逆から並べ、反転させる。
  • 元の数字と、反転させてできた数字を足し算する。
  • 足し算してできた数字を用いて 1 番目の操作から繰り返す。
  • 12321のように回文数になれば出力する

入力123

  • 123を反転 => 321
  • 123+321 = 444 => 回文数なので出力 (回文数で無い時は繰り返す)
n = gets.chomp
loop {
  r = n.chars.each_slice(1).map(&:join).reverse.join.to_i
  n = n.to_i
  if n == r
    puts r
    break
  else 
    n += r
  end
  n = n.to_s
}

入力を数値ではなく文字列で入力します。 n.chars.each_slice(1).map(&:join).でにと文字ずつの配列にしています。 reverseで配列を逆転させ、joinで文字列に変換し、to_iで数値に変換しています。 loopで反転させても一緒なら出力し、違うならばnとrをたし繰り返しています。