d24
parent
a2d11e5688
commit
d11b94c403
@ -0,0 +1,43 @@
|
||||
#lang br/quicklang
|
||||
(require "../helper.rkt")
|
||||
(provide read-syntax (rename-out [#%mb #%module-begin]) ★ ★★)
|
||||
|
||||
(define (read-syntax path port)
|
||||
(define lines (port->lines port))
|
||||
(strip-context #`(module mod "main.rkt"
|
||||
#,@(for/list ([datum (in-port read (open-input-string (car lines)))])
|
||||
datum)
|
||||
#,@(map (λ (ln) (apply cons (map string->number (string-split ln "/")))) (cdr lines)))))
|
||||
|
||||
(define-macro (#%mb STARS DOMS ...)
|
||||
#'(#%module-begin
|
||||
(time (STARS '(DOMS ...)))))
|
||||
|
||||
(define (find-dominoes-with-val dominoes val)
|
||||
(filter (λ (d) (or (= (car d) val) (= (cdr d) val))) dominoes))
|
||||
|
||||
(define (other-val-on-domino dom val)
|
||||
((if (= (car dom) val) cdr car) dom))
|
||||
|
||||
(define (remove-dom doms dom)
|
||||
(filter-not (λ (d) (equal? d dom)) doms))
|
||||
|
||||
(define (bridges dominoes [current-val 0] [current-bridge null])
|
||||
(define doms (find-dominoes-with-val dominoes current-val))
|
||||
(if (null? doms)
|
||||
(list (flatten current-bridge))
|
||||
(append-map (λ (dom) (bridges (remove-dom dominoes dom)
|
||||
(other-val-on-domino dom current-val)
|
||||
(cons dom current-bridge))) doms)))
|
||||
|
||||
(define (strongest bridges)
|
||||
(apply max (map (λ (br) (apply + br)) bridges)))
|
||||
|
||||
(define (★ dominoes)
|
||||
(strongest (bridges dominoes)))
|
||||
|
||||
(define (★★ dominoes)
|
||||
(define brs (bridges dominoes))
|
||||
(define maxlen (apply max (map length brs)))
|
||||
(strongest (filter (λ (b) (= maxlen (length b))) brs)))
|
||||
|
@ -0,0 +1,58 @@
|
||||
#lang reader "main.rkt" ★ ; 1868
|
||||
25/13
|
||||
4/43
|
||||
42/42
|
||||
39/40
|
||||
17/18
|
||||
30/7
|
||||
12/12
|
||||
32/28
|
||||
9/28
|
||||
1/1
|
||||
16/7
|
||||
47/43
|
||||
34/16
|
||||
39/36
|
||||
6/4
|
||||
3/2
|
||||
10/49
|
||||
46/50
|
||||
18/25
|
||||
2/23
|
||||
3/21
|
||||
5/24
|
||||
46/26
|
||||
50/19
|
||||
26/41
|
||||
1/50
|
||||
47/41
|
||||
39/50
|
||||
12/14
|
||||
11/19
|
||||
28/2
|
||||
38/47
|
||||
5/5
|
||||
38/34
|
||||
39/39
|
||||
17/34
|
||||
42/16
|
||||
32/23
|
||||
13/21
|
||||
28/6
|
||||
6/20
|
||||
1/30
|
||||
44/21
|
||||
11/28
|
||||
14/17
|
||||
33/33
|
||||
17/43
|
||||
31/13
|
||||
11/21
|
||||
31/39
|
||||
0/9
|
||||
13/50
|
||||
10/14
|
||||
16/10
|
||||
3/24
|
||||
7/0
|
||||
50/50
|
@ -0,0 +1,58 @@
|
||||
#lang reader "main.rkt" ★★ ; 1841
|
||||
25/13
|
||||
4/43
|
||||
42/42
|
||||
39/40
|
||||
17/18
|
||||
30/7
|
||||
12/12
|
||||
32/28
|
||||
9/28
|
||||
1/1
|
||||
16/7
|
||||
47/43
|
||||
34/16
|
||||
39/36
|
||||
6/4
|
||||
3/2
|
||||
10/49
|
||||
46/50
|
||||
18/25
|
||||
2/23
|
||||
3/21
|
||||
5/24
|
||||
46/26
|
||||
50/19
|
||||
26/41
|
||||
1/50
|
||||
47/41
|
||||
39/50
|
||||
12/14
|
||||
11/19
|
||||
28/2
|
||||
38/47
|
||||
5/5
|
||||
38/34
|
||||
39/39
|
||||
17/34
|
||||
42/16
|
||||
32/23
|
||||
13/21
|
||||
28/6
|
||||
6/20
|
||||
1/30
|
||||
44/21
|
||||
11/28
|
||||
14/17
|
||||
33/33
|
||||
17/43
|
||||
31/13
|
||||
11/21
|
||||
31/39
|
||||
0/9
|
||||
13/50
|
||||
10/14
|
||||
16/10
|
||||
3/24
|
||||
7/0
|
||||
50/50
|
@ -0,0 +1,9 @@
|
||||
#lang reader "main.rkt" ★ ; 31
|
||||
0/2
|
||||
2/2
|
||||
2/3
|
||||
3/4
|
||||
3/5
|
||||
0/1
|
||||
10/1
|
||||
9/10
|
@ -0,0 +1,9 @@
|
||||
#lang reader "main.rkt" ★★ ; 19
|
||||
0/2
|
||||
2/2
|
||||
2/3
|
||||
3/4
|
||||
3/5
|
||||
0/1
|
||||
10/1
|
||||
9/10
|
Reference in New Issue