昨日に引き続き CodeEval から。
(define slices (lambda (lis n) (let loop ((l1 lis) (l2 '())) (if (< (length l1) n) (reverse l2) (loop (cdr l1) (cons (take l1 n) l2)))))) (define sum (lambda (lis) (apply + lis))) (define solv (lambda (str) (let* ((s (string-split str ";")) (n (string->number (car s))) (lis (map string->number (string-split (cadr s) " ")))) (apply max (cons 0 (map sum (slices lis n))))))) (define print-solv (lambda (str) (print (solv str)))) (define main (lambda (args) (with-input-from-file (cadr args) (lambda () (port-for-each print-solv read-line)))))
takatoh@nightschool $ cat input.txt 5;7 -3 -10 4 2 8 -2 4 -5 -2 6;-4 3 -10 5 3 -7 -3 7 -6 3 3;-7 0 -45 34 -24 7 takatoh@nightschool $ gosh max_range_sum.scm input.txt 16 0 17