はじめに
ふと思いました。
ゴチバトルって 必ずピタリ賞の可能性があるのだろうか?
つまりメニュー・金額によっては、どう組み合わせてもピタリ賞にならないこともあるのでは?
(もしゴチバトルが公営ギャンブルなら、その辺を明確にすべきですね?)
ということで、ピタリ賞の解を求めるロジックを考えてみたのですが・・・。
メニューの全組み合わせを調べればよい?
仮にメニューが3品(A,B,C)の場合、
・Aのみ
・Bのみ
・Cのみ
・AとB
・AとC
・BとC
・AとBとC
これらの合計金額のうち設定金額と等しいものが、求める解です。
どれも等しくなければ「ピタリ賞の可能性なし」といえます。
・・・でも そう単純ではありませんでした。
たまにデザートで、同じメニューを複数 注文する場合があります。
このパラメータのせいで、組み合わせ数が膨大になってしまいました。
数式にする
設定金額:$S$
メニューn品それぞれの金額:$a_1, a_2 ... a_n$
それぞれの注文数:$x_1, x_2 ... x_n$
このとき以下の式が成り立つ $x_1, x_2 ... x_n$ を求める必要があります。
$S = a_1x_1 + a_2x_2 + ... + a_nx_n$
すみません、ここまでです。
n = 3(メニュー3品)の場合、
注文数 $x_1 ... x_n$ が1以上0以上の整数なので、
($x_1,x_2,x_3$) をすべて書き出そうとすると、
(1,0,0)
(0,1,0)
(0,0,1)
(1,1,0)
(1,0,1)
(0,1,1)
(1,1,1)
(2,0,0)
(0,2,0)
(0,0,2)
(2,2,0)
(2,0,2)
(0,2,2)
(2,2,2)
(2,1,0)
(2,0,1)
(2,1,1)
(1,2,0)
(0,2,1)
(1,2,1)
(1,0,2)
(0,1,2)
(1,1,2)
(2,2,1)
(2,1,2)
(1,2,2)
(3,0,0)
(0,3,0)
(0,0,3)
(3,3,0)
(3,0,3)
(0,3,3)
(3,3,3)
(3,1,0)
(3,0,1)
(3,1,1)
(1,3,0)
(0,3,1)
(1,3,1)
(1,0,3)
(0,1,3)
(1,1,3)
(3,3,1)
(3,1,3)
(1,3,3)
(3,2,0)
(3,0,2)
(3,2,2)
(2,3,0)
(0,3,2)
(2,3,2)
(2,0,3)
(0,2,3)
(2,2,3)
(3,3,2)
(3,2,3)
(2,3,3)
(3,2,1)
(3,1,2)
(2,3,1)
(1,3,2)
(2,1,3)
(1,2,3)
:
:
もう無理です
3品でこうなのだから、メニューが増えたら お手上げです。
(まあ実際は、同じ肉料理を2皿以上注文することは無いのですが・・・。)
編集後記?
ピタリ賞の解を求めるのは、パズルの問題ともいえます。
そして この問題を考えていて、上司とのやり取りを思い出しました。
そのとき私は、(ピタリ賞とは別の)パズル的な問題を抱えていました。
私は難しい旨 上司に伝えると、
「データを抽出するのと、パズルの解を抽出するのと、何が違うの?」
(そんなに難しいの?)
というものでした。どうも上司は、
「データベースの全社員から20代男性を抽出する」ことと、
「パズルの組み合わせから正解を抽出する」ことは、同じと思っていたようです。
エンジニアの考えを、「非エンジニア」に伝えるのは
なかなか難しいものです。