Подготовка к ЕГЭ по информатике Способы решения логических заданий
Игры двух лиц Игры, в которых участвуют два игрока. Как правило, такие игры являются антагонистическими выигрыш одного игрока означает проигрыш другого.
Полная информацияНеполная информация
Касса содержит C копеек. Два игрока поочередно забирают из кассы от 1 до M копеек. Выигрывает игрок, после хода которого касса станет пустой. При C = 17 и M = 9 последовательность ходов (первый 5, второй 6, первый 6) означает выигрыш первого игрока, поскольку = 0 Пример задачи
Выигрышная позиция это позиция, начиная с которой можно, играя правильно, гарантированно выиграть при любой игре соперника. Проигрышная позиция позиция, начиная с которой выиграть невозможно (если соперник не допустит ошибки). Иными словами, в выигрышной позиции либо игрок уже выиграл, либо хотя бы один ход приводит в проигрышную позицию, обеспечивая выигрыш при любой игре соперника. В проигрышной же позиции либо игра уже проиграна, либо нет ни одного хода, обеспечивающего выигрыш (при правильной игре соперника), т.е. любой ход приводит в выигрышную позицию.
Примеры задачи С3. Вариант 1 Имеется куча из n камней. Двое играющих берут из неё по очереди камни. Каждый может взять 1, 2 или 3 камня. Выигрывает тот, кто берёт последние камни. При каком числе камней в куче начинающий выигрывает при любой игре противника?
Решение С3 – вариант 1 Для выигрыша достаточно оставлять противнику при каждом ходе число камней, делящееся на 4. Первый это может сделать, если начальное число камней не делится на 4.
Примеры задачи С3. Вариант 2 На столе лежат карточки с числами от 1 до 9. Двое играют в игру. За один ход берётся одна карточка. Выигрывает тот, у кого есть три карточки с общей суммой 15. Кто выигрывает при правильной игре?
Решение задачи С3 – вариант 2 При правильной игре второй игрок всегда может свести игру к ничьей
создать начальную позицию ; отобразить позицию ; if позиция выигрышная then begin найти и выполнить свой ход ; отобразить ход ; отобразить позицию ; end; while позиция не заключительная do begin получить ход от игрока ; выполнить ход игрока ; отобразить позицию ; найти и выполнить свой ход ; отобразить свой ход ; отобразить позицию ; end; отобразить сообщение о своей победе