Sebuah tim telah memutuskan bahwa setiap pagi seseorang harus membawa croissant untuk semua orang. Seharusnya tidak ada orang yang sama setiap saat, jadi harus ada sistem untuk menentukan giliran siapa selanjutnya. Tujuan dari pertanyaan ini adalah untuk menentukan algoritma untuk memutuskan giliran siapa yang akan membawa croissant besok.
Kendala, asumsi dan tujuan:
- Giliran siapa itu untuk membawa croissant akan ditentukan sore sebelumnya.
- Pada hari tertentu, beberapa orang tidak hadir. Algoritma harus memilih seseorang yang akan hadir pada hari itu. Asumsikan bahwa semua absen diketahui sehari sebelumnya, sehingga pembeli croissant dapat ditentukan pada sore sebelumnya.
- Secara keseluruhan, kebanyakan orang hadir hampir setiap hari.
- Demi keadilan, setiap orang harus membeli croissant sebanyak yang lainnya. (Pada dasarnya, anggap setiap anggota tim memiliki jumlah uang yang sama untuk dihabiskan untuk croissant.)
- Akan menyenangkan untuk memiliki beberapa elemen keacakan, atau setidaknya dirasakan keacakan, untuk mengurangi kebosanan daftar. Ini bukan kendala yang sulit: ini lebih merupakan penilaian estetika. Namun, orang yang sama tidak boleh dipetik dua kali berturut-turut.
- Orang yang membawa croissant harus tahu sebelumnya. Jadi, jika orang P membawa croissant pada hari D, maka fakta ini harus ditentukan pada beberapa hari sebelumnya di mana orang P hadir. Misalnya, jika pembawa croissant selalu ditentukan sehari sebelumnya, maka itu harus menjadi salah satu dari orang-orang yang hadir sehari sebelumnya.
- Jumlah anggota tim cukup kecil sehingga sumber daya penyimpanan dan komputasi secara efektif tidak terbatas. Misalnya algoritma dapat mengandalkan sejarah lengkap tentang siapa yang membawa croissant ketika di masa lalu. Penghitungan beberapa menit pada PC cepat setiap hari tidak masalah.
Ini adalah model masalah dunia nyata, jadi Anda bebas untuk menantang atau memperbaiki asumsi jika Anda berpikir bahwa mereka membuat model skenario yang lebih baik.
Asal 1: Cari tahu siapa yang akan membeli croissant oleh Florian Margaine.
Asal 2: Cari tahu siapa yang akan membeli croissant oleh Gilles.
Pertanyaan ini adalah versi yang sama dengan Gilles, dan telah diposting ulang pada Programmer sebagai percobaan untuk melihat bagaimana komunitas yang berbeda menghadapi tantangan pemrograman.