parent
b8c616b461
commit
551eec19db
1 changed files with 47 additions and 0 deletions
@ -0,0 +1,47 @@ |
||||
#+title: solution to p11 |
||||
|
||||
#+begin_src emacs-lisp :results none |
||||
(with-temp-buffer |
||||
(insert-file-contents "input") |
||||
(advent/replace-multiple-regex-buffer |
||||
'((":" . " ") |
||||
("^" . "(") |
||||
("$" . ")"))) |
||||
(goto-char (point-min)) |
||||
(insert "(setq data '(") |
||||
(goto-char (point-max)) |
||||
(insert "))") |
||||
(eval-buffer)) |
||||
#+end_src |
||||
|
||||
This is for part 1 |
||||
#+begin_src emacs-lisp |
||||
(defun paths-from (label) |
||||
(if (eq label 'out) 1 |
||||
(-sum (-map 'paths-from (cdr (assq label data)))))) |
||||
(memoize 'paths-from) |
||||
(paths-from 'you) |
||||
#+end_src |
||||
|
||||
#+RESULTS: |
||||
: 701 |
||||
|
||||
And this for part 2; note that there are no paths from dac to fft |
||||
(there can be only paths in one direction, otherwise we would get |
||||
a loop. |
||||
#+begin_src emacs-lisp |
||||
(defun paths-from-to (label exit) |
||||
(if (eq label exit) 1 |
||||
(if (eq label 'out) 0 |
||||
(-sum (--map (paths-from-to it exit) (cdr (assq label data))))))) |
||||
(memoize 'paths-from-to) |
||||
(* (paths-from-to 'svr 'fft) |
||||
(paths-from-to 'fft 'dac) |
||||
(paths-from 'dac)) |
||||
#+end_src |
||||
|
||||
#+RESULTS: |
||||
: 390108778818526 |
||||
|
||||
|
||||
|
||||
Loading…
Reference in new issue