diff --git a/Day 14/decode.py b/Day 14/decode.py index 7fd51cb..e41b9b8 100755 --- a/Day 14/decode.py +++ b/Day 14/decode.py @@ -1,13 +1,13 @@ #!/usr/bin/python import math +import sys +import random c = int("2A4C9AA52257B56837369D5DD7019451C0EC04427EB95EB741D0273D55", 16) n = int("0D8A7A45D9BE42BB3F03F710CF105628E8080F6105224612481908DC721", 16) t = int("1398ED7F59A62962D5A47DD0D32B71156DD6AF6B46BEA949976331B8E1", 16) -# print(len(hex(t)[2:])*4) - def linear_diophantine_equation(a, b): if b > a: return linear_diophantine_equation(b, a) @@ -39,161 +39,17 @@ def is_square_num(n): def is_int(n): return int(n) == n -# m*m - k*n = c -# (m*m)/c - (k*n)/c = 1 k' = k * c -# m * m * c^-1 - k' * n = 1 +def is_nth_root_num(a, b): + c = a**(1/float(b)) + return abs(math.pow(c, b) - a) < 0.000001 -# c = m*m - k*n -# c = 1*x - k*n mit x = m^2 +def log(a, b): + return math.log(a) / math.log(b) -# c = gcd(m, n) - -d, x, y = linear_diophantine_equation(n, c) -print(d, x, y) - -for i in range(-10, 10): - print(i, test_solution(y + i * t)) - # h = hex(y)[2:] - # print(''.join([chr(int(h[i:i+2], 16)) for i in range(len(h))])) - -# print(y * c + x * n) - -# y1 * c + x1 * n = 1 -# y2 * m*m + x2 * n = 1 - -# y2 * m*m + x2 * n = y1 * c + x1 * n -# y2 * m*m + (x2-x1)*n = y1 * c -# -y1*c + (x2-x1)*n = y2*m*m - -lcm = c * n -while not is_square_num(lcm): - lcm += n - -print(hex(lcm)) -print(is_square_num(lcm)) - -# tmp = -1 * y * c - x * n -# -# solution = tmp + n*n -# while not is_square_num(solution) and not test_solution(math.sqrt(solution)): -# solution += n -# -# if is_square_num(solution): -# print(len(hex(math.sqrt(solution))[2:]), hex(int(math.sqrt(solution)))) -# - -# -# print(is_square_num(x)) -# print(test_solution(x)) -# # print(hex(d)) - -# ggT(m², n) = ggT(c, n) - -# print(gcd(c,n)) - -# gcd(m**2, n) = 1 -# -# 1 = x*m**2 + y*n -# 1 = x*m**2*c + y*n -# -# x1*m**2 + y1*n = x2*m**2*c + y2*n -# 0 = m**2*x2*c-x1*m**2 + (y1-y2)*n -# -# gcd(m**2*c, n) = gcd(m**2, n) -# -# print(gcd(c, n)) - -# m = int("c20cd4b471c96cc2eaab1d1c6e33494219679ae97e48506e311ddbba35", 16) -# print(m**2 % n - c) -# print(test_solution(m)) - -# mult_inverse = multiplicative_inverse(c, n) -# -# d, x, y = linear_diophantine_equation(mult_inverse, n) -# print(d,x,y) -# -# print(mult_inverse*x - y*n) -# -# print(is_square_num(x)) -# print(is_square_num(y)) - -# print(is_square_num(c)) +def ascii(n): + h = hex(n)[2:] + return ''.join([chr(int(h[i:i+2], 16)) for i in range(0, len(h), 2)]) # n > t > c - -# m = flag - -# m**2 % n = x**2 -# m**2 + k*n = c -# m % n = x -# m - k*n = x -# m = x + k * n - -# x = int(math.sqrt(c)) -# -# while not test_solution(x): -# x += n -# print(hex(x), hex(((x**2)%n)-c)) -# print(x) -# -# -# d, x, y = linear_diophantine_equation(mult_inverse, mult_inverse*n) -# print(hex(d + 6*t - 2*c), test_solution(d + 6*t - 2*c)) - -# x = math.sqrt(n) -# print(x) -# -# print(test_solution(c * math.sqrt())) - -# print(test_solution(math.floor(math.sqrt(c * n)))) - -# c = (m**2) % n -# c = m*m - k*n -# 1 = (m**2)/c - (k*n)/c -# 1 = (m**2)/c - k*(n/c) - -# k = 1 -# test = k * n / c -# while test != math.floor(test): -# k += 1 -# test = k * n / c -# -# print(k, test) - - -# x = m*m -# c = x % n -# c = x - k*n -# c = k*n+x -# x ~ (48 56 31 38 2d) ^ 2 -# m_guess = int("485631382d616161612d616161612d616161612d616161612d61616161", 16) -# x_guess = m_guess ** 2 -# k_guess = (c - x_guess) / n -# -# i = 0 -# while not test_solution(m_guess): -# m_guess += 1 -# i += 1 -# -# print(i, m_guess) - -# print(test_solution(math.sqrt(c + n))) - -# print(math.sqrt(c)) - -# c = x**2 -# m**2 % n = x**2 -# m % n = x - -# i = 0 -# solutioni = 0 -# while i < 100: -# i += 1 -# if test_solution(i): -# print(i, i**2%n) - -# 4**2 % 13 = 3 -# 9**2 % 13 = 3 -# 17**2 % 13 = 3 -# 22**2 % 13 = 3 -# 30**2 % 13 = 3 +# gcd(m, n) = gcd(m², n) = gcd(c, n) = gcd(t, n) = gcd(t, c) = gcd(t*c, n) = 1 +# m² ≡ c (mod n) diff --git a/Day 18/.idea/Day 18.iml b/Day 18/.idea/Day 18.iml new file mode 100644 index 0000000..f565707 --- /dev/null +++ b/Day 18/.idea/Day 18.iml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/Day 18/.idea/artifacts/Day_18_jar.xml b/Day 18/.idea/artifacts/Day_18_jar.xml new file mode 100644 index 0000000..449dcae --- /dev/null +++ b/Day 18/.idea/artifacts/Day_18_jar.xml @@ -0,0 +1,8 @@ + + + $PROJECT_DIR$/out/artifacts/Day_18_jar + + + + + \ No newline at end of file diff --git a/Day 18/.idea/misc.xml b/Day 18/.idea/misc.xml new file mode 100644 index 0000000..d5d79e0 --- /dev/null +++ b/Day 18/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Day 18/.idea/modules.xml b/Day 18/.idea/modules.xml new file mode 100644 index 0000000..64181bc --- /dev/null +++ b/Day 18/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Day 18/.idea/sbt.xml b/Day 18/.idea/sbt.xml new file mode 100644 index 0000000..2018743 --- /dev/null +++ b/Day 18/.idea/sbt.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/Day 18/.idea/vcs.xml b/Day 18/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/Day 18/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Day 18/.idea/workspace.xml b/Day 18/.idea/workspace.xml new file mode 100644 index 0000000..d7e6f9f --- /dev/null +++ b/Day 18/.idea/workspace.xml @@ -0,0 +1,871 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 111 + 78 + 78, 111 + eventResult + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +