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/05a.rkt |
initial commit
Diffstat (limited to '2021/day5/05a.rkt')
-rw-r--r-- | 2021/day5/05a.rkt | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/2021/day5/05a.rkt b/2021/day5/05a.rkt new file mode 100644 index 0000000..c24cb49 --- /dev/null +++ b/2021/day5/05a.rkt @@ -0,0 +1,36 @@ +#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)) + (cond [(or (= 0 mx) (= 0 my)) (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))))] + [else 0])) + + +(define (vents l _a . ls) + (cond [(null? ls) l] + [else (cons l (apply vents ls))])) + +(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))) |