3ケタの数字から見つかる カプレカ数 は「495」が唯一らしい
与えられた数値に対して「カプレカ操作」を実行し、値がおなじになるものの数を探してみた
ループ処理でゴリ押し
def kaprekar_manipulate(n) # 桁数を昇順・降順に並べ替える max = n.to_s .chars .map(&:to_i) .sort .reverse .map(&:to_s) .join .to_i min = n.to_s .chars .map(&:to_i) .sort .map(&:to_s) .join .to_i # for debug # pp max # pp min max - min end # n = 495 # p is_kaprekar_number = # kaprekar_manipulate(n).eql?(n) # => true ret = (100..999).map do |n| kaprekar_manipulate(n).eql?(n) end.filter { |bool| bool } .size p ret # => 1
カプレカ操作を繰り返すことで、プログラムは無限ループに陥るか、カプレカ数を発見できるか分岐するらしい