トップ «前の日記(2013-04-29(Mon)) 最新 次の日記(2013-05-03(Fri))» 編集

屑俺日記

僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。


2013-05-02(Thu) 晴れてるけど、涼しい

clispで書いてなかった

ので書いてみた。
Scheme のとあまり変らないけど。

#!/usr/bin/env clisp
(setf *print-circle* t)
(setq  fizz '#1=(nil nil "fizz" . #1#))
(setq buzz '#1=(nil nil nil nil "buzz" . #1#))
 
(defun fizzbuzz (first last fi bu)
  (cond
   ((eq (car bu) (car fi)) (princ first)))
  (cond
   ((car fi) (princ (car fi))))
  (cond
   ((car bu) (princ (car bu))))
  (princ '#\newline)
  (or
   (eq first last)
   (fizzbuzz (+ first 1) last
             (cdr fi) (cdr bu))))
 
(fizzbuzz 1 100 fizz buzz)

末尾を、(fizzbuzz 1000 100 fizz buzz) で実行してみた。
すると、

fizzbuzz
6310
6311
fizz
6313
 
*** - Program stack overflow. RESET

(eq first last) より (> (+ 1 first) last) とかの方が安全かも。

first は (+ (* 15 n) 1) にしないと、ちゃんとした fizzbuzzにならないことに、今気づいた。

[70]> (fizzbuzz 5 20 fizz buzz)
5
6
fizz
8
buzz
fizz
11
12
fizz
buzz
15
fizz
17
18
fizzbuzz
20
T

対策は後で。


リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。

index.htmlは ここから。