Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
def mix_and_match(candles, recipients, candles_per_recipient) if(candles.values.inject{|sum,x|sum+x}<(candles_per_recipient*recipients.length)) raise "there must be enough candles" end order = {} current_candles = candles recipients.each do |recipient| order[recipient], current_candles = fill_basket(current_candles, recipient, candles_per_recipient) end order[:extra] = current_candles puts order.inspect end def fill_basket(candles, recipient, candles_per_recipient) basket = [] dup_count = 0 while basket.length < candles_per_recipient candle = candles.keys[rand(candles.length)] if candles[candle] > 0 if(dup_count<5) if(!basket.include?(candle)) candles[candle] = candles[candle]-1 basket << candle else dup_count = dup_count + 1 end else candles[candle] = candles[candle]-1 basket << candle end end end [basket, candles] end
This paste will be private.
From the Design Piracy series on my blog: