From 7d3789f139d34ff33c3e9586b7e7781e3cf23d3e Mon Sep 17 00:00:00 2001 From: Hunky Jimpjorps Date: Tue, 20 Dec 2022 10:36:52 -0500 Subject: day 16 cleanup --- 2022/day-16/day-16.rkt | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) (limited to '2022') diff --git a/2022/day-16/day-16.rkt b/2022/day-16/day-16.rkt index 2503da1..0e5ab77 100644 --- a/2022/day-16/day-16.rkt +++ b/2022/day-16/day-16.rkt @@ -60,12 +60,4 @@ (values running-pressure remaining-valves*)))] [else (cons current-pressure available-valves)])) -(car (find-best-single-route "AA")) - -;; part 2 -; (define (find-best-double-route start) -; (define done-by-me (find-best-single-route start 26)) -; (define done-by-elephant (find-best-single-route start 26 0 (cdr done-by-me))) -; (+ (car done-by-me) (car done-by-elephant))) - -; (find-best-double-route "AA") +(car (find-best-single-route "AA")) \ No newline at end of file -- cgit v1.2.3 From 4e8f40a3e21628f9cd5935a4d7bb0f42297a117f Mon Sep 17 00:00:00 2001 From: Hunky Jimpjorps Date: Tue, 20 Dec 2022 13:24:48 -0500 Subject: day 20 complete (!) --- 2022/day-20/day-20.rkt | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 2022/day-20/day-20.rkt (limited to '2022') diff --git a/2022/day-20/day-20.rkt b/2022/day-20/day-20.rkt new file mode 100644 index 0000000..8132767 --- /dev/null +++ b/2022/day-20/day-20.rkt @@ -0,0 +1,47 @@ +#lang racket +(require advent-of-code) + +;(define data '(1 2 -3 3 -2 0 4)) +(define data (port->list read (open-aoc-input (find-session) 2022 20 #:cache #true))) + +(define gps-lst data) +(define gps-len (length gps-lst)) +(define gps-indexed (map cons (inclusive-range 1 gps-len) gps-lst)) + +(define (mix pt data) + (match-define (list left ... (== pt) right ...) data) + (define start (index-of data pt)) + (define move-by (modulo (cdr pt) (sub1 gps-len))) + (cond + [(= 0 move-by) data] + [(<= move-by (length right)) + (match-define-values (new-left new-right) + (split-at (append left right) (modulo (+ move-by start) (sub1 gps-len)))) + (append new-left (list pt) new-right)] + [else + (match-define-values (new-left new-right) + (split-at (append left right) (modulo (+ move-by start) (sub1 gps-len)))) + (append new-left (list pt) new-right)])) + +(define (mix-gps data original) + (for/fold ([pts data]) ([pt original]) + (mix pt pts))) +(define (cycle-mixed-gps mixed) + (in-sequences (drop mixed (index-of mixed 0)) (in-cycle mixed))) +(define (calculate-answer mix) + (for/sum ([id '(1000 2000 3000)]) (sequence-ref mix id))) + +;; part 1 +(define part1-mix (cycle-mixed-gps (map cdr (mix-gps gps-indexed gps-indexed)))) +(calculate-answer part1-mix) + +;; part 2 +(define encrypted-gps-indexed + (for/list ([pt (in-list gps-indexed)] #:do [(match-define (cons i v) pt)]) + (cons i (* 811589153 v)))) + +(define part2-mix + (cycle-mixed-gps (map cdr + (for/fold ([pts encrypted-gps-indexed]) ([_ (in-range 10)]) + (mix-gps pts encrypted-gps-indexed))))) +(calculate-answer part2-mix) -- cgit v1.2.3 From a656a85c43c3817a70368b85f63c106b78b5cf82 Mon Sep 17 00:00:00 2001 From: Hunky Jimpjorps Date: Tue, 20 Dec 2022 14:15:26 -0500 Subject: day 20 cleanup --- 2022/day-20/day-20.rkt | 1 - 1 file changed, 1 deletion(-) (limited to '2022') diff --git a/2022/day-20/day-20.rkt b/2022/day-20/day-20.rkt index 8132767..329a372 100644 --- a/2022/day-20/day-20.rkt +++ b/2022/day-20/day-20.rkt @@ -1,7 +1,6 @@ #lang racket (require advent-of-code) -;(define data '(1 2 -3 3 -2 0 4)) (define data (port->list read (open-aoc-input (find-session) 2022 20 #:cache #true))) (define gps-lst data) -- cgit v1.2.3 From f8c7d4e47f04fa2bfbbe5a9487f765bdf898c3ba Mon Sep 17 00:00:00 2001 From: Hunky Jimpjorps Date: Tue, 20 Dec 2022 14:30:15 -0500 Subject: day 20 cleanup --- 2022/day-20/day-20.rkt | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) (limited to '2022') diff --git a/2022/day-20/day-20.rkt b/2022/day-20/day-20.rkt index 329a372..6dd1070 100644 --- a/2022/day-20/day-20.rkt +++ b/2022/day-20/day-20.rkt @@ -1,5 +1,6 @@ #lang racket -(require advent-of-code) +(require advent-of-code + threading) (define data (port->list read (open-aoc-input (find-session) 2022 20 #:cache #true))) @@ -25,22 +26,23 @@ (define (mix-gps data original) (for/fold ([pts data]) ([pt original]) (mix pt pts))) + (define (cycle-mixed-gps mixed) - (in-sequences (drop mixed (index-of mixed 0)) (in-cycle mixed))) -(define (calculate-answer mix) - (for/sum ([id '(1000 2000 3000)]) (sequence-ref mix id))) + (define lst (map cdr mixed)) + (in-sequences (drop lst (index-of lst 0)) (in-cycle lst))) + +(define (calculate-answer seq) + (for/sum ([id '(1000 2000 3000)]) (sequence-ref seq id))) ;; part 1 -(define part1-mix (cycle-mixed-gps (map cdr (mix-gps gps-indexed gps-indexed)))) -(calculate-answer part1-mix) +(~> gps-indexed (mix-gps _ gps-indexed) cycle-mixed-gps calculate-answer) ;; part 2 (define encrypted-gps-indexed (for/list ([pt (in-list gps-indexed)] #:do [(match-define (cons i v) pt)]) (cons i (* 811589153 v)))) -(define part2-mix - (cycle-mixed-gps (map cdr - (for/fold ([pts encrypted-gps-indexed]) ([_ (in-range 10)]) - (mix-gps pts encrypted-gps-indexed))))) -(calculate-answer part2-mix) +(~>> encrypted-gps-indexed + ((λ (data) (foldr (λ (_ pts) (mix-gps pts data)) data (range 10)))) + cycle-mixed-gps + calculate-answer) -- cgit v1.2.3