< Zpět na seznam úloh

20 Hra na tahání sirek

var names = ['pocet', 'tahy']
var datasets = [
  {argv: [1, [1, 2]], out: true},
  {argv: [2, [1, 2]], out: true},
  {argv: [3, [1, 2]], out: false},
  {argv: [17, [1, 4]], out: false},
  {argv: [18, [1, 8]], out: false},
  {argv: [18, [1, 2, 6]], out: true},
  {argv: [35, [1, 4, 8]], out: true},
]

Hra začíná s nějakým počtem sirek na stole. Hráči se střídají v tom, že odebírají sirky ze stolu. Hráč má vždy na výběr z několika možností, kolik sirek smí odebrat. Kdo nemá žádný tah (třeba proto, že nemá žádnou sirku na stole), prohrává.

Úkolem našeho programu je určit, jestli při daném počtu sirek jde zaručeně vyhrát. Jestli nám soupeř může výhru překazit, má program naopak vrátit False.

def main(pocet, tahy):
  reseni = []
  for i in range(pocet + 1):
    reseni.append(True)
  return reseni[pocet]

Při řešení postupujte od konce: začněte s jednou sirkou na stole, tam je výsledek jasné True. Potom krok za krokem přidávejte sirku a zkoumejte, jak jde v takové situaci hrát:

Možná jde počítači ušetřit práci, když si to hodně rozmyslíte na papíře, ale jednodušší bude to naprogramovat rovnou celé.