「Fizzbuzz」の版間の差分

提供:GizmoLabs - だいたい CAD LISP なサイト
(ページの作成:「fizzbuzz 問題を AutoLISP でやってみる fizzbuzz 問題 * 1から順に1づつ増やした数字を表示する * 3で割り切れる時は "fizz" を表示 * 5...」)
 
編集の要約なし
 
(同じ利用者による、間の1版が非表示)
22行目: 22行目:
  (setq ct (1+ ct)))
  (setq ct (1+ ct)))
)
)
; カウントし続けて止まらないので esc で止めてね
</pre>
</pre>


27行目: 28行目:
* xとxで割り切れる+カウントアップ = 同じ数字だよね?
* xとxで割り切れる+カウントアップ = 同じ数字だよね?
ってことで足し算使いましたよw
ってことで足し算使いましたよw
[[Category:AutoLISP]]

2012年7月19日 (木) 23:15時点における最新版

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