당신의 목표는 6 개 이하의 움직임으로 Mastermind 퍼즐을 해결하는 프로그램을 작성하는 것입니다.
배경
Mastermind는 보드 게임입니다. 이 게임의 목표는 다른 플레이어가 숨겨둔 4 개의 컬러 페그의 조합 (컬러 및 순서)을 정확하게 추측하는 것입니다. 추측하면 다른 플레이어는 0에서 4 사이의 흰색 및 / 또는 빨간색 못으로 응답합니다. 빨간 말뚝은 색상과 위치가 올바른 곳입니다. 흰색 말뚝은 색상이 나머지 조각으로 표시되지만 잘못된 위치에 있습니다. 추측에 중복 된 색상이있는 경우 비밀의 해당 색상 당 하나의 페그 만 수여됩니다. (따라서-비밀에 1 개의 파란색이 포함되어 있고 추측에 올바른 위치에 1 개의 파란색이 있고 2 개의 빨간색 페그가있을 것입니다). 6 가지 색상이 있으며 복제본을 사용할 수 있습니다.
예를 들어 게임은 다음과 같이 진행될 수 있습니다. (솔루션이 빨강 녹색 녹색 파랑이라고 가정)
1: Blue Purple Black Green - 2 white pegs
2: Green Red Black Blue - 2 white pegs, 1 red peg
3: Green Green Green Blue - 3 red pegs
4: Red Green Green Blue - 4 red pegs
규칙은 Wikipedia에서 확장됩니다
요구 사항
- 프로그램은 stdin에서 읽고 stdout에 써야합니다.
- 색상 대신 단순성을 위해 숫자를 사용합니다. 추측 할 조합은 1과 6 사이의 4 개의 숫자입니다.
그들은 1 줄에서 6 줄 사이의 줄 바꿈으로 끝나는 일련의 4 개의 공백으로 숫자를 추측하여 출력해야합니다. 예를 들어 :
1 5 2 2 \ n
프로그램은 공백으로 구분되고 개행 문자로 끝나는 0에서 4 사이의 정수 2 개를 추측 한 후 입력으로 수신합니다. 첫 번째는 흰색 페그의 양이고 두 번째는 빨간색 페그의 양입니다.
- "0 4"(빨간색 못 4 개)를 입력하면 프로그램이 종료되어야합니다.
- 프로그램은 6 턴 미만으로 퍼즐을 풀 수 있어야합니다 (프로그램에서 출력을 제공 한 후 응답 입력은 1 턴). 적은 비용으로 해결할 수있는 보너스 (복잡한 증명으로 인한)는 없습니다.
- 솔루션은 완전히 내부에 있으며 소스에 포함되어야합니다. 표준 라이브러리 만 허용됩니다. 따라서이 솔루션은 다른 파일 (사전 등)이나 인터넷에 의존하지 않을 수 있습니다.
입력 / 출력 예
> is your programs output
< is the responding input
Solution is 1 5 6 6
> 1 2 3 4
< 0 1
> 4 1 6 6
< 1 2
> 1 6 5 6
< 2 2
> 1 5 6 6
< 0 4
채점
- 순수하고 간단한 코드 골프 입니다. 바이트 단위 의 최단 솔루션 이 이깁니다.
이것이 나의 첫 번째 코드 골프 질문입니다. 내가 잘못한 일이 있으면 사과하지만 가능한 한 모호성이 없는지 확인하고 가능한 한 많은 변호사 변호사를 막으려 고 노력했습니다. 모호하거나 명확하지 않은 경우 언제든지 질문하십시오.
1 2 3 4반환 하지 않아야0 1합니까?