Comment detail
逆順になるあみだくじ (Nested Flatten)
同じアルゴリズムをモダンなSchemeっぽく書き直してみました。数値でループを回すならsrfi-42のcomprehensionが圧倒的に楽です。また、Schemeといえば再帰、ですが、実際のコードではmapやfoldなどの高階関数とかnamed letなどを使うことが圧倒的に多く、明示的な再帰はそんなに頻繁に出てきません(複雑な相互再帰とか、データ構造もツリーのように再帰的になっている場合など)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | (use srfi-42)
(define (bars n)
(define lim (- (* 2 n) 1))
(append-ec (: i 1 lim)
(: j (if (odd? i) 1 2) (+ i 1) 2)
(if (<= (+ i j) lim) `((,i . ,j)) '())))
(define (draw n bars)
(do-ec (: i (- (* 2 n) 1))
(: j 1 (+ n 1))
(format #t "|~a"
(cond [(= j n) "\n"]
[(member (cons i j) bars) "-"]
[else " "])))
)
(define (amida n) (draw n (bars n)))
|





rubikitch
#771()
[
Scheme
]
Rating0/0=0.00
Rating0/0=0.00-0+
1 reply [ reply ]