Иван Викторович, не сочтите за наглость, но я не мог долго понять как работает эта рекурсия и почему or и and. Потом понял, заполняя return при p%2==1 вы говорили что это ход Пети, а в реальности мы там вызываем 3 функции с p+1, который уже чётный и это ходы Вани. Получается при ходах Вани с выигрышной стратегией ставим or, что означает достаточно 1го 100проц варианта выиграть который Ваня использует. А при ходах Пети ставим and потому что нам надо при всех его ходах, чтобы выиграл Ваня, так как у него выигрышная позиция и функция возвращает true при победе Вани, а вернее именно первым ходом если говорить о 19.
Выдает [ ] def f(x , p): if x 2: return p == 2 if p % 2: return f(x+1,p+1) or f(x+2,p+1) or f(x*2,p+1) else: return f(x+1,p+1) and f(x+2,p+1) and f(x*2,p+1) print([s for s in range(0,100) if f(s,0)]) в чем ошибка ?
Иван Викторович, не сочтите за наглость, но я не мог долго понять как работает эта рекурсия и почему or и and. Потом понял, заполняя return при p%2==1 вы говорили что это ход Пети, а в реальности мы там вызываем 3 функции с p+1, который уже чётный и это ходы Вани.
Получается при ходах Вани с выигрышной стратегией ставим or, что означает достаточно 1го 100проц варианта выиграть который Ваня использует.
А при ходах Пети ставим and потому что нам надо при всех его ходах, чтобы выиграл Ваня, так как у него выигрышная позиция и функция возвращает true при победе Вани, а вернее именно первым ходом если говорить о 19.
Фон классный
А что за IDE для питона?
Pycharm
а если 2 кучки камней?
Тож самое, ток добавь в функцию третью переменную отвечающую за вторую кучу (ну и соответственно пропиши в условии изменение этой кучи после ходов).
А почему p:0 не выдаёт ошибку?
должно ведь быть p=0 или просто 0
пришлось посидеть, чтобы разобраться, но разобрался,
Выдает [ ]
def f(x , p):
if x 2:
return p == 2
if p % 2:
return f(x+1,p+1) or f(x+2,p+1) or f(x*2,p+1)
else:
return f(x+1,p+1) and f(x+2,p+1) and f(x*2,p+1)
print([s for s in range(0,100) if f(s,0)])
в чем ошибка ?
Условие x
о просмотров)