day 1, part 2 (works now)

main
Inga 🏳‍🌈 1 year ago
parent 5ed8b1729e
commit 8963e32886
  1. 58
      day01-hard/main.scm
  2. 7
      day01-hard/sample2.in

@ -15,6 +15,8 @@
(display "\n"))
'()))
(define (tee value) (car (list value (display value) (display "\n"))))
(define (id value) value)
(define (is-not value) (lambda (x) (not (= x value))))
(define is-not-empty (lambda (x) (not (null? x))))
@ -106,7 +108,7 @@
(starts-with (string->list "abc") (string->list "abcd")))
;=============== tokenize ======================
(define (tokenize tokens) (Y
(define (tokenize-generic tokens next) (Y
(lambda (f) (lambda (values)
(if
(null? values)
@ -122,13 +124,16 @@
((map
(lambda (rest-tokenized)
(cons (car token) rest-tokenized)))
(f rest))
(f (next rest values)))
#f))
(starts-with (cdr token) values))))
tokens)))
(f (cdr values))
'((77 78) (79 76)))))))))
(define (tokenize tokens)
(tokenize-generic tokens (lambda (rest values) rest)))
(assert-eq "tokenize test 1 failed"
'((101 201) (101 202) (102 201) (102 202))
((tokenize '((101 1) (102 1) (201 2) (202 2)))
@ -144,6 +149,8 @@
((tokenize '((101 1) (102 2) (1012 1 2) (1021 2 1)))
'(1 2 1)))
(define (tokenize-aoc tokens)
(tokenize-generic tokens (lambda (rest values) (cdr values))))
;=============== solution ======================
(define solution-tokens
(list
@ -168,34 +175,53 @@
(cons #\9 (string->list "nine"))))
(assert-eq "solution tokenize test 1 failed"
'((2 1 9))
((tokenize solution-tokens)
(list (string->list "219"))
((tokenize-aoc solution-tokens)
(string->list "two1nine")))
(assert-eq "solution tokenize test 2 failed"
'((8 2 3))
((tokenize solution-tokens)
(list (string->list "823"))
((tokenize-aoc solution-tokens)
(string->list "eightwothree")))
(assert-eq "solution tokenize test 3 failed"
(list (string->list "123"))
((tokenize-aoc solution-tokens)
(string->list "abcone2threexyz")))
(assert-eq "solution tokenize test 4 failed"
(list (string->list "2134"))
((tokenize-aoc solution-tokens)
(string->list "xtwone3four")))
(assert-eq "solution tokenize test 5 failed"
(list (string->list "49872"))
((tokenize-aoc solution-tokens)
(string->list "4nineeightseven2")))
(assert-eq "solution tokenize test 6 failed"
(list (string->list "18234"))
((tokenize-aoc solution-tokens)
(string->list "zoneight234")))
(assert-eq "solution tokenize test 7 failed"
(list (string->list "76"))
((tokenize-aoc solution-tokens)
(string->list "7pqrstsixteen")))
(define solve-line (compose (list
string->number
list->string
(reduce-right
(combine (lambda (left right) (cons (car left) (cdr right))))
'())
(map (lambda (char) (if (char-numeric? char) ((repeat char) 2) '())))
(map (lambda (char) ((repeat char) 2)))
car
(tokenize-aoc solution-tokens)
string->list)))
(define solve-all (compose (list
sum
(map solve-line))))
#!(display (solve-all (read-lines)))!#
#!(display (starts-with (list 5 6 7) (list 5 6)))!#
#!(display ((filter (isnot 5)) (list 3 4 5 6 7)))!#
#!(display (flat (list (list 1 2 3) (list 4 5 6) (list 7 8))))!#
#!(assert-eq "mew" (list 1 2 (list 3 4)) (list 1 2 (list 3 4)))!#
(display (solve-all (read-lines)))

@ -0,0 +1,7 @@
two1nine
eightwothree
abcone2threexyz
xtwone3four
4nineeightseven2
zoneight234
7pqrstsixteen
Loading…
Cancel
Save