初めてのCommonLisp。とりあえずFizzBuzz
初めてCommonLispのプログラムを書きました。使っている処理系はCLISPのバージョン2.41です。
早くもloopの機能詰め込みっぷりに唖然。。。formatの書式もわけわかりません。Schemeのiotaっぽい関数がわからなくて自作しました(loopで書くのが一般的なのかな)。mapじゃなくてmapcarっていうのもはまりました。
; -*- compile-command: "C:/usr/clisp-2.41/clisp.exe a.l" -*- (defun iota (a m n) (if (< m n) a (iota (cons m a) (- m 1) n))) (defun fizzbuzz (n) (mapcar #'(lambda (i) (cond ((zerop (mod i 15)) "FizzBuzz") ((zerop (mod i 5)) "Buzz") ((zerop (mod i 3)) "Fizz") (t i))) (iota '() n 1))) (loop for s in (fizzbuzz 100) do (format t "~A~%" s)) ; => 1 ; 2 ; Fizz ; 4 ; Buzz ; Fizz ; ...
参照: http://www.yuasa.kuis.kyoto-u.ac.jp/~hiraisi/format-func.html