メッセージ。 - 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を読んでみること。
遅ればせながら、ぼくも解いてみました。ぜぇぜぇ。
(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を読んでみること。
Comment
Trackback