`
Задача Sticks_interactive. Є одна купка, яка спочатку містить N паличок. Двоє грають у таку гру. Кожен з гравців на кожному своєму ході може забрати з купки або 1, або 2, або 3 палички. Ніяких інших варіантів ходу нема. Ходять гравці по черзі, пропускати хід не можна. Виграє той, хто забирає останню паличку (можливо, разом із ще однією або ще двома).
Напишіть програму, яка інтерактивно гратиме за першого гравця.
Технічні умови. На початку, один раз, Ваша програма повинна прочитати одне ціле число в окремому рядку – початкову кількість паличок N (1 ≤ N ≤ 1000). Потім вона повинна повторювати такий цикл:
Все це повинно повторюватися, доки не будуть забрані всі палички (тобто, доки якась із програм не виграє). Програма-суперниця не виводить фраз “I_won!” / “You_won...” чи якихось їх аналогів.
Перевірка задачі автоматична, тому слід чітко дотримуватися вказаного формату спілкування з програмою-суперницею. Рекомендується, щоб Ваша програма після кожного свого виведення робила дію flush(output) (Pascal), вона ж cout.flush() (C++), вона ж fflush(stdout) (C), вона ж sys.stdout.flush() (Python), вона ж System.out.flush() (Java). Це істотно зменшує ризик, що проміжна відповідь «застрягне» десь по дорозі, не дійшовши до програми-суперниці.
Приклад:
Введення |
Виведення |
Примітки |
5
2 |
1
2 I_won! |
У купці з самого початку 5 паличок. Ваша програма забирає одну, лишається чотири; програма-суперниця забирає дві, лишається дві; Ваша програма забирає обидві, повідомляє про свій виграш і завершує роботу. Порожні рядки наведені лише заради того, щоб було ясніше, що коли вводиться / виводиться. Не треба ні виводити їх, ні очікувати, що їх виводитиме програма-суперниця. |
Особливості оцінювання. У приблизно половині тестів програма-суперниця ідеальна, тобто не робить помилок. У іншій приблизно половині тестів, програми-суперниці різні та грати не вміють – роблять ходи, які дотримуються вимог «забирати від 1 до 3 паличок» та «забирати не більше паличок, ніж є у купці», але можуть вибирати не найкращий з допустимих ходів, дотримуючись кожна своїх власних уявлень про те, як грати в цю гру. Буде оцінюватися як уміння Вашої програми виграти там, де це легко, так і вміння Вашої програми достойно, згідно правил гри, програти, так і вміння Вашої програми скористатися (теж згідно правил) помилками чи іншими неадекватностями програми-суперниці, якщо такі будуть. За будь-яке порушення правил гри з боку Вашої програми, відповідний тест оцінюватиметься як не пройдений.
© LIKT 1998-2024