2008/03/13

[Lisp]lispはじめました

■ lispでfizzbuzz

HelloWorldをやったばかりだというのに、入門書片手にfizzbuzz問題に挑戦してみた。
(let
   (
      (fizz 3);let内で使える変数宣言
      (buzz 5);同上
   )
   (do
      (
         ( num 1 ( + num 1) )
         ;do内で使う変数宣言
         ;(変数名 初期値 1回のループの終わりに行う処理)
         ;複数個の宣言もできるらしい
      )
      ( ( > num 100) nil );終了条件とdoの戻り値
      (if ( equalp 0 (mod num fizz) )
         ;(if (条件式) (trueなら) (falseなら))
         ;(mod a b)でaをbで割ったときの剰余
         (if ( equalp 0 ( mod num buzz) )
            ( print 'fizzbuzz );3で割りきれて5でも割りきれるならfizzbuzz
            ( print 'fizz );3で割り切れて5で割り切れないならfizz
         )
         
         (if ( equalp 0 (mod num buzz) )
            ( print 'buzz );3で割り切れないけど5で割り切れるならbuzz
            ( print num );3,5どっちでも割り切れないなら数値をそのまま表示
         )
      )
   )
)
できているはず、多分。
しかしまぁ、初めての言語ってむず痒いね。