Ваша цель - написать программу, которая решит любую загадку Mastermind за 6 или менее ходов.
Задний план
Mastermind - настольная игра. Цель игры состоит в том, чтобы точно угадать комбинацию (цвета и порядок) из 4 цветных колышков, скрытых другим игроком. Когда делается предположение, другой игрок отвечает от 0 до 4 белыми и / или красными колышками. Красный колышек - это место, где цвет и местоположение правильные. Белый колышек - это то место, где цвет представлен на оставшихся кусочках, но находится в неверном месте. Если в предположении присутствуют повторяющиеся цвета, в секрете будет присваиваться только один колышек за соответствующий цвет. (Так что - если в секрете содержалось 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
Правила расширены в Википедии
Требования
- Программа должна читать из стандартного ввода и писать в стандартный вывод
- Я буду использовать цифры для простоты вместо цветов. Комбинация для угадывания будет 4 числами от 1 до 6
Они должны вывести свои предположения в виде серии из 4 чисел, разделенных пробелами, от 1 до 6, заканчивающихся символом новой строки. Например:
1 5 2 2 \ n
После этого программа получит в качестве входных данных после угадывания 2 целых числа от 0 до 4, разделенных пробелом и заканчивающихся символом новой строки. Первым будет количество белых колышков, вторым - количество красных колышков.
- При вводе «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
счет
- Это чистый и простой код Гольф . Самое короткое решение в байтах побеждает.
Это мой первый вопрос Code Golf. Приношу свои извинения, если я сделал что-то не так, но я постарался как можно лучше убедиться, что нет абсолютно никакой двусмысленности, и предотвратить как можно больше правил, связанных с адвокатской деятельностью. Если я был неоднозначен или неясен, пожалуйста, не стесняйтесь задавать вопросы.
1 2 3 4
возвращаться0 1
?