diff options
| author | Jean-Pierre Appel <jeanpierre.appel01@gmail.com> | 2023-10-23 01:34:33 -0400 |
|---|---|---|
| committer | Jean-Pierre Appel <jeanpierre.appel01@gmail.com> | 2023-10-23 01:34:33 -0400 |
| commit | 424be4138123e7d8e2e9fef36c71e1638d4e6b2a (patch) | |
| tree | bc7339af6966ff78fd3ee7fbfe05c4e7974bb256 /server/old/fast_P_nim.py | |
| parent | 7815a927374db87393d104d095b5de8dfd3a3488 (diff) | |
testing wsgi post
Diffstat (limited to 'server/old/fast_P_nim.py')
| -rw-r--r-- | server/old/fast_P_nim.py | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/server/old/fast_P_nim.py b/server/old/fast_P_nim.py new file mode 100644 index 0000000..adafca1 --- /dev/null +++ b/server/old/fast_P_nim.py @@ -0,0 +1,41 @@ +hashStuff = {0: 0, 1: 1, 2: 1, 3: 1, 4: 2, 5: 2} + +def MEX(S): + i = 0 + while True: + if i not in S: + return i + i += 1 + +def P(n): + if n in hashStuff: + return hashStuff[n] + res = Prec(n) + hashStuff[n] = res + return res + +def Prec(n): + S = set() + # Works only for n >= 5 + S.add(P(n-2)) + S.add(P(n-3)) + S.add(P(n-4)) + for i in range(2,n-5+1): + S.add(nimAdd(P(i),P(n-3-i))) + return MEX(S) + +def nimAdd(x, y): + return x ^ y + +# P(7) +# for i in range(1,1000): +# print(f"Path, n={i} (oeis={i-1}): {P(i)}") + +# Pgames = set() +# for i in range(20000): +# if hashStuff[i] == 0: +# Pgames.add(i) + +# for i in range(200): +# print(i, P(1000*i)) + |
