From 24e8453b8c10b8297a1f439f44054bea17720243 Mon Sep 17 00:00:00 2001 From: Jacopo De Simoi Date: Sun, 20 Apr 2025 22:51:44 -0400 Subject: [PATCH] [p17] Reformat a bit --- p17/p17.org | 123 +++++----------------------------------------------- 1 file changed, 11 insertions(+), 112 deletions(-) diff --git a/p17/p17.org b/p17/p17.org index 6b5f7c1..df95ede 100644 --- a/p17/p17.org +++ b/p17/p17.org @@ -1,6 +1,6 @@ #+title: solution to p17 -Load program +Load program #+begin_src emacs-lisp (require 'dash) @@ -16,13 +16,12 @@ Load program (replace-regexp-from-top "," " ") (replace-regexp-from-top "Program: \\(.*\\)$" "(setq program '(\\1))") - (eval-buffer)) - #+end_src #+RESULTS: +Convert the opcodes into instructions #+begin_src emacs-lisp (let ((opcode-alist '( (0 . adv) (1 . bxl) @@ -45,14 +44,15 @@ Load program | out | 5 | | jnz | 0 | -#+begin_src emacs-lisp +Now define the instructions and run, for part 1 +#+begin_src emacs-lisp (defun combo (c) (let ((combo-alist `( (4 . ,A) - (5 . ,B) - (6 . ,C)))) + (5 . ,B) + (6 . ,C)))) (if (< c 4) c - (cdr (assoc c combo-alist))))) + (cdr (assoc c combo-alist))))) (defun aux-adv (c) (/ A (expt 2 (combo c)))) @@ -74,10 +74,8 @@ Load program (defun out (c) (let ((out-c (mod (combo c) 8))) - (print out-c) (if so (setq so (concat so (format ",%d" out-c))) - (setq so (format "%d" out-c)) - ))) + (setq so (format "%d" out-c))))) (defun bxc (l) (setq B (logxor B C))) @@ -86,115 +84,16 @@ Load program (unless (eq A 0) (setq ip (- (/ l 2) 1)))) - (defun exec (pr) (setq so nil - ip 0 - stack-trace nil) + ip 0 + stack-trace nil) (while (nth ip pr) (push (list A B C ip (nth ip pr)) stack-trace) (eval (nth ip pr)) (setq ip (1+ ip))) - so - ) + so) - ;boot (exec proggo) - stack-trace #+end_src - -#+RESULTS: -| 0 | 1 | 0 | 7 | (jnz 0) | -| 0 | 1 | 0 | 6 | (out 5) | -| 0 | 1 | 0 | 5 | (bxc 1) | -| 2 | 1 | 0 | 4 | (adv 3) | -| 2 | 7 | 0 | 3 | (bxl 6) | -| 2 | 7 | 21 | 2 | (cdv 5) | -| 2 | 2 | 21 | 1 | (bxl 5) | -| 2 | 19 | 21 | 0 | (bst 4) | -| 2 | 19 | 21 | 7 | (jnz 0) | -| 2 | 19 | 21 | 6 | (out 5) | -| 2 | 6 | 21 | 5 | (bxc 1) | -| 21 | 6 | 21 | 4 | (adv 3) | -| 21 | 0 | 21 | 3 | (bxl 6) | -| 21 | 0 | 10 | 2 | (cdv 5) | -| 21 | 5 | 10 | 1 | (bxl 5) | -| 21 | 8 | 10 | 0 | (bst 4) | -| 21 | 8 | 10 | 7 | (jnz 0) | -| 21 | 8 | 10 | 6 | (out 5) | -| 21 | 2 | 10 | 5 | (bxc 1) | -| 169 | 2 | 10 | 4 | (adv 3) | -| 169 | 4 | 10 | 3 | (bxl 6) | -| 169 | 4 | 10 | 2 | (cdv 5) | -| 169 | 1 | 10 | 1 | (bxl 5) | -| 169 | 11 | 10 | 0 | (bst 4) | -| 169 | 11 | 10 | 7 | (jnz 0) | -| 169 | 11 | 10 | 6 | (out 5) | -| 169 | 1 | 10 | 5 | (bxc 1) | -| 1354 | 1 | 10 | 4 | (adv 3) | -| 1354 | 7 | 10 | 3 | (bxl 6) | -| 1354 | 7 | 677 | 2 | (cdv 5) | -| 1354 | 2 | 677 | 1 | (bxl 5) | -| 1354 | 679 | 677 | 0 | (bst 4) | -| 1354 | 679 | 677 | 7 | (jnz 0) | -| 1354 | 679 | 677 | 6 | (out 5) | -| 1354 | 2 | 677 | 5 | (bxc 1) | -| 10833 | 2 | 677 | 4 | (adv 3) | -| 10833 | 4 | 677 | 3 | (bxl 6) | -| 10833 | 4 | 86669 | 2 | (cdv 5) | -| 10833 | 1 | 86669 | 1 | (bxl 5) | -| 10833 | 86667 | 86669 | 0 | (bst 4) | -| 10833 | 86667 | 86669 | 7 | (jnz 0) | -| 10833 | 86667 | 86669 | 6 | (out 5) | -| 10833 | 6 | 86669 | 5 | (bxc 1) | -| 86669 | 6 | 86669 | 4 | (adv 3) | -| 86669 | 0 | 86669 | 3 | (bxl 6) | -| 86669 | 0 | 21667 | 2 | (cdv 5) | -| 86669 | 5 | 21667 | 1 | (bxl 5) | -| 86669 | 21664 | 21667 | 0 | (bst 4) | -| 86669 | 21664 | 21667 | 7 | (jnz 0) | -| 86669 | 21664 | 21667 | 6 | (out 5) | -| 86669 | 3 | 21667 | 5 | (bxc 1) | -| 693352 | 3 | 21667 | 4 | (adv 3) | -| 693352 | 5 | 21667 | 3 | (bxl 6) | -| 693352 | 5 | 86669 | 2 | (cdv 5) | -| 693352 | 0 | 86669 | 1 | (bxl 5) | -| 693352 | 86669 | 86669 | 0 | (bst 4) | -| 693352 | 86669 | 86669 | 7 | (jnz 0) | -| 693352 | 86669 | 86669 | 6 | (out 5) | -| 693352 | 0 | 86669 | 5 | (bxc 1) | -| 5546819 | 0 | 86669 | 4 | (adv 3) | -| 5546819 | 6 | 86669 | 3 | (bxl 6) | -| 5546819 | 6 | 22187278 | 2 | (cdv 5) | -| 5546819 | 3 | 22187278 | 1 | (bxl 5) | -| 5546819 | 22187273 | 22187278 | 0 | (bst 4) | -| 5546819 | 22187273 | 22187278 | 7 | (jnz 0) | -| 5546819 | 22187273 | 22187278 | 6 | (out 5) | -| 5546819 | 7 | 22187278 | 5 | (bxc 1) | -| 44374556 | 7 | 22187278 | 4 | (adv 3) | -| 44374556 | 1 | 22187278 | 3 | (bxl 6) | -| 44374556 | 1 | 0 | 2 | (cdv 5) | -| 44374556 | 4 | 0 | 1 | (bxl 5) | -| 44374556 | 0 | 0 | 0 | (bst 4) | - - -#+begin_src emacs-lisp - stack-trace -#+end_src -1 -#+RESULTS: -| 44374556 | nil | 0 | 2 | (cdv 5) | -| 44374556 | 4 | 0 | 1 | (bxl 5) | -| 44374556 | 0 | 0 | 0 | (bst 4) | - - so -"1,0,4,6,7,3,5,2,1,0" -(setq A 739) -(combo 4) -(adv 1) -(/ A (expt 2 (combo 5))) -stack-trace -((0 0 0 2 (jnz 0)) (0 0 0 1 (out 4)) (1 0 0 0 (adv 1)) (1 0 0 2 (jnz 0)) (1 0 0 1 (out 4)) (2 0 0 0 (adv 1)) (2 0 0 2 (jnz 0)) (2 0 0 1 (out 4)) (5 0 0 0 (adv 1)) (5 0 0 2 (jnz 0)) (5 0 0 1 (out 4)) (11 0 0 0 (adv 1)) ...) -so -"1,1,1,1,1,1,1,1,1,1"