Comment detail

タブ区切りデータの処理 (Nested Flatten)
なんだか書き捨てって感じになってしまいました(^^;
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
(defpackage :doukaku-209 (:use :cl :split-sequence))
(in-package :doukaku-209)

(defun parse-integer-or-never (string &key (after #'values))
  (let ((num (parse-integer string :junk-allowed 'T)))
    (if num (funcall after num) string)))

(with-open-file (in "doukaku-209.data")
  (with-open-file (out "doukaku-209.out" :direction :output :if-exists :supersede)
    (format out "~{~{~A~^    ~}~%~}"
            (destructuring-bind (title &rest data)          
                (loop :for (id sur fore age) :=  (split-sequence #\Tab (read-line in nil nil)) 
                      :while (and id sur fore age)
                      :collect (list (parse-integer-or-never id) 
                                     fore 
                                     sur 
                                     (parse-integer-or-never age :after #'1+)))
              `(,title ,@(sort data #'< :key #'first))))))

Index

Feed

Other

Link

Pathtraq

loading...