僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
できたのは昨日(数分前)だったが、submitした途端 滅茶滅茶になったので、一日ずらして書き直す。
以前、
配列を使ったことがあったが、循環リストなら折り返す
処理が要らなくなると踏んで試す。
循環リストの作り方が間違っていたことと、
改行の処理に迷ったところが嵌りどころだった。
#!/usr/bin/env clisp (defparameter *print-circle* t) (setf fzlist '("fizzbuzz" 1 1 "fizz" 1 "buzz" "fizz" 1 1 "fizz" "buzz" 1 "fizz" 1 1 1)) (setf (cdr (cdr (cdr (cdr (cdr (cdr (cdr (cdr (cdr (cdr (cdr (cdr (cdr (cdr (cdr fzlist) )))))))))))))) fzlist) (defun myfb (mylist num) (cond ((< num 0) nil) ((zerop num) (car mylist)) (t (myfb (cdr mylist) (- num 1))))) (defun fb (newlist first last) (cond ((> first last) nil) ((eq (myfb fzlist first) 1) (princ first) (princ '#\newline) (fb newlist (+ 1 first) last)) (t (princ (myfb fzlist first)) (princ '#\newline) (fb newlist (+ 1 first) last)))) (fb fzlist 1 100)
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。