diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..0f09989 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,10 @@ +# editorconfig.org +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/01a.lisp b/01a.lisp index dd36c91..ec0d754 100644 --- a/01a.lisp +++ b/01a.lisp @@ -1,24 +1,24 @@ (require :uiop) (defun split-instruction (s) - "Splits a string S into two parts at the given INDEX." + "Splits the given instruction into a pair" (cons (subseq s 0 1) (subseq s 1))) (defun turn-dial (dial instruction) - (let ((cons-instruction (split-instruction instruction))) - (let ((op (intern (car cons-instruction))) - (amount (parse-integer (cdr cons-instruction)))) - (mod - (funcall - (cond - ((eql 'L op) #'-) - ((eql 'R op) #'+) - (t (error "unknown op"))) - dial amount) - 100) - ) - )) + (let ((cons-instruction (split-instruction instruction))) + (let ((op (intern (car cons-instruction))) + (amount (parse-integer (cdr cons-instruction)))) + (mod + (funcall + (cond + ((eql 'L op) #'-) + ((eql 'R op) #'+) + (t (error "unknown op"))) + dial amount) + 100) + ) + )) ;; (turn-dial 50 "L68") ;; (turn-dial 82 "L30") @@ -27,10 +27,10 @@ (defun rec-dial-vm (accum dial lines) (let ((instruction (pop lines))) (if instruction - (let ((new-dial (turn-dial dial instruction))) - (if (= new-dial 0) - (rec-dial-vm accum new-dial lines) - (rec-dial-vm (+ 1 accum) new-dial lines))) + (let ((new-dial (turn-dial dial instruction))) + (if (= new-dial 0) + (rec-dial-vm accum new-dial lines) + (rec-dial-vm (+ 1 accum) new-dial lines))) accum))) (rec-dial-vm 0 50 (uiop:read-file-lines "01example.txt"))