diff options
author | Aria <me@aria.rip> | 2023-01-02 21:58:56 +0000 |
---|---|---|
committer | Aria <me@aria.rip> | 2023-01-02 21:58:56 +0000 |
commit | 5eb58ad076f2cd435b11b140820da224b60b73d5 (patch) | |
tree | 2a67939595fbf993ff04f69b9cd3f0aa20827d96 /2021/day5/05b.rkt |
initial commit
Diffstat (limited to '2021/day5/05b.rkt')
-rw-r--r-- | 2021/day5/05b.rkt | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/2021/day5/05b.rkt b/2021/day5/05b.rkt new file mode 100644 index 0000000..25d6fd6 --- /dev/null +++ b/2021/day5/05b.rkt @@ -0,0 +1,39 @@ +#lang racket + +(require "./05a_grammar.rkt") + +(define ventCounts (make-hash)) + +(define (digit x) + x) + +(define (number . DIGITS) + (string->number (foldr string-append "" DIGITS))) + +(define (coord a _a b) + (list a b)) + +(define (line c1 _b _c _d _e c2) + (define steps (max (abs (- (car c2) (car c1))) + (abs (- (second c2) (second c1))))) + (define mx (/ (- (car c2) (car c1)) steps)) + (define my (/ (- (second c2) (second c1)) steps)) + (for ([s (+ 1 steps)]) + (define v (list (+ (car c1) (* mx s)) (+ (second c1) (* my s)))) + (hash-set! ventCounts v (+ 1 (hash-ref ventCounts v 0))))) + +(define (vents l _a . ls) + (cond [(null? ls) l] + [else (cons l (apply vents ls))])) + +(define (print-board ex ey) + (for ([y ey]) + (for ([x ex]) + (display (hash-ref ventCounts (list x y) "."))) + (display "\n"))) + +(define-namespace-anchor anc) +(define ns (namespace-anchor->namespace anc)) +(define parsed (parse-to-datum (file->string "./input"))) +(void (eval parsed ns)) +(length (filter (curry <= 2) (hash-values ventCounts))) |