From 638d85641718b949dfc652b171a27d8ed5d30b6f Mon Sep 17 00:00:00 2001 From: Maya Herrscher Date: Tue, 17 Dec 2024 12:57:54 +0100 Subject: [PATCH] Solution for Day 17, part 2 input specific --- 2024/day17/__pycache__/code.cpython-313.pyc | Bin 0 -> 2581 bytes 2024/day17/challenge | 82 ++++++++++++++++++++ 2024/day17/code.py | 79 +++++++++++++++++++ 2024/day17/example | 5 ++ 2024/day17/example1 | 5 ++ 2024/day17/example2 | 5 ++ 2024/day17/example3 | 5 ++ 2024/day17/input | 20 +++++ 8 files changed, 201 insertions(+) create mode 100644 2024/day17/__pycache__/code.cpython-313.pyc create mode 100644 2024/day17/challenge create mode 100755 2024/day17/code.py create mode 100644 2024/day17/example create mode 100644 2024/day17/example1 create mode 100644 2024/day17/example2 create mode 100644 2024/day17/example3 create mode 100644 2024/day17/input diff --git a/2024/day17/__pycache__/code.cpython-313.pyc b/2024/day17/__pycache__/code.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b3196a73fe21ad337cacf81531ad47e021de8161 GIT binary patch literal 2581 zcmbVMO>7fK6rR~#ukH0;oFB*^VB(146yrD~1*QDu2WY8?6K_o-SSi{#j^iq^-B||+ zEvhS2)rN`~Au2~b;M}NsDBN192h?6TCUUAes~jrzWGKr=N+d6a^DUi3qd|*N-ifEL; zb}qxrB@03(FkSqqtN@jv1V+4Qg_3kMQSe!6|vkXYc1t2kq6FL1^cHm`8rMoA-$ zAeyB{D-tco*orkov63cDXOo(&=oqu33F9!tDdj!|C!nqH6mr!RDW{=ex#Ai@%9?&# zM`3!1u4*8i{1n|ac23xV!pMb(T#U-b<`OC|$K#>sqzkJ!qEPn^wc9ftn+Hl76ixW124a&TPgiGGw`WqG_a65IK|UIvS9$OjpGy$h_(u2?s3S_E zb(a6S_siat{MD%~08p@84!YLtv=j{5B?;gtAHX7hA5=12tubeS^RR$0ZjfkEH9f0c z5ZEDdQU2=ok&NN7iLvg0u18N@Ln6>tqE54IL+EO`)!}%c5q1wKCnNF!-VN;C(3X{w zM45n2A^#Q7Y%O6^%aYIU}4lOY+%6vyX%lC zoB(95^Lk;^>fVvDp$MOyMAZ5RS4ii$K%Rd>$s_xTAeXHlDI0~Bf36=^FG zs0t#q_gtK+i<3w+p>nfwVp`QD$Xqn2^`}b@%^we{Of0T4M22qyzMzWZDjST&6&lD< z8l)675>*m}><65>R=OZ)5)}ky_~24vrS(WANb!-|*E8V^ zyUrO?&djlFf39zpJ5&czk9q;Q=9Jl(+unM`E=i#eXSd;DJ3(KzW$AEcl7_q@r_m~ zTmVX4sZ+~bBcbntY8W4%l_SydabgGY=CnT)jwp!`arE^%4xbr5N#xVgD z9CCPj1r-Y_s>Zr{1y{4mD)S2TNQg902edo2PSRR}rWBQDL*wHr7lYSS;<`nFOa*9Hw$&Hx-={pNS-hgVNH+V_*>?Dhred+-_j{2|&OgL8wo~tIb_5 zhO|;Gjw$pWbas|n)o^k)HaRyFI!)dKlwJ;H6y^;UWBfOda6=x|Z}3QOOtPCi#`aCa z0o=6Fj}d21-ORI1YXY>x!j1HeEKYxx7h3)h94mq&FSJ3c8-xYp9piHCtqp|EG6M{} z=*B@N*|%n|&x~Xe_eUSJE-E>1?&GE7-+lhQ_{9FC`{~{vq~yh9e~L-<7h3marxrha zsD5Oy1;R!D>rhC\d+)\nRegister B: (?P\d+)\nRegister C: (?P\d+)\n\nProgram: (?P(\d+,?)*)', ins) + ra, rb, rc = int(g['ra']), int(g['rb']), int(g['rc']) + prog = [int(p) for p in g['prog'].split(',')] + pointer = 0 + while True: + if pointer >= len(prog): break + ra, rb, rc, pointer = instr(prog[pointer], prog[pointer+1], ra, rb, rc, pointer) + + possible_bounds = [(0,8)] + for i in range(15,-1,-1): + exp = prog[i] + possible_x = [] + for lb, ub in possible_bounds: + possible_x += [i for i in step(lb, ub, 0, exp)] + possible_bounds = [(x*8,(x+1)*8) for x in possible_x] + ra = min(possible_x) + + + + # challenge 1 + res1 = ','.join([str(o) for o in out]) + print(f"challenge 1:\n{res1}\n") + + # challenge 2 + res2 = ra + print(f"challenge 2 (only works for my input):\n{res2}") + diff --git a/2024/day17/example b/2024/day17/example new file mode 100644 index 0000000..27625b1 --- /dev/null +++ b/2024/day17/example @@ -0,0 +1,5 @@ +Register A: 2024 +Register B: 0 +Register C: 0 + +Program: 0,1,5,4,3,0 diff --git a/2024/day17/example1 b/2024/day17/example1 new file mode 100644 index 0000000..f69bbc0 --- /dev/null +++ b/2024/day17/example1 @@ -0,0 +1,5 @@ +Register A: 117440 +Register B: 0 +Register C: 0 + +Program: 0,3,5,4,3,0 diff --git a/2024/day17/example2 b/2024/day17/example2 new file mode 100644 index 0000000..f09839b --- /dev/null +++ b/2024/day17/example2 @@ -0,0 +1,5 @@ +Register A: 729 +Register B: 0 +Register C: 0 + +Program: 0,1,5,4,3,0 diff --git a/2024/day17/example3 b/2024/day17/example3 new file mode 100644 index 0000000..9b1d816 --- /dev/null +++ b/2024/day17/example3 @@ -0,0 +1,5 @@ +Register A: 0 +Register B: 2024 +Register C: 43690 + +Program: 4,0 diff --git a/2024/day17/input b/2024/day17/input new file mode 100644 index 0000000..1e29ec1 --- /dev/null +++ b/2024/day17/input @@ -0,0 +1,20 @@ +Register A: 48744869 +Register B: 0 +Register C: 0 + +Program: 2,4,1,2,7,5,1,3,4,4,5,5,0,3,3,0 + +bst ra (rb = ra % 8) +bxl 2 (rb = rb ^ 2) +cdv rb (rc = int(ra / 2**rb)) +bxl 3 (rb = rb ^ 3) +bxc _ (rb = rb ^ rc) +out rb (print rb % 8) +adv 3 (ra = int(ra / 8)) +jnz 0 (loop if ra != 0) + +print rb%8 = rb^rc % 8 = rb ^ 3 ^ rc % 8 = rb ^ 3 ^ int(ra / 2^rb) % 8 = rb ^ 2 ^ 3 ^ int(ra / 2**(rb^2)) % 8 = + (ra%8) ^ 2 ^ 3 ^ int(ra / 2**((ra%8)^2)) % 8 = 2 + ((ra//8**1)%8) ^ 2 ^ 3 ^ int((ra//8**1) / 2**((ra%8**1)^2)) % 8 = 4 +-> must loop 16 times, so ra must be around 8^15 to 8^16? +prints out