Self-descriptive number
一昨日Self-descriptive numberを高速に求める方法を
スタック・オーバーフローで質問してみた。
(http://ja.stackoverflow.com/questions/8696/10%E6%A1%81%E3%81%BE%E3%81%A7%E3%81%AEself-descriptive-number%E3%81%AE%E6%B1%82%E3%82%81%E6%96%B9%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)
そして、昨日h2so5さんのコードを用いて少しばかり高速化してみた。
def sdn(len, l = 0, m = 0, x = [])
a = []
if l == len
if (0..len - 1).all?{|i| x.count(i) == x[i]}
a << x.join.to_i
end
elsif m <= len
s = l > 0 ? 0 : 1
(s..len - 1).each{|n| a += sdn(len, l + 1, m + n, x + [n])}
end
a
end
N = 10
(1..N).each{|b|
sdn(b).each{|n| p n}
}
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。