Fix library; use threading in Day 7.
This commit is contained in:
parent
19e87e9dfc
commit
0dbe56a244
4
lib.rkt
4
lib.rkt
|
@ -1,7 +1,6 @@
|
||||||
#lang racket
|
#lang racket
|
||||||
|
|
||||||
(require
|
(require
|
||||||
curly-fn
|
|
||||||
threading
|
threading
|
||||||
(only-in data/queue
|
(only-in data/queue
|
||||||
make-queue
|
make-queue
|
||||||
|
@ -10,8 +9,7 @@
|
||||||
read-lines
|
read-lines
|
||||||
read-file))
|
read-file))
|
||||||
|
|
||||||
(provide (all-from-out curly-fn
|
(provide (all-from-out threading)
|
||||||
threading)
|
|
||||||
|
|
||||||
problem-input
|
problem-input
|
||||||
problem-input-all
|
problem-input-all
|
||||||
|
|
15
src/07.rkt
15
src/07.rkt
|
@ -20,19 +20,18 @@
|
||||||
(add-vertex! contains outer)]))))
|
(add-vertex! contains outer)]))))
|
||||||
(values contained contains)))
|
(values contained contains)))
|
||||||
|
|
||||||
(define (count-bags graph source multiplier)
|
(define (count-bags graph source)
|
||||||
(let ([neighbours (get-neighbours graph source)])
|
(let ([neighbours (get-neighbours graph source)])
|
||||||
(* (apply + 1 (map (λ (neighbour)
|
(apply + 1 (map (λ (neighbour)
|
||||||
(let ([weight (edge-weight graph source neighbour)])
|
(let ([weight (edge-weight graph source neighbour)])
|
||||||
(count-bags graph neighbour weight)))
|
(* weight (count-bags graph neighbour))))
|
||||||
neighbours))
|
neighbours))))
|
||||||
multiplier)))
|
|
||||||
|
|
||||||
(define-values (part1 part2)
|
(define-values (part1 part2)
|
||||||
(let*-values ([(contained contains) (strings->graphs input)]
|
(let*-values ([(contained contains) (strings->graphs input)]
|
||||||
[(bfs-shiny-gold pred) (bfs contained "shiny gold")]
|
[(bfs-shiny-gold pred) (bfs contained "shiny gold")]
|
||||||
[(reachables) (count (∘ (∂ != +inf.0) cdr) (hash->list bfs-shiny-gold))]
|
[(reachables) (count (λ~> cdr (!= +inf.0)) (hash->list bfs-shiny-gold))]
|
||||||
[(total-bags) (count-bags contains "shiny gold" 1)])
|
[(total-bags) (count-bags contains "shiny gold")])
|
||||||
(values (sub1 reachables) (sub1 total-bags))))
|
(values (sub1 reachables) (sub1 total-bags))))
|
||||||
|
|
||||||
(show-solution part1 part2)
|
(show-solution part1 part2)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#lang racket
|
#lang curly-fn racket
|
||||||
|
|
||||||
(require "../lib.rkt")
|
(require "lib.rkt")
|
||||||
|
|
||||||
(define (parse in) in)
|
(define (parse in) in)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue