最近ちょくちょくSchemeの勉強してます。
Schemeって美しいよなぁ。
実用的なコードはまだ全然書けませんが・・・
ちょっと遊んでみようと思って、
LL Golf Hole 8 – 横向きのピラミッドを作るどう書く?org
をSchemeでやってみた。
(use srfi-1) (define (pyramid n) (if (> n 0) (for-each print (map (lambda (x) (make-string x #\*)) (append (iota n 1) (iota (- n 1) (- n 1) -1))))))
Scheme文化にまだ馴染んでない為、変なことしてる可能性大。
(pyramid 5)
の場合なら、
(1 2 3 4 5 4 3 2 1) というリストを作成してから、
(“*” “**” “***” “****” “*****” “****” “***” “**” “*”)
のリストに変換して表示。
* ** *** **** ***** **** *** ** *
一応大丈夫っぽい。
ただ、この後、解答例見て何個か意味不明で萎える。
・・・少しずつ慣れていこう。