メッセージ。 - AA折れ線グラフ

# AA折れ線グラフ

OSS WEB|column|今日の一行|2006年3月

遅ればせながら、ぼくも解いてみました。ぜぇぜぇ。

(define (plot istring)
  (receive (nlist nlmax nlmin)
      (let loop ((cl (string->list istring)) (curr 0)
                 (cmax 0) (cmin 0)
                 (out '()))
        (if (null? cl)
            (values (reverse out) cmax cmin)
            (case (car cl)
              ((#\R) (loop (cdr cl) (+ curr 1)
                           (max cmax curr) (min cmin curr)
                           (cons (cons curr #\/) out)))
              ((#\F) (loop (cdr cl) (- curr 1)
                           (max cmax curr) (min cmin curr)
                           (cons (cons (- curr 1) #\\) out)))
              (else (loop (cdr cl) curr cmax cmin
                          (cons (cons curr #\_) out))))))
    (let yloop ((yaxis nlmax))
      (when (>= yaxis nlmin)
        (let xloop ((xaxis 0) (nlist nlist))
          (if (null? nlist)
              (begin (display "\n") (yloop (- yaxis 1)))
              (begin (display (if (= (car (car nlist)) yaxis)
                                  (cdr (car nlist))
                                  #\ ))
                     (xloop (+ xaxis 1) (cdr nlist)))))))))

力技が好きです。でも象さんのほうがもーっと好きです☆

TODO: リファレンスマニュアルのgauche.sequenceを読んでみること。
2006-03-17 22:00:36 / ふじさわ / Comment: 0 / Trackback: 0

Comment

コメント投稿機能は無効化されています。

Trackback

TrackBack投稿機能は無効化されています。