diff --git a/1/main.scm b/1/main.scm index 22d81c6..4ae932d 100644 --- a/1/main.scm +++ b/1/main.scm @@ -3,8 +3,6 @@ (scheme process-context) (scheme write)) -(include "../common.scm") - (define (direction->arithmetic direction) (cond ((char=? direction #\L) -) @@ -55,6 +53,6 @@ (+ zeros add-zeros (if (and (zero? dial) (negative? dial+-distance)) -1 0)) (read-line))))))))) -(for-each print (map part1 (command-line-arguments))) -(for-each print (map part2 (command-line-arguments))) +(for-each (lambda (s) (display s) (newline)) (map part1 (cdr (command-line)))) +(for-each (lambda (s) (display s) (newline)) (map part2 (cdr (command-line)))) diff --git a/2/main.scm b/2/main.scm index 90683dc..005c655 100644 --- a/2/main.scm +++ b/2/main.scm @@ -5,7 +5,20 @@ (scheme process-context) (scheme write)) -(include "../common.scm") +(define (string-split str delim?) + (let ((in (open-input-string str))) + (let loop ((acc '()) + (out (open-output-string))) + (let ((c (read-char in))) + (cond + ((eof-object? c) + (reverse (cons (get-output-string out) acc))) + ((delim? c) + (loop (cons (get-output-string out) acc) + (open-output-string))) + (else + (write-char c out) + (loop acc out))))))) (define powers-of-ten #(1 10 100 1000 10000 100000 1000000 10000000 100000000 1000000000 10000000000)) @@ -71,10 +84,5 @@ (newline)) (loop (cdr ranges) (+ sum (sumfn (string->number (caar ranges)) (string->number (cadar ranges))))))))) -(for-each (lambda (file) (part file sum-invalid-in-range-part1)) (command-line-arguments)) -(for-each (lambda (file) (part file sum-invalid-in-range-part2)) (command-line-arguments)) - - -;; (print (number->string (sum-invalid-in-range 11 22))) - -#;(for-each print (map part2 (command-line-arguments))) +(for-each (lambda (file) (part file sum-invalid-in-range-part1)) (cdr (command-line))) +(for-each (lambda (file) (part file sum-invalid-in-range-part2)) (cdr (command-line))) diff --git a/common.scm b/common.scm deleted file mode 100644 index e2a75d4..0000000 --- a/common.scm +++ /dev/null @@ -1,28 +0,0 @@ -;; Shitty print for convenience -(define (print . args) - (display (apply string-append args)) - (newline)) - -;; Chicken command-line-arguments for no reason at all -(define (command-line-arguments) - (cdr (command-line))) - -;; Guile string-split -(define (string-split str delim?) - (let ((in (open-input-string str))) - (let loop ((acc '()) - (out (open-output-string))) - (let ((c (read-char in))) - (cond - ((eof-object? c) - (reverse (cons (get-output-string out) acc))) - ((delim? c) - (loop (cons (get-output-string out) acc) - (open-output-string))) - (else - (write-char c out) - (loop acc out))))))) - -;; Reverse for-each, for convenience -(define (xfor-each1 lst fn) - (for-each fn lst))