Zadanie dodatkowe (nieobowiązkowe). Student, który pierwszy

Transkrypt

Zadanie dodatkowe (nieobowiązkowe). Student, który pierwszy
Zadanie dodatkowe (nieobowiązkowe).
Student, który pierwszy przyśle mi rozwiązanie tego zadania,
dostanie 50p.
*Opis gry*
Na stole leżą dwa stosy żetonów.
Dwóch graczy wykonuje na przemian ruchy.
Ruch polega na wybraniu jednego ze stosów
i zabraniu z niego pewnej liczby żetonów,
która musi być liczbą pierwszą.
Na przykład gdy na stosach jest odpowiednio 3 i 4 żetony
(co oznaczymy przez (3, 4)),
to pierwszy gracz może doprowadzić do sytuacji:
(1, 4), (0, 4), (3, 2), (3, 1).
Przegrywa gracz, który nie może wykonać poprawnego ruchu.
*Zadanie*
Napisz funkcję gra(a, b), która sprawdza, czy w sytuacji (a, b)
pierwszy gracz ma strategię wygrywającą; przy tym:
- jeśli pierwszy gracz ma taką strategię, to funkcja ma zwrócić
parę liczb (a2, b2), opisującą sytuację po pierwszym (wygrywającym) ruchu pierwszego gracza
- w przeciwnym razie funkcja ma zwrócić None.
Możesz założyć, że liczby a, b są mniejsze niż 900.
Na przykład:
gra(1, 6) ma zwrócić na przykład (1, 1)
gra(2, 2) ma zwrócić None
gra(10, 15) ma zwrócić na przykład (10, 10)