aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/server/fast_p_sage.py
diff options
context:
space:
mode:
authorJean-Pierre Appel <jeanpierre.appel01@gmail.com>2023-10-23 01:34:33 -0400
committerJean-Pierre Appel <jeanpierre.appel01@gmail.com>2023-10-23 01:34:33 -0400
commit424be4138123e7d8e2e9fef36c71e1638d4e6b2a (patch)
treebc7339af6966ff78fd3ee7fbfe05c4e7974bb256 /server/fast_p_sage.py
parent7815a927374db87393d104d095b5de8dfd3a3488 (diff)
testing wsgi post
Diffstat (limited to 'server/fast_p_sage.py')
-rw-r--r--server/fast_p_sage.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/server/fast_p_sage.py b/server/fast_p_sage.py
new file mode 100644
index 0000000..54902ad
--- /dev/null
+++ b/server/fast_p_sage.py
@@ -0,0 +1,35 @@
+hashStuff = {0: 0, 1: 1, 2: 1, 3: 1, 4: 2, 5: 2}
+
+
+def MEX(S: set) -> int:
+ i = 0
+ while True:
+ if i not in S:
+ return i
+ i += 1
+
+
+def P(n: int) -> int:
+ """
+ Compute nimber for a path of a certain length
+ """
+ if n in hashStuff:
+ return hashStuff[n]
+ res = Prec(n)
+ hashStuff[n] = res
+ return res
+
+
+def Prec(n: int) -> int:
+ 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: int, y: int) -> int:
+ return x ^ y