diff options
author | H.J <thechairman@thechairman.info> | 2024-10-09 11:36:55 -0400 |
---|---|---|
committer | H.J <thechairman@thechairman.info> | 2024-10-09 11:36:55 -0400 |
commit | 8777ff071f7bb37631baa7b6717ad29961e50911 (patch) | |
tree | 6d59c4ed58e454b960339c3d1151f0a879e8d7cb /aoc2021/day-04 | |
parent | 6156a9ef7be4012063a042aafb4e9b0d7eadde8e (diff) | |
download | gleam_aoc-8777ff071f7bb37631baa7b6717ad29961e50911.tar.gz gleam_aoc-8777ff071f7bb37631baa7b6717ad29961e50911.zip |
sorting by language
Diffstat (limited to 'aoc2021/day-04')
-rw-r--r-- | aoc2021/day-04/day-04.rkt | 51 |
1 files changed, 0 insertions, 51 deletions
diff --git a/aoc2021/day-04/day-04.rkt b/aoc2021/day-04/day-04.rkt deleted file mode 100644 index c572f74..0000000 --- a/aoc2021/day-04/day-04.rkt +++ /dev/null @@ -1,51 +0,0 @@ -#lang racket -(require advent-of-code - threading - (only-in algorithms chunks-of)) - -(define data - (for/list ([l (in-lines (open-aoc-input (find-session) 2021 4 #:cache (string->path "./cache")))] - #:unless (equal? l "")) - l)) - -(define call-sheet (~> data car (string-split ",") (map string->number _))) -(define bingo-cards - (~> data cdr (map string-split _) (map (λ (row) (map string->number row)) _) (chunks-of 5))) - -(define test-card (first bingo-cards)) - -(define (mark-card card call) - (for/list ([row (in-list card)]) - (for/list ([col (in-list row)]) - (if (eq? col call) 'X col)))) - -(define (check-card card) - (for/or ([row (in-sequences card (apply map list card))]) - (equal? row '(X X X X X)))) - -(define (multiply-by-last-call n call) - (match n - ['X 0] - [n (* n call)])) - -(define (evaluate-cards cards calls [check (curry ormap check-card)] [exception not]) - (for/fold ([current-cards cards] - [last-call 0] - #:result (~> current-cards - (findf check-card _) - flatten - (map (λ (n) (multiply-by-last-call n last-call)) _) - (apply + _))) - ([call (in-list calls)]) - #:break (check current-cards) - (values (for/list ([card (in-list current-cards)] #:unless (exception card)) - (mark-card card call)) - call))) - -;; part 1 -(evaluate-cards bingo-cards call-sheet) -;; part 2 -(evaluate-cards bingo-cards - call-sheet - (λ (cards) (and (= (length cards) 1) (check-card (first cards)))) - check-card) |