スクリプト集

はじめに

なにかの際に作成したスクリプト集です。
ひょっとしたら役に立つかも??

数の組合せから合計を求める

数字の配列の組合せで、合計を求めます。
この数字が何かの項目の和っぽいなぁというときに作りました。

#/usr/bin/ruby

if ARGV.size < 3
    print "Usage: combination.rb total [elements..]\n"
    exit
end

total, *elements = ARGV

total = total.to_i
elements.collect!{ |e| e.to_i }

(2**elements.length).times do |i|
    sum = 0
    arr = (0...elements.length).collect do |j|
        e = elements[j]*((i&2**j)==2**j ? 1 : 0)
        sum += e
        e
    end
    p arr if sum == total
end

1,2,4,8,16 の組合せで27を作るには以下のように使って下さい。

$ ./combination.rb 27 1 2 4 8 16
[1, 2, 0, 8, 16]

複数ある場合もあります。

$ ./combination.rb 15 1 3 5 7 9 11
[0, 3, 5, 7, 0, 0]
[1, 0, 5, 0, 9, 0]
[1, 3, 0, 0, 0, 11]

スポンサード リンク

トラックバック

トラックバックURL
https://linux-life.net/tb/program/ruby/scripts/
Linux Life 〜 No linux, No life 〜
プログラミング > Ruby > スクリプト集