Re: A style question
- From: "justinhj" <justinhj@xxxxxxxxx>
- Date: 28 Feb 2007 08:31:57 -0800
On Feb 28, 10:51 am, "justinhj" <justi...@xxxxxxxxx> wrote:
On Feb 27, 11:31 pm, job-271842...@xxxxxxxxxxxxxx wrote:
justinhj wrote:
(defun multiple(x n)
(= 0 (mod x n)))
(defun output-multiple(x n str)
(if (and (multiple x n) (princ str))
1
0))
(defun fizzbuzz(n)
(loop for x from 1 to n do
(if (> (+ (output-multiple x 3 "fizz") (output-multiple x 5
"buzz")) 0)
(format t "~%"))))
Hmm.. this doesn't seem to work.
[1]> (defun multiple(x n)
(= 0 (mod x n)))
MULTIPLE
[2]>
(defun output-multiple(x n str)
(if (and (multiple x n) (princ str))
1
0))
OUTPUT-MULTIPLE
[3]>
(defun fizzbuzz(n)
(loop for x from 1 to n do
(if (> (+ (output-multiple x 3 "fizz") (output-multiple x 5
"buzz")) 0)
(format t "~%"))))
FIZZBUZZ
[4]> (fizzbuzz 12)
fizz
buzz
fizz
fizz
buzz
fizz
NIL
[5]>
Unless I'm misunderstanding something what doesn't work? The output is
correct.
Justin
I'm not having much luck trying to make it elegant and concise but I
quite like this recursive version...
(defun fizzbuzz2(n)
(labels ((fizzbuzz-rec (current last fizz buzz)
(let ((output nil))
(if (= 0 fizz)
(push "fizz" output))
(if (= 0 buzz)
(push "buzz" output))
(if output
(format t "~{~a~}~%" output))
(unless (= current last)
(fizzbuzz-rec (1+ current) last (mod (1-
fizz) 3) (mod (1- buzz) 5))))))
(fizzbuzz-rec 1 n (1- 3) (1- 5))))
CL-USER> (fizzbuzz2 15)
fizz
buzz
fizz
fizz
buzz
fizz
buzzfizz
Justin
.
- Follow-Ups:
- Re: A style question
- From: justinhj
- Re: A style question
- References:
- A style question
- From: job-271842874
- Re: A style question
- From: job-271842874
- Re: A style question
- From: justinhj
- Re: A style question
- From: job-271842874
- Re: A style question
- From: justinhj
- A style question
- Prev by Date: Re: sexp-aware theory of patches and "meta common lisp"
- Next by Date: Re: sexp-aware theory of patches and "meta common lisp"
- Previous by thread: Re: A style question
- Next by thread: Re: A style question
- Index(es):
Relevant Pages
|