Я міг знайти лише проблеми з кодовим гольфом для Mastermind, тож ось версія кодового виклику, яку я хотів би взяти на себе.
Оптимальну стратегію для звичайної гри Mastermind (ММ (4,6)) знайшли Кояма та Лай у 1993 році, маючи середню кількість здогадів = 5625/1296 ~ 4,34. MM (5,8) досі не розв'язаний, але, за оцінками, він має середню кількість здогадок ~ 5,5.
Ваше завдання - створити стратегію ММ (5,8), тобто для 5 отворів та 8 кольорів, що охоплюють усі pow(8,5) = 32768
можливі чіткі рішення. Очевидно, це не повинно бути оптимальним. У вас є два варіанти:
- Опублікуйте детерміновану програму, яка генерує стратегію. Програма повинна бути складною / запущеною в Windows 7, Mac OS X або Linux без додаткового невільного програмного забезпечення.
- Опублікуйте свою стратегію (разом зі своїм ім'ям StackExchange) десь в Інтернеті та опублікуйте тут URL-адресу.
В обох випадках вкажіть бал (див. Нижче) у заголовку відповіді.
Стратегія повинна бути закодована відповідно до наступної граматики:
strategy : guessing-strategy | known-solution-strategy
guessing-strategy : '{' guess ':' branches '}'
known-solution-strategy : guess
guess : color color color color color
color : 'A'..'H'
branches : '{' branch (',' branch)* '}'
branch : reply ':' strategy
reply : number-of-blacks number-of-whites
number-of-blacks : number-of-key-pegs
number-of-whites : number-of-key-pegs
number-of-key-pegs : '0'..'5'
Алгоритм, який використовується для визначення кількості чорно-білих ключів, описаний у http://en.wikipedia.org/wiki/Mastermind_(board_game)
Зауважте, що відповідь "50" (тобто правильна здогадка) мається на увазі і не є частиною граматики.
Оцінка балів: N = сума кількості здогадів для кожного з 32768 шляхів / рішень. Виграє стратегія з найнижчим N. Перший тай-брейк: Найменша максимальна кількість здогадок. Другий тай-брейк: Перша опублікована відповідь. Конкурс закінчується 1 серпня 2014 р. 0:00 GMT .
Приклад стратегії для ММ (2,3) з балом = 21:
{AB:{10:{AC:{10:AA,01:CB,00:BB}},02:BA,01:{BC:{01:CA}},00:CC}}
Використовуючи цю стратегію, 9 можливих ігор вийдуть так:
- AB 20
- AB 10, AC 20
- AB 10, AC 10, AA 20
- AB 10, AC 01, CB 20
- AB 10, AC 00, BB 20
- AB 02, BA 20
- AB 01, BC 20
- AB 01, BC 01, CA 20
- AB 00, CC 20
Незабаром я опублікую перевірку стратегії на базі Java (5,8) для вашої зручності.
{AB:{10|01:BB}}
? У мене є відповідь, але вона досить наївна, і завдяки деревній структурі граматики вона зовсім не масштабується (4 отвори, 3 кольори) генерує стратегію 147 Мб, яку я міг би значно скоротити , поєднуючи частини дерево).