한 팀은 매일 아침 누군가를 위해 크루아상을 가져와야한다고 결정했습니다. 매번 같은 사람이되어서는 안되므로 다음 차례를 결정하는 시스템이 있어야합니다. 이 질문의 목적은 내일 크로와상을 가져올 차례를 결정할 알고리즘을 결정하는 것입니다.
제약, 가정 및 목표 :
- 크루아상을 가져 오는 것이 누구의 차례인지 전날 오후에 결정됩니다.
- 어느 날, 어떤 사람들은 결석합니다. 알고리즘은 그 날에 참석할 사람을 선택해야합니다. 모든 결석을 하루 전에 미리 알고 있다고 가정하면 크루아상 구매자는 이전 오후에 결정할 수 있습니다.
- 전반적으로 대부분의 사람들은 대부분의 날에 참석합니다.
- 공정성을 위해 모든 사람은 다른 사람보다 크루아상을 구입해야합니다. 기본적으로 모든 팀원은 크루아상에 쓸 돈이 같다고 가정합니다.
- 명단의 지루함을 완화하기 위해 임의의 요소 또는 적어도 인식 된 임의성을 갖는 것이 좋을 것입니다. 이것은 어려운 제약이 아닙니다 : 심미적 인 판단에 가깝습니다. 그러나 같은 사람을 연속으로 두 번 선택해서는 안됩니다.
- 크로와상을 가져 오는 사람은 미리 알아야합니다. 따라서 P 개인이 D 일에 크로와상을 가져 오려면 P 개인이있는 전날에이 사실을 결정해야합니다. 예를 들어, 크루아상 가져 오는 사람이 항상 전날 결정되면, 그것은 전날에 참석 한 사람 중 한 사람이어야합니다.
- 팀원의 수는 스토리지 및 컴퓨팅 리소스가 사실상 무제한이 될 정도로 적습니다. 예를 들어, 알고리즘은 과거에 크루아상을 가져온 사람의 완전한 역사에 의존 할 수 있습니다. 빠른 PC에서 매일 최대 몇 분 동안 계산해도 괜찮습니다.
이것은 실제 문제의 모델이므로 시나리오를 더 잘 모델링한다고 생각되면 가정에 자유롭게 이의를 제기하거나 구체화 할 수 있습니다.
Origin 1 : Florian Margaine 의 크로와상을 구매할 사람을 찾으십시오 .
Origin 2 : Gilles 의 크로와상을 구매할 사람을 알아보십시오 .
이 질문은 Gilles와 같은 버전이며, 다른 커뮤니티가 프로그래밍 문제를 해결하는 방법을보기위한 실험으로 프로그래머에게 다시 게시되었습니다.