Puzzle

SchemeでFizzBuzz

まずは普通に。ちなみにこれは電車の中でPocket Schemeを使って書きました。 #!/usr/bin/gosh (define (fizzbuzz) (let loop ((i 1) (r ())) (if (> i 100) (reverse! r) (loop (+ i 1) (cons (cond ((zero? (modulo i 15)) "FizzBuzz") ((zero? (modulo i 3…

FizzBuzz

$ perl -le'print(($_%3?"":"Fizz").($_%5?"":"Buzz")||$_)for 1..100' # 64bytesあんまり短くならないなあ。 $ perl -le'print((("."x$_)=~/^(.{3})*$/&&"Fizz").(("."x$_)=~/^(.{5})*$/&&"Buzz")||$_)for 1..100' $ seq 100 | perl -pe's{^(?:([147]5|[369…

自分自身を表示するプログラム

よくC言語のパズルで取り上げられる題材(自己言及的プログラム、自己再生プログラムとも呼ばれる)。Lispだと特に技巧的なことは必要なくて、 (defun self-print () (append (list 'defun 'self-print) (cdr (symbol-function 'self-print)))) のようにごく普…