「Fizzbuzz」の版間の差分
(ページの作成:「fizzbuzz 問題を AutoLISP でやってみる fizzbuzz 問題 * 1から順に1づつ増やした数字を表示する * 3で割り切れる時は "fizz" を表示 * 5...」) |
細編集の要約なし |
||
22行目: | 22行目: | ||
(setq ct (1+ ct))) | (setq ct (1+ ct))) | ||
) | ) | ||
; カウントし続けて止まらないので esc で止めてね | |||
</pre> | </pre> | ||
2012年7月19日 (木) 23:08時点における版
fizzbuzz 問題を AutoLISP でやってみる
fizzbuzz 問題
- 1から順に1づつ増やした数字を表示する
- 3で割り切れる時は "fizz" を表示
- 5で割り切れる時は "buzz" を表示
- 3と5の両方で割り切れる時は "fizz buzz" を表示
- (但し、プログラムの中に剰余関数を使わない事)
最後の剰余関数使わない事っていうのはあったりなかったりするみたいです。 で、使わない方法で素直めに書いてみたのが下のやつ。
(defun fizzbuzz (/ ct ct3 ct5) (setq ct 1 ct3 3 ct5 5) (while (princ (strcat "\n" (cond ((= ct ct3 ct5) (progn (setq ct3 (+ 3 ct3) ct5 (+ 5 ct5)) '"fizz buzz")) ((= ct ct3) (progn (setq ct3 (+ 3 ct3)) '"fizz")) ((= ct ct5) (progn (setq ct5 (+ 5 ct5)) '"buzz")) (T (itoa ct)) ))) (setq ct (1+ ct))) ) ; カウントし続けて止まらないので esc で止めてね
- xで割り切れる = xの倍数だよね?
- xとxで割り切れる+カウントアップ = 同じ数字だよね?
ってことで足し算使いましたよw