さくらんぼのlambda日記

lambdaちっくなことからゲーム開発までいろいろ書きます。

Lispで色々問題解いてみよう!

この記事に載っている問題をcommon lispで解いてみるプロジェクト。

なんらかのカウントアップメッセージを1から100まで出すけど、3のときだけアホになる!(例:1万円!2万円!しゃ〜ん万円!とか)

やり方はいくらでもありそうだけど
loopマクロの使い方を覚え直したかったのでloopで。

3が関係するとみゃ〜んえ〜んと頭悪くなる仕様。

(loop for i from 1 to 100 by 1
      if (or (= 0 (mod i 3)) (cl-ppcre:scan "3" (write-to-string i)))
      do (format t "~aみゃ〜んえ〜ん~%" i)
      else do  (format t "~a万円~%" i)
      )

メールアドレスを入れるとあらかじめ用意されたテンプレートファイルにそのメアドを埋め込んだ上でメール送信。

順番は関係なく7番が気になったので先に解いてみる。

Common Lispだと面倒臭そうだなぁと思って
Clikiで検索してみるとcl-smtpなる物を発見。
使ってみる

(cl-smtp:send-email "ホスト名"  "from" "to" "subject" "message" 
:port ポート  :authentication '(:login "ユーザー名" "パスワード"))

コレだけでメールを送る事ができる。
便利。

7の問題を特にはあとは適当にテンプレートメッセージを作ればおk。