day 3: triple shork
This commit is contained in:
parent
7f0b579a01
commit
1e98c88ed5
|
@ -0,0 +1,35 @@
|
||||||
|
#lang curly-fn racket
|
||||||
|
|
||||||
|
(require "scripts/aoc.rkt")
|
||||||
|
|
||||||
|
;; solution for day 3
|
||||||
|
|
||||||
|
;; helper functions here
|
||||||
|
(define (find input dx dy)
|
||||||
|
(for/sum ([j (in-range 0 (vector-length input) dy)] [i (in-range 0 +inf.0 dx)])
|
||||||
|
(define line (vector-ref input j))
|
||||||
|
(if (~>> (vector-length line) (modulo i) (vector-ref line))
|
||||||
|
1 0)))
|
||||||
|
|
||||||
|
(define (part1 input)
|
||||||
|
(find input 3 1))
|
||||||
|
|
||||||
|
(define (part2 input)
|
||||||
|
(for/product ([args (in-list '((1 1) (3 1) (5 1) (7 1) (1 2)))])
|
||||||
|
(apply find input args)))
|
||||||
|
|
||||||
|
(module+ main
|
||||||
|
(define input
|
||||||
|
(for/vector ([line (in-list (file->lines "inputs/3"))])
|
||||||
|
(for/vector ([char (in-string line)])
|
||||||
|
(match char
|
||||||
|
[#\. #f]
|
||||||
|
[#\# #t]))))
|
||||||
|
|
||||||
|
;; part 1
|
||||||
|
(answer 3 1 (part1 input))
|
||||||
|
|
||||||
|
;; part 2
|
||||||
|
(answer 3 2 (part2 input))
|
||||||
|
|
||||||
|
(displayln "meow"))
|
Loading…
Reference in New Issue