10桁までのSelf-descriptive numberの求め方について
各桁の数字がその桁の出現回数を表すような数を
Self-descriptive numberと呼びます。
(http://en.wikipedia.org/wiki/Self-descriptive_number)
以下のコードで、10桁までのSelf-descriptive numberを
求めようとしたのですが、
9桁、10桁のSelf-descriptive numberの算出に時間が
かかっています。
もっと高速に求める方法があれば、ご教示ください。
N = 10
(1..N).each{|b|
(0..b - 1).to_a.repeated_permutation(b){|a|
if a[0] > 0
i = b - 1
flag = true
while i > -1 && flag
if a.count(i) == a[i]
i -= 1
else
flag = false
end
end
p a.join.to_i if i == -1
end
}
}