Ваша мета - написати програму, яка вирішить будь-яку головоломку Mastermind за 6 і менше рухів.
Фон
Натхненник - настільна гра. Мета гри - точно вгадати поєднання (кольори та порядок) 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
Правила розширені у Вікіпедії
Вимоги
- Програма повинна читати зі stdin та записувати до stdout
- Я буду використовувати цифри для простоти замість кольорів. Комбінація для здогадки складе 4 числа від 1 до 6
Вони повинні виводити свої здогадки у вигляді серії з чотирьох розділених пробілами чисел від 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 . Виграє найкоротше рішення в байтах .
Це моє перше запитання Code Golf. Вибачте, якщо я зробив щось не так, але я намагався якомога краще переконатись у відсутності неоднозначності та запобігти максимально можливим правилам закону. Якщо я був неоднозначним чи незрозумілим, будь ласка, не соромтесь задавати питання.
1 2 3 4повертатися0 1?