リスト作る系ループ関数でFizzBuzz【CommonLisp、Scheme、Clojure】

;CommonLisp (format t "~{~A~^~%~}~%" (loop fo […]

;CommonLisp (format t "~{~A~^~%~}~%" (loop fo […]

  • タグ:
  • タグはありません
;CommonLisp
(format t
	"~{~A~^~%~}~%"
	(loop for i from 1 to 100 collect
		(let (
			(isFizz (= 0 (mod i 3)))
			(isBuzz (= 0 (mod i 5))))
			(cond
				((and isFizz isBuzz)
					"Fizz Buzz")
				(isFizz
					"Fizz")
				(isBuzz
					"Buzz")
				(t
					i)))))
(quit)

;Scheme(sash)
(import (srfi 1))
(display
	(string-join
		(list-tabulate 100 (lambda(i)
			(let ((i (+ 1 i)))
			(let (
				(isFizz (= 0 (mod i 3)))
				(isBuzz (= 0 (mod i 5))))
				(cond
					((and isFizz isBuzz)
						"Fizz Buzz")
					(isFizz
						"Fizz")
					(isBuzz
						"Buzz")
					(else
						(number->string i)))))))
		"\n"))

;Clojure
(println
	(clojure.string/join
		"\n"
		(for[i (range 1 (inc 100))]
			(let [
				isFizz (= 0 (mod i 3))
				isBuzz (= 0 (mod i 5))]
				(cond
					(and isFizz isBuzz)
						"Fizz Buzz"
					isFizz
						"Fizz"
					isBuzz
						"Buzz"
					:else
						i)))))