From d5df5faacef264a1522860f5a8022007e71028d5 Mon Sep 17 00:00:00 2001 From: Oscar Najera Date: Fri, 2 Dec 2022 16:11:26 +0100 Subject: [AoC2022] 02-02 elisp --- AoC2022/02/solver.el | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'AoC2022/02/solver.el') diff --git a/AoC2022/02/solver.el b/AoC2022/02/solver.el index 18fe64e..573a2d4 100644 --- a/AoC2022/02/solver.el +++ b/AoC2022/02/solver.el @@ -21,7 +21,7 @@ (require 'seq) (require 'ert) - +;; play to order (defun solver-translate (play) (pcase play ((or ?A ?X) 'rock) @@ -42,6 +42,24 @@ (`(,c ,c) 3) (_ 0))) +;; play to strategy +(defun solver-translate-strategy (play) + (pcase play + (?X 'loose) + (?Y 'draw) + (?Z 'win))) + +(defconst solver-results '((rock . scissors) (scissors . paper) (paper . rock)) + "Win-lose pairs") + +(defun solver-strategy-a (a b) + (pcase a + ('loose (cdr (assq b solver-results))) + ('draw b) + ('win (car (rassq b solver-results))))) + +(solver-strategy-a 'win 'rock) + (should (= 12535 (with-temp-buffer (insert-file-contents "input") @@ -53,3 +71,14 @@ (split-string (buffer-string) "\n" t) 0)))) +(with-temp-buffer + (insert-file-contents "input") + (seq-reduce + (lambda (acc game) + (let* ((oponent (solver-translate (aref game 0))) + (my-strategy (solver-translate-strategy (aref game 2))) + (my-game (solver-strategy-a my-strategy oponent))) + + (+ acc (solver-weight my-game) (solver-result-a my-game oponent)))) + (split-string (buffer-string) "\n" t) + 0)) -- cgit v1.2.3