【訂正】ホワイトデーの組み合わせ
ホワイトデーも終わり、そろそろカヌレ堂も落ち着くかと思いきや、春休みということで連日賑わっているようだ。
前回「ホワイトデー4個セットの組み合わせを洗い出す」に間違いがあることが分かった。
カヌレ堂では、毎月フレーバーの変わる 1ヶ月限定のカヌレが存在する。
4個セットには必ず限定カヌレのどちらか 1つが入っていたらしい。*1
4個セットの組み合わせは以下のように訂正する。
seasons = %w[ベリーベリー ばなナッツ] combinations = menu.keys.combination(4).to_a set4p = combinations.select{|caneles| caneles.map{|c| menu[c]}.sum == price} .select{|caneles| seasons.any?{|season| caneles.include?(season)}} .reject{|caneles| seasons.all?{|season| caneles.include?(season)}} set4p.size # => 8 combinations.size # => 70 set4p # => [["しろ", "くろ", "千葉落花生", "ばなナッツ"], # ["しろ", "ほうじ茶キャラメル", "千葉落花生", "ばなナッツ"], # ["しろ", "きなこ五穀", "千葉落花生", "ベリーベリー"], # ["しろ", "抹茶ピスタチオ", "千葉落花生", "ベリーベリー"], # ["くろ", "ほうじ茶キャラメル", "きなこ五穀", "ばなナッツ"], # ["くろ", "ほうじ茶キャラメル", "抹茶ピスタチオ", "ばなナッツ"], # ["くろ", "きなこ五穀", "抹茶ピスタチオ", "ベリーベリー"], # ["ほうじ茶キャラメル", "きなこ五穀", "抹茶ピスタチオ", "ベリーベリー"]]
カヌレ 4個の合計が 600円になる組み合わせは 8通りに減った。
caneles = set4p.flatten.sort caneles.uniq.size # => 8 puts menu.keys.map{|c| "%4d %s" % [caneles.count(c), c]} # >> 4 しろ # >> 4 くろ # >> 4 ほうじ茶キャラメル # >> 4 きなこ五穀 # >> 4 抹茶ピスタチオ # >> 4 千葉落花生 # >> 4 ベリーベリー # >> 4 ばなナッツ
しかし、全8種が使われており、使用頻度も均等であった。
*1:両方入ることはないだろう。