Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from functools import lru_cache
- from sys import setrecursionlimit
- setrecursionlimit(100_000)
- def m(h):
- x = []
- if h - 1 >= 0: x.append(h - 1)
- if h - 2 >= 0: x.append(h - 2)
- if h - 4 >= 0: x.append(h - 4)
- return x
- @lru_cache(None)
- def f21(h):
- if h == 0:
- return 'END'
- if any([f21(x) == 'END' for x in m(h)]):
- return 'P'
- if all([f21(x) == 'P' for x in m(h)]):
- return 'V'
- if any([f21(x) == 'V' for x in m(h)]):
- return 'P'
- @lru_cache(None)
- def f19(h):
- if h == 0:
- return 'END'
- if any([f19(x) == 'END' for x in m(h)]):
- return 'P1'
- if any([f19(x) == 'P1' for x in m(h)]):
- return 'V1'
- @lru_cache(None)
- def f20(h):
- if h == 0:
- return 'END'
- if any([f20(x) == 'END' for x in m(h)]):
- return 'P1'
- if all([f20(x) == 'P1' for x in m(h)]):
- return 'V1'
- if any([f20(x) == 'V1' for x in m(h)]):
- return 'P2'
- if all([f20(x) == 'P2' for x in m(h)]):
- return 'V2'
- if 'P2' in [f20(x) for x in m(h)] and 'P1' in [f20(x) for x in m(h)] and len(set([f20(x) for x in m(h)])) == 2:
- return 'P12'
- if any([f20(x) == 'V2' for x in m(h)]):
- return 'P3'
- if 'P12' in [f20(x) for x in m(h)] and 'V1' not in [f20(x) for x in m(h)] and 'V2' not in [f20(x) for x in
- m(h)] and 'P3' not in [
- f20(x) for x in m(h)]:
- return 'V23'
- for S in range(1, 15 + 1):
- r = f19(S)
- if r == 'V1':
- print(S) # 8
- print('___' * 20 + '\n\n')
- for S in range(1, 15 + 1):
- r = f20(S)
- if r and r == 'V23':
- print(S) # 8, 10
- print('___' * 20)
- for S in range(1, 15 + 1):
- r = f21(S)
- if r == 'V':
- print(S) # 15
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement