не поддерживаю.
У меня сошелся ответ.
#19 - надо найти минимальное значение - ответ 19 (19--> 20 --> 60)
def f(n): return n+1, n+4,n*3
gp = {c for c in range(150)}
sp={c for c in gp if c in range(1,59)}
wp={c for c in gp if c>=59}
lp=set()
v={c for c in gp if any(t in wp for t in f(c))}; sp -= v; gp -= v; lp |= v
v={c for c in sp if all(t in lp for t in f(c))};print(sorted(v)) ; sp -= v; gp -= v; wp |= v
#20 - надо найти 2 минимальных значения -
ответ 15 (15 --> 19 --> (20,23,57)--> (60,66,171)
ответ 18 (18 --> 19 --> (20,23,57)--> (60,66,171)
def f(n): return n+1, n+4,n*3
gp = {c for c in range(150)}
sp={c for c in gp if c in range(1,59)}
wp={c for c in gp if c>=59}
lp=set()
v={c for c in gp if any(t in wp for t in f(c))}; sp -= v; gp -= v; lp |= v
v={c for c in gp if all(t in lp for t in f(c))};print(sorted(v)) ; sp -= v; gp -= v; wp |= v
v={c for c in sp if any(t in wp for t in f(c))};print(sorted(v)) ; sp -= v; gp -= v; lp |= v
#21 - надо найти минимальное значение - ответ 14 (14--> (15,18,42) --> (19,19,126) --> ((20,23,60), (20,23,60), уже выиграл)
def f(n): return n+1, n+4,n*3
gp = {c for c in range(150)}
sp={c for c in gp if c in range(1,59)}
wp={c for c in gp if c>=59}
lp=set()
v={c for c in gp if any(t in wp for t in f(c))}; sp -= v; gp -= v; lp |= v
v={c for c in gp if all(t in lp for t in f(c))};print(sorted(v)) ; sp -= v; gp -= v; wp |= v
v={c for c in gp if any(t in wp for t in f(c))};print(sorted(v)) ; sp -= v; gp -= v; lp |= v
v={c for c in sp if all(t in lp for t in f(c))};print(sorted(v)) ; sp -= v; gp -= v; wp |= v