(import (chezscheme)) ; Where the magic happens (import (lib)) ; My quick-and-dirty unit testing framework (copied for each day) (define (run-test name proc input expected) (let ((result (proc input))) (if (equal? result expected) (printf "\x1b;[32;1mPASS\x1b;[0m: ~a\n" name) (printf "\x1b;[31;1mFAIL\x1b;[0m: ~a: got ~a, expected ~a\n" name result expected)))) ; I've disabled part 1's test because it uses a 5-element list ; instead of 256 elements like the main problem and part 2, and ; I'm too lazy to structure my code properly to deal with that. ;(printf "Part 1 tests:\n") ;(define (test-part1 name input expected) ; (run-test name solve-part1 input expected)) ;(test-part1 "part 1 example 1" ; "3,4,1,5" 12) (printf "Part 2 tests:\n") (define (test-part2 name input expected) (run-test name solve-part2 input expected)) (test-part2 "part 2 example 1" "" "a2582a3a0e66e6e86e3812dcb672a272") (test-part2 "part 2 example 2" "AoC 2017" "33efeb34ea91902bb2f59c9920caa6cd") (test-part2 "part 2 example 3" "1,2,3" "3efbe78a8d82f29979031a4aa0b16a9d") (test-part2 "part 2 example 4" "1,2,4" "63960835bcdc130f0b66d7ff4f6a5a8e")