From 8ab65dc2da1742eb86ec636c50c7018385b68167 Mon Sep 17 00:00:00 2001 From: "J.J" Date: Thu, 30 Nov 2023 17:10:00 -0500 Subject: prep for 2023, renaming for consistency --- aoc2015/day-02/day-02.rkt | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 aoc2015/day-02/day-02.rkt (limited to 'aoc2015/day-02') diff --git a/aoc2015/day-02/day-02.rkt b/aoc2015/day-02/day-02.rkt new file mode 100644 index 0000000..579fd00 --- /dev/null +++ b/aoc2015/day-02/day-02.rkt @@ -0,0 +1,26 @@ +#lang racket +(require "../../jj-aoc.rkt" + threading + racket/struct) + +(struct present (l w h) #:transparent) + +(define presents + (for/list ([size-string (in-lines (open-day 2 2015))]) + (~> size-string (string-split "x") (map string->number _) (apply present _)))) + +;; part 1 +(define (paper-area p) + (define main-area (~> p struct->list (combinations 2) (map (λ~> (apply * 2 _)) _) (apply + _))) + (define slack-area (~> p struct->list (sort <) (take 2) (apply * _))) + (+ main-area slack-area)) + +(for/sum ([p (in-list presents)]) (paper-area p)) + +;; part 2 +(define (ribbon-length p) + (define ribbon-around-box (~> p struct->list (sort <) (take 2) (map (λ~> (* 2)) _) (apply + _))) + (define ribbon-for-bow (~> p struct->list (apply * _))) + (+ ribbon-around-box ribbon-for-bow)) + +(for/sum ([p (in-list presents)]) (ribbon-length p)) -- cgit v1.2.3