僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
循環リストを使ったfizzbuzz。
まだまだ足りない(関数は一つで十分)が、
前より幾分ましになった。はず。
#!/usr/bin/env clisp (defparameter *print-circle* t) (setf fzlist '#1=(nil nil "fizz" nil "buzz" "fizz" nil nil "fizz" "buzz" nil "fizz" nil nil "fizzbuzz" . #1#)) (defun myfizzbuzz (mylist first last) (cond ((null (car mylist)) (princ first)) (t (princ (car mylist)))) (princ '#\newline)) (defun myfz (mylist first last) (cond ((null mylist) nil) ((> first last) nil) (t (myfizzbuzz mylist first last) (myfz (cdr mylist) (+ first 1) last)))) (myfz fzlist 1 100)
range()っぽいのを。
(defun add_left (first last) (cond ((eq first (+ last 1)) nil) (t (cons first (add_left (+ 1 first) last))))) (add_left 1 10) (1 2 3 4 5 6 7 8 9 10) (defun add_right (first last) (cond ((eq first (+ last 1)) nil) (t (cons last (add_right first (- last 1)))))) (add_right 1 10) (10 9 8 7 6 5 4 3 2 1)
だいぶましになった(つもり)。
#!/usr/bin/env clisp (defparameter *print-circle* t) (setf fzlist '#1=(nil nil "fizz" nil "buzz" "fizz" nil nil "fizz" "buzz" nil "fizz" nil nil "fizzbuzz" . #1#)) (defun myfizzbuzz (mylist first last) (cond ((null (car mylist)) (princ first)) (t (princ (car mylist)))) (cond ((eq first last) nil) (t (princ '#\newline) (myfizzbuzz (cdr mylist) (+ first 1) last)))) (myfizzbuzz fzlist 1 100)
ほぼ同じfizzbuzz。
#!/usr/bin/env gosh (define fzlist '#0=(#f #f "fizz" #f "buzz" "fizz" #f #f "fizz" "buzz" #f "fizz" #f #f "fizzbuzz" . #0#)) (define myfizzbuzz (lambda (mylist first last) (cond ((not (car mylist)) (print first)) (#t (print (car mylist)))) (cond ((eq? first last) #t) (#t (myfizzbuzz (cdr mylist) (+ first 1) last))))) (myfizzbuzz fzlist 1 100)
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。