From bc5f33df4d6dfb5b32bce814e4fd672097661522 Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Thu, 1 Dec 2016 00:13:19 -0800 Subject: [PATCH] day01,p1 --- 2016/day01-test.rkt | 2 ++ 2016/day01.rkt | 33 +++++++++++++++++++++++++++++++++ info.rkt | 2 +- 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 2016/day01-test.rkt create mode 100644 2016/day01.rkt diff --git a/2016/day01-test.rkt b/2016/day01-test.rkt new file mode 100644 index 0000000..54424d9 --- /dev/null +++ b/2016/day01-test.rkt @@ -0,0 +1,2 @@ +#lang aoc-racket/2016/day01 +R4, R5, L5, L5, L3, R2, R1, R1, L5, R5, R2, L1, L3, L4, R3, L1, L1, R2, R3, R3, R1, L3, L5, R3, R1, L1, R1, R2, L1, L4, L5, R4, R2, L192, R5, L2, R53, R1, L5, R73, R5, L5, R186, L3, L2, R1, R3, L3, L3, R1, L4, L2, R3, L5, R4, R3, R1, L1, R5, R2, R1, R1, R1, R3, R2, L1, R5, R1, L5, R2, L2, L4, R3, L1, R4, L5, R4, R3, L5, L3, R4, R2, L5, L5, R2, R3, R5, R4, R2, R1, L1, L5, L2, L3, L4, L5, L4, L5, L1, R3, R4, R5, R3, L5, L4, L3, L1, L4, R2, R5, R5, R4, L2, L4, R3, R1, L2, R5, L5, R1, R1, L1, L5, L5, L2, L1, R5, R2, L4, L1, R4, R3, L3, R1, R5, L1, L4, R2, L3, R5, R3, R1, L3 \ No newline at end of file diff --git a/2016/day01.rkt b/2016/day01.rkt new file mode 100644 index 0000000..c51ee77 --- /dev/null +++ b/2016/day01.rkt @@ -0,0 +1,33 @@ +#lang br/quicklang +(require racket/file) +(module+ reader + (provide read-syntax) + (define (read-syntax path port) + (strip-bindings + #`(module day01-mod "day01.rkt" + #,@(for/list ([t (in-list (string-split (port->string port) ", "))]) + `(turn ,@(string-split (string-trim t) #px"(?<=[LR])"))))))) + +(define-macro (mb . TURNS) + #'(#%module-begin + (solve . TURNS))) +(provide (rename-out [mb #%module-begin])) + +(define (solve . turns) + (define loc + (let loop ([loc 0] + [dir 1] + [turns turns]) + (if (empty? turns) + loc + (let* ([turn (car turns)] + [rotation (car turn)] + [dist (cdr turn)] + [new-dir (* dir rotation)]) + (loop (+ loc (* new-dir dist)) new-dir (cdr turns)))))) + (+ (abs (imag-part loc)) (abs (real-part loc)))) + +(define-macro-cases turn + [(turn "L" DIST) #'(cons +i (string->number DIST))] + [(turn "R" DIST) #'(cons -i (string->number DIST))]) +(provide turn) \ No newline at end of file diff --git a/info.rkt b/info.rkt index 4765c39..57f6543 100644 --- a/info.rkt +++ b/info.rkt @@ -1,6 +1,6 @@ #lang info (define collection "aoc-racket") (define scribblings '(("aoc-racket.scrbl" (multi-page)))) -(define deps '("base" "scribble-lib" "sugar" "rackunit-lib" "math-lib")) +(define deps '("base" "scribble-lib" "sugar" "rackunit-lib" "math-lib" "beautiful-racket-lib")) (define test-omit-paths (list #rx"rkt$")) (define build-deps '("rackunit-lib" "racket-doc" "scribble-doc" "rackunit-doc" "at-exp-lib" "math-doc")) \ No newline at end of file