kenaxt #4636(2007/12/06 01:24 GMT) [ Ruby ] Rating0/0=0.00
短さに挑戦。 出力は短い順に行うので、出力用の配列に1桁分を出力後、2桁分を出力、以下同じ。 各桁の取りうる値の範囲は、上位までの数字と、残桁数で決まるので各桁をループ。 実行時間はCeleron2.8G,メモリ512MBで、出力なし22秒、出力あり1分19秒でした。
1 2 3 4 5 6 7 8 9 10 11 12
def young(n, k, m = n, zk = 0, a = []) (a.each {|i|p i};puts; return) if n == 0 ([n - k + 1, m].min).downto((n + k - 1)/k) {|x| a[zk] = "□" * x young(n - x, k - 1, x, zk + 1, a) } end p "in:" 1.upto(n=gets.chomp.to_i) {|k| young(n, k) }
Rating0/0=0.00-0+
[ reply ]
kenaxt #4636() [ Ruby ] Rating0/0=0.00
Rating0/0=0.00-0+
[ reply ]