UCCプレゼンツ桑田さんの年末ライブに行くためにPythonプログラム組んだ

さて

自分は大のコーヒー党なのである。仕事をしながら1日1本ペースで缶コーヒーをちびちび飲んでいる。缶コーヒーは自販機やコンビニで買うと1本120円〜130円取られてしまうのでいつも近所のホームセンターで箱買いしている。

275gのリキャップ缶24個入りの箱がだいたい2000円ちょっとで買えるので、1本あたりにすると90円を切る。コーヒー好きにはお勧めしたいライフハックである。

UCCブラック無糖のキャンペーン

いつもUCCブラック無糖を買うのだけど、今回買った缶には桑田佳祐年末ライブレポーター募集キャンペーンの応募シールがついていた。

http://www.ucc.jp/cpn/live/

茅ヶ崎市出身の自分は当然のようにサザンオールスターズおよび桑田さんが大好きなので、これは応募しないわけには行くまい。具体的にはキャンベーンサイト上で応募シールに記載のシリアルナンバー14桁をシコシコと入力していくのである。

24缶入りの箱を2箱買ったので、48缶分のシリアルナンバーを入力するのは正直骨が折れたわ。記憶力が年齢とともに衰えてきたせいで5桁ずつくらいしか入力できないし、時には入力間違えてエラーが出るし。

キャンペーンの商品は3種

f:id:iGCN:20161211093548j:plain

ところで今回のキャンペーンのメインの商品は桑田佳祐年末ライブへの招待券なんだけども、他にも豪華商品が用意されている。すなわち、

  • A賞:桑田佳祐年末ライブレポーター 50組100名 シリアルID 10枚で応募
  • B賞:桑田佳祐xUCCオリジナルMA-1ジャケット 500名 シリアルID 5枚で応募
  • C賞:桑田佳祐xUCCオリジナルTシャツ 3000名 シリアルID 3枚で応募

である。

ぶっちゃけ当選確率だけを考えれば、ライブレポーターに応募するより全額C賞にぶっこんだほうが良いのだろうけど、たまにはちょっと夢見てもいいじゃない?そしてオリジナルのMA-1ジャケットもなかなかカッコイイので気になるところ。

というわけで、手元にあるシリアルID48枚を最大限有効活用するための組み合わせを検討してみた。

Pythonプログラム組んだ

ここでの問いは

Q. 48枚のシリアルIDを3枚、5枚、10枚に振り分ける組み合わせは何通りあるのか

というものになる。これはプログラミングの世界では有名な「両替問題」に相当する問いである。

この問いに答えるために、久々にPythonでプログラムを組んでみた。同じく両替問題を扱ったこちらの記事(俺のサブブログだけど)を参考にした。

いまだに現金払い?:「プログラマ脳を鍛える数学パズル」Q05の答え - Pythonで解く数学パズル

回答プログラム

import itertools

a = 0
coins = [3, 5, 10]
for n in range (4, 17):
    for combi in itertools.combinations_with_replacement(coins, n):
        if sum(combi) == 48:
            print combi
            a += 1
print a

結果

このプログラムを走らせた出力がこちら。

(3, 5, 10, 10, 10, 10)
(3, 5, 5, 5, 10, 10, 10)
(3, 5, 5, 5, 5, 5, 10, 10)
(3, 3, 3, 3, 3, 3, 10, 10, 10)
(3, 5, 5, 5, 5, 5, 5, 5, 10)
(3, 3, 3, 3, 3, 3, 5, 5, 10, 10)
(3, 5, 5, 5, 5, 5, 5, 5, 5, 5)
(3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 10)
(3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5)
(3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 10)
(3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5)
(3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3)
12

Process finished with exit code 0

組み合わせは全部で12通り。

夢見がちな自分だけども、ここは現実を見て、

A賞 x 3, B賞 x 3, C賞 x 1

の組み合わせで応募した(上から2番目の組み合せ)。

さいごに

当選したらまたこちらで報告します。ちょっとした問題の答えを探すのに、プログラムが組めると便利だなと実感しました。

ちなみにキャンペーンの応募期間は明日12/12が締切。

では


註:amazonで買うとホームセンターで買うより高いです。