あるチームは、毎朝誰かがクロワッサンを持参することを決めました。毎回同じ人物であってはならないので、次の順番を決定するシステムが必要です。この質問の目的は、明日クロワッサンを持ち込む順番を決定するアルゴリズムを決定することです。
制約、仮定、目的:
- クロワッサンを持参する順番は、前日の午後に決定されます。
- ある日、欠席している人もいます。アルゴリズムは、その日に出席する人を選択する必要があります。欠席はすべて1日前にわかっているため、クロワッサンの買い手は前日の午後に決定できると仮定します。
- 全体として、ほとんどの人はほとんどの日に出席しています。
- 公平を期すため、誰もがクロワッサンを他の人と同じ回数購入する必要があります。(基本的に、すべてのチームメンバーがクロワッサンに費やす金額が同じであると仮定します。)
- 名簿の退屈を軽減するために、ランダム性の要素、または少なくとも知覚されたランダム性を持つことが望ましいでしょう。これは厳しい制約ではありません。それは審美的な判断です。ただし、同じ人を連続して2回選ぶことはできません。
- クロワッサンを持ってくる人は事前に知っておくべきです。したがって、人PがD日にクロワッサンを持参する場合、この事実は人Pがいる前日に決定する必要があります。たとえば、クロワッサンの持ち主が常に前日に決定される場合、前日にいる人の1人である必要があります。
- チームメンバーの数は十分に少なく、ストレージとコンピューティングリソースは事実上無制限です。たとえば、アルゴリズムは、過去に誰がクロワッサンを持ってきたかの完全な履歴に依存できます。毎日高速のPCで最大数分間の計算で問題ありません。
これは現実世界の問題のモデルであるため、シナリオをより適切にモデル化していると思われる場合は、自由に仮定に挑戦したり洗練したりできます。
起源1:Florian Margaineによるクロワッサンの購入者を確認します。
起源2:誰がジルによってクロワッサンを買うつもりかを調べます。
この質問は、Gillesと同じバージョンであり、さまざまなコミュニティがプログラミングの課題にどのように対処するかを確認するための実験として、プログラマーに再投稿されました。