横向きのピラミッドを作る

最近ちょくちょくSchemeの勉強してます。

Schemeって美しいよなぁ。

実用的なコードはまだ全然書けませんが・・・

ちょっと遊んでみようと思って、

LL Golf Hole 8 – 横向きのピラミッドを作るどう書く?org

http://ja.doukaku.org/203/

を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) というリストを作成してから、

(“*” “**” “***” “****” “*****” “****” “***” “**” “*”)

のリストに変換して表示。

*
**
***
****
*****
****
***
**
*

一応大丈夫っぽい。

ただ、この後、解答例見て何個か意味不明で萎える。

・・・少しずつ慣れていこう。