Comment detail

変形Fizz-Buzz問題 (Nested Flatten)
Forth でFizzBuzzしてみました。数字の後にスペースが入ってしまってしまうのは仕様です。
Not Equal使っているので微妙ですが、全部スタックなのでご容赦願います。

pForthでの実行結果:
> 20 FizzBuzz
1 :hoge
2 :hoge
3 :Fizz
4 :hoge
5 :Buzz
6 :Fizz
7 :hoge
8 :hoge
9 :Fizz
10 :Buzz
11 :hoge
12 :Fizz
13 :hoge
14 :hoge
15 :FizzBuzz
16 :hoge
17 :hoge
18 :Fizz
19 :hoge
20 :Buzz
1
2
3
4
5
6
7
8
: FizzBuzz ( n -- )
1 + 1 DO
  I DUP . ." :" 
  DUP 3 mod 0 = IF ." Fizz" THEN
  DUP 5 mod 0 = IF ." Buzz" THEN
  DUP 3 mod 0 <> IF DUP 5 mod 0 <> IF ." hoge" THEN THEN
  CR
LOOP ;

前のコードでは、スタックにゴミが残ってたりIF文が重なってたりと、微妙だったので修正版を。 出力結果は同じです。

1
2
3
4
5
6
7
8
: FizzBuzz ( n -- )
1 + 1 DO
  I DUP . ." :" 
  DUP 3 MOD 0 = IF ." Fizz" THEN
  DUP 5 MOD 0 = IF ." Buzz" THEN
  DUP 3 MOD 0 <> SWAP 5 MOD 0 <> AND IF ." hoge" THEN
  CR
LOOP ;

Index

Feed

Other

Link

Pathtraq

loading...