スクリプト集
はじめに
なにかの際に作成したスクリプト集です。
ひょっとしたら役に立つかも??
数の組合せから合計を求める
数字の配列の組合せで、合計を求めます。
この数字が何かの項目の和っぽいなぁというときに作りました。
#/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
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]
[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]
[0, 3, 5, 7, 0, 0]
[1, 0, 5, 0, 9, 0]
[1, 3, 0, 0, 0, 11]