d14 (stuck)

master
Matthew Butterick 4 years ago
parent c7bf665c6d
commit 023d056bc8

@ -0,0 +1,61 @@
#lang br
(require racket/file rackunit)
(define ore? number?)
(define (make-reactor reax-output proc-or-ore [t (current-thread)])
(let ([r (thread (λ ()
(define reax 0)
(define reax-formula (match proc-or-ore
[(? ore? ore) ore]
[proc proc]))
(let loop ([supply 0])
(match (thread-receive)
['ore
(thread-send t (match reax-formula
[(? ore? ore) (* ore reax)]
[_ 0]))
(loop supply)]
['reset
(set! reax 0)
(loop 0)]
[amt (let inner ([supply supply])
(cond
[(< supply amt)
(set! reax (add1 reax))
(unless (ore? reax-formula)
(reax-formula))
(inner (+ supply reax-output))]
[else (loop (- supply amt))]))]))))])
(λ (arg)
(thread-send r arg)
(when (eq? arg 'ore)
(thread-receive)))))
(define A (make-reactor 10 10))
#|(A 7)
(A 7)
(A 7)
(A 7)
(check-eq? (A 'ore) 30)
(A 'reset)
|#
(define B (make-reactor 1 1))
#|(B 7)
(B 7)
(B 7)
(B 7)
(check-eq? (B 'ore) 28)
(B 'reset)
|#
(define C (make-reactor 1 (λ () (A 7) (B 1))))
(define D (make-reactor 1 (λ () (A 7) (C 1))))
(define E (make-reactor 1 (λ () (A 7) (D 1))))
(define FUEL (make-reactor 1 (λ () (A 7) (E 1))))
(FUEL 1)
(A 'ore)
(A 'ore)
(A 'ore)

@ -0,0 +1,60 @@
1 FVBHS, 29 HWPND => 4 CPXDX
5 TNWDG, 69 VZMS, 1 GXSD, 48 NCLZ, 3 RSRZ, 15 HWPND, 25 SGPK, 2 SVCQ => 1 FUEL
1 PQRLB, 1 TWPMQ => 4 QBXC
9 QBXC => 7 RNHQ
12 VZMS => 6 MGQRZ
6 QBVG, 10 XJWX => 6 BWLZ
4 MVGN => 6 BHZH
2 LKTWD => 7 FVBHS
2 BWFK => 7 TFPQ
15 VZBJ, 9 TSVN, 2 BWLZ => 2 TNWDG
10 KVFL, 2 BWLZ, 1 VGSBF => 4 KBFJV
12 TXCR, 2 JMBG => 4 DCFD
5 VMDT, 6 JKPFT, 3 RJKJD => 7 LGWM
1 LDFGW => 2 DHRBP
129 ORE => 8 LDFGW
9 DNVRJ => 8 BMNGX
7 NLPB => 6 NCLZ
1 VMDT, 6 DCFD => 9 SGRXC
1 LDFGW, 2 VRHFB => 8 QHGQC
10 VGSBF, 5 WVMG, 6 BWLZ => 3 BWFK
4 KVFL, 1 TSVN => 6 SVCQ
2 VZBJ, 3 SWJZ => 3 QZLC
5 JMBG, 1 PQRLB => 3 CJLH
13 LKTWD, 6 TFPQ => 3 WVRXR
20 QHGQC, 10 NSPVD => 5 VGSBF
5 TFPQ, 1 DHRBP, 2 KVFL => 8 NLPB
2 KBFJV, 1 CJLH, 20 RNHQ, 1 BWLZ, 13 MNBK, 1 BHZH, 1 PKRJF => 8 RSRZ
154 ORE => 2 VRHFB
2 NHRCK => 7 DNVRJ
2 VRHFB, 4 XJWX => 4 NHRCK
1 TFPQ, 12 JMBG => 5 MNBK
8 TMFS => 2 VZMS
175 ORE => 2 TMFS
1 LBZN, 2 SWJZ, 3 VGSBF => 8 BLDN
7 KFJD, 5 WVRXR, 5 RJKJD => 6 MVGN
3 RJKJD, 1 TXCR => 8 KVFL
3 QHGQC, 1 MGQRZ, 10 VGSBF => 8 LKTWD
178 ORE => 1 XJWX
1 QBXC, 1 BWFK => 6 TSVN
1 NHRCK, 2 DHRBP => 4 VZBJ
1 LDFGW, 2 NHRCK, 10 BWLZ => 8 TWPMQ
28 TWPMQ => 4 RJKJD
10 SVCQ, 1 KVFL => 6 CZNMG
3 VZMS, 3 MGQRZ => 3 WVMG
19 MGQRZ => 8 KFJD
3 WVMG => 6 PQRLB
31 SVCQ, 1 TXCR => 8 VMDT
20 KFJD, 5 CPXDX, 2 BLDN, 2 PQWJX, 12 TFPQ, 2 BHZH, 2 MVGN => 9 SGPK
7 QZLC => 8 JMBG
1 PQRLB => 1 HWPND
9 VMDT, 5 CZNMG, 3 CPXDX, 1 MVGN, 8 VSMTK, 2 SGRXC, 1 MNBK, 8 LGWM => 7 GXSD
2 NSPVD => 8 QBVG
20 CZNMG => 4 PQWJX
1 LDFGW => 4 NSPVD
16 KBFJV, 22 BLDN => 2 VSMTK
10 BWLZ => 9 LBZN
1 BWLZ => 3 SWJZ
1 HWPND => 9 TXCR
12 CJLH, 9 LGWM, 3 BHZH => 6 PKRJF
5 BMNGX => 7 JKPFT