day 12
This commit is contained in:
parent
88832b8b92
commit
47867f4a00
|
@ -0,0 +1,61 @@
|
||||||
|
#lang curly-fn racket
|
||||||
|
|
||||||
|
(require "scripts/aoc.rkt")
|
||||||
|
|
||||||
|
;; solution for day 12
|
||||||
|
|
||||||
|
(define (grid-h grid) (vector-length grid))
|
||||||
|
(define (grid-w grid) (vector-length (vector-ref grid 0)))
|
||||||
|
(define (grid-ref grid y x) (vector-ref (vector-ref grid y) x))
|
||||||
|
(define (grid-find grid c)
|
||||||
|
(for*/first ([y (in-range (grid-h grid))] [x (in-range (grid-w grid))]
|
||||||
|
#:when (eq? c (grid-ref grid y x)))
|
||||||
|
(cons x y)))
|
||||||
|
|
||||||
|
(define (part1 input)
|
||||||
|
(match-define (list grid G) input)
|
||||||
|
(define-values [a b] (dijkstra G (grid-find grid #\E)))
|
||||||
|
(hash-ref a (grid-find grid #\S)))
|
||||||
|
|
||||||
|
(define (part2 input)
|
||||||
|
(match-define (list grid G) input)
|
||||||
|
(define-values [a b] (dijkstra G (grid-find grid #\E)))
|
||||||
|
(apply min
|
||||||
|
(for*/list ([y (in-range (grid-h grid))]
|
||||||
|
[x (in-range (grid-w grid))]
|
||||||
|
#:when (eq? (grid-ref grid y x) #\a)
|
||||||
|
[dist (in-value (hash-ref a (cons x y)))]
|
||||||
|
#:unless (= +inf.0 dist))
|
||||||
|
dist)))
|
||||||
|
|
||||||
|
(define (parse fname)
|
||||||
|
(define grid (for/vector ([line (in-list (file->lines fname))])
|
||||||
|
(list->vector (string->list line))))
|
||||||
|
|
||||||
|
(define (valid-move? a b)
|
||||||
|
(define (hm->int x)
|
||||||
|
(char->integer (match x [#\S #\a] [#\E #\z] [_ x])))
|
||||||
|
(<= (hm->int b) (add1 (hm->int a))))
|
||||||
|
|
||||||
|
(define edges
|
||||||
|
(for*/fold ([edges '()])
|
||||||
|
([y (in-range (grid-h grid))] [x (in-range (grid-w grid))]
|
||||||
|
[neigh (in-list (list (cons (add1 x) y)
|
||||||
|
(cons (sub1 x) y)
|
||||||
|
(cons x (add1 y))
|
||||||
|
(cons x (sub1 y))))]
|
||||||
|
#:when (< -1 (car neigh) (grid-w grid))
|
||||||
|
#:when (< -1 (cdr neigh) (grid-h grid)))
|
||||||
|
(define this-val (grid-ref grid y x))
|
||||||
|
(define neigh-val (grid-ref grid (cdr neigh) (car neigh)))
|
||||||
|
(if (valid-move? this-val neigh-val)
|
||||||
|
(cons (list neigh (cons x y)) edges)
|
||||||
|
edges)))
|
||||||
|
|
||||||
|
(list grid (directed-graph edges)))
|
||||||
|
|
||||||
|
(module+ main
|
||||||
|
(define input (parse "inputs/12"))
|
||||||
|
(answer 12 1 (time (part1 input)))
|
||||||
|
(answer 12 2 (time (part2 input)))
|
||||||
|
(displayln "meow"))
|
|
@ -0,0 +1,41 @@
|
||||||
|
abaaaaaccccccccccccccccccaaaaaaaaaaaaaccccaaaaaaaccccccccccccccccccccccccccccaaaaaa
|
||||||
|
abaaaaaaccaaaacccccccccccaaaaaaaaacaaaacaaaaaaaaaacccccccccccccccccccccccccccaaaaaa
|
||||||
|
abaaaaaacaaaaaccccccccccaaaaaaaaaaaaaaacaaaaaaaaaacccccccccccccaacccccccccccccaaaaa
|
||||||
|
abaaaaaacaaaaaacccccccccaaaaaaaaaaaaaaccaaacaaaccccccccccccccccaacccccccccccccccaaa
|
||||||
|
abccaaaccaaaaaacccaaaaccaaaaaaaaaaaaaccccaacaaacccccccccaacaccccacccccccccccccccaaa
|
||||||
|
abcccccccaaaaaccccaaaacccccaaaaacccaaaccaaaaaaccccccccccaaaaccccccccccccccccccccaac
|
||||||
|
abcccccccccaaaccccaaaacccccaaaaacccccccccaaaaaccccccccccklllllccccccccccccccccccccc
|
||||||
|
abcccccccccccccccccaaccccccccaaccccccccaaaaaaaccccccccckklllllllcccccddccccaacccccc
|
||||||
|
abaccccccccccccccccccccccccccaaccccccccaaaaaaaaccccccckkkklslllllcccddddddaaacccccc
|
||||||
|
abacccccccccccccccccccccccccccccccaaaccaaaaaaaaccccccckkkssssslllllcddddddddacccccc
|
||||||
|
abaccccccccccccccccccccccccccccccccaaaaccaaacaccccccckkksssssssslllmmmmmdddddaacccc
|
||||||
|
abcccccccccccccccaaacccccccccccccaaaaaaccaacccccccccckkkssssusssslmmmmmmmdddddacccc
|
||||||
|
abcccccccaaccccaaaaacccccccccccccaaaaaccccccaaaaaccckkkrssuuuussssqmmmmmmmmdddccccc
|
||||||
|
abcccccccaaccccaaaaaacccccccaaccccaaaaacccccaaaaacckkkkrruuuuuussqqqqqqmmmmdddccccc
|
||||||
|
abccccaaaaaaaacaaaaaacccccccaaaaccaaccaccccaaaaaacjkkkrrruuuxuuusqqqqqqqmmmmeeccccc
|
||||||
|
abcaaaaaaaaaaacaaaaaccccccaaaaaacccccaaccccaaaaajjjjrrrrruuuxxuvvvvvvvqqqmmmeeccccc
|
||||||
|
abcaacccaaaaccccaaaaaaacccaaaaacccacaaaccccaaaajjjjrrrrruuuxxxxvvvvvvvqqqmmeeeccccc
|
||||||
|
abaaaaccaaaaacccccccaaaccccaaaaacaaaaaaaacccaajjjjrrrrtuuuuxxxyvyyyvvvqqqnneeeccccc
|
||||||
|
abaaaaaaaaaaacccaaaaaaaccccaacaacaaaaaaaacccccjjjrrrttttuxxxxxyyyyyvvvqqnnneeeccccc
|
||||||
|
abaaaaaaaccaacccaaaaaaaaacccccccccaaaaaaccccccjjjrrrtttxxxxxxxyyyyyvvvqqnnneeeccccc
|
||||||
|
SbaaaaaacccccccccaaaaaaaaaccccccccaaaaacccccccjjjrrrtttxxxEzzzzyyyvvrrrnnneeecccccc
|
||||||
|
abaaaaacccccccccccaaaaaaacccccccccaaaaaaccccccjjjqqqtttxxxxxyyyyyvvvrrrnnneeecccccc
|
||||||
|
abaaacccccccccccaaaaaaaccaaccccccccccaaccaaaaajjjqqqttttxxxxyyyyyyvvrrrnnneeecccccc
|
||||||
|
abaaacccccccccccaaaaaaaccaaacaaacccccccccaaaaajjjjqqqtttttxxyywyyyywvrrnnnfeecccccc
|
||||||
|
abcaaacccccccaaaaaaaaaaacaaaaaaaccccccccaaaaaaciiiiqqqqtttxwyywwyywwwrrrnnfffcccccc
|
||||||
|
abcccccccccccaaaaaaaaaaccaaaaaacccccccccaaaaaacciiiiqqqqttwwywwwwwwwwrrrnnfffcccccc
|
||||||
|
abccccccccccccaaaaaacccaaaaaaaacccccccccaaaaaaccciiiiqqqttwwwwwswwwwrrrrnnfffcccccc
|
||||||
|
abccccccccccccaaaaaacccaaaaaaaaacccccccccaaacccccciiiqqqtswwwwssssrrrrrroofffcccccc
|
||||||
|
abccccccaaaaacaaaaaacccaaaaaaaaaaccccccccccccccccciiiqqqssswsssssssrrrrooofffaccccc
|
||||||
|
abccccccaaaaacaaccaaccccccaaacaaacccccccccccccccccciiiqqssssssspoorrrooooofffaacccc
|
||||||
|
abcccccaaaaaacccccccccccccaaacccccccccccccccccccccciiiqppssssspppooooooooffffaacccc
|
||||||
|
abcccccaaaaaacccccccccccccaacccccccccccccccccccccccciipppppppppppoooooooffffaaccccc
|
||||||
|
abcccccaaaaaaccccccccccccccccccccccccccccccccccccccciihppppppppgggggggggfffaaaccccc
|
||||||
|
abccccccaaacccccccccccccccccccccccaccccccccccccccccchhhhpppppphggggggggggfaaaaccccc
|
||||||
|
abaaaccccccccccccccccccccccaccccaaacccccccccccccccccchhhhhhhhhhgggggggggcaacccccccc
|
||||||
|
abaaccaaaccaccccccccccccccaaacccaaacaacccaaaaacccccccchhhhhhhhhgaaccccccccccccccccc
|
||||||
|
abaaacaaacaacccccccccaaaccaaaacaaaaaaaaccaaaaaccccccccchhhhhhaaaaacccccccccccccccca
|
||||||
|
abaaaccaaaaaccccccccccaaacaaaaaaaacaaaaccaaaaaaccccccccccaaacccaaaacccccccccccaccca
|
||||||
|
abcccaaaaaaccccccccccaaaaaaaaaaaaacaaaaccaaaaaaccccccccccaaaccccaaaccccccccccaaaaaa
|
||||||
|
abcccaaaaaaaacccccccaaaaaaaaaaaaaaaaaccccaaaaaacccccccccccccccccccccccccccccccaaaaa
|
||||||
|
abcccaacaaaaaccccccaaaaaaaaaaaaaaaaaaacccccaacccccccccccccccccccccccccccccccccaaaaa
|
|
@ -0,0 +1,5 @@
|
||||||
|
Sabqponm
|
||||||
|
abcryxxl
|
||||||
|
accszExk
|
||||||
|
acctuvwj
|
||||||
|
abdefghi
|
Loading…
Reference in New Issue