December 21, 2008
クリスマスプレゼント企画として、こんな特集をやってるんですが、
カラメル - とくとくポイントクリスマスプレゼントキャンペーン!合計100万円分プレゼント!
水曜日の夜に企画が決まって、水曜日の夜と木曜日の昼で機能を開発して、木曜日午前中にとなりのチームからデザイナのお手伝いリソースをアサインしてもらって木、金でデザイン調整してもらい、金曜日に外出してる間にリリースをお願いせざるを得なかったという、久々にタイトなタスクで楽しかったりするんですが(文化祭の前の日とかが好きなタイプ)、メール動線を中心に12/24 クリスマスイブ一杯まで募集していて、25日に抽選して、25日中に処理しないと、僕等26日が全体会議とか忘年会で仕事できないんで、そのまま休みに突入するのは嫌なので、こういう抽選プログラム書いてます。
えと、応募する人はカラメルから、GMOとくとくポイントで買える、何でも好きな商品を選んでもらえば、当選で、その分のポイントをプレゼントするというものなので、総額100万円になるまで抽選した応募情報を足しこんでいくプログラム。
なんだか何度もループしてるのが無駄っぽい。
もっと短くなりそうな気がするのだがどうなんだろう。
とても無駄だなと思ってるのが、CSV readerから読み込んだところをArrayに移すところあたりか。ランダムで並び替えたいという内容ですね。
----------------------------------------------------
require "CSV"
class Array
def shuffle
arr = dup
collect{arr.slice!(rand(arr.length))}
end
end
filename = ARGV[0]||"present_original.csv"
cr = CSV.open(filename , 'r')
arr = Array.new
cr.each{|line|
arr.push(line)
}
random_arr = arr.shuffle
total = 0
max = 1000000
tousen = Array.new
random_arr.each{|line|
price = line[5].to_i
if total + price < max then
total= total + price
tousen.push(line)
end
}
CSV.open("tousen.csv" , "w") do |writer|
tousen.each{|line|
writer << line
}
end
printf "chusen finish total price is %d \n" , total
----------------------------------------------------
tousenとかchusenってダサくね?ってのはとりあえず置いておいて。
//
こちらの本にお世話になってます!
ソフトバンククリエイティブ
売り上げランキング: 21191
Ruby入門書としてはこれが一番お薦め。
プログラミング初心者にとっては少し難易度が高いかも
変数のスコープと寿命について詳しく書いて欲しかった
練習問題の内容にやや難あり
ソフトバンク クリエイティブ
売り上げランキング: 96988
「Rubyでやりたい」のならとりあえず読んでみて