自然数の分割
Posted feedbacks - xtal
1 2 3 4 5 6 | (|n, m|{
if(m <= 1) return [[n]];
r: [];
(n + 1).times{|x| callee(x, m - 1){ r.push_back([n - x] ~ it); } }
return r;
})(5, 3){ it.p; }
|
fiber を使って書き換えてみる。
1 2 3 4 5 6 | (|n, m|{ c: callee; m--;
return fiber{
if(m < 1) yield [n];
else (n + 1).times{|x| c(x, m){ yield [n - x] ~ it; } }
}
})(5, 3).join("\n").p;
|



herumi
#4099()
Rating1/1=1.00
[ reply ]