6 - 7 × 8 + 9
を Gforth 上で計算せよ。
6 7 8 * - 9 +
2SWAP
ワードのスタック表記を示せ。
( x1 x2 x3 x4 -- x3 x4 x1 x2 )
- スタック上の
x, y
をポップし、y × 2 + x
をプッシュするワードword2-3
を定義せよ。
: word2-3 ( n1 n2 -- n3 ) * + ;
- スタック上の
x, y
をポップし、x mod 3 - y / 4
をプッシュするワードword2-4
を定義せよ。
解答例1:
: word2-4 ( n1 n2 -- n3 ) SWAP 3 MOD SWAP 4 / - ;
解答例2:
: word2-4 ( n1 n2 -- n3 ) -4 / SWAP 3 MOD + ;
NIP
ワードと同じ挙動のワードword2-5
を定義せよ。ただし、定義に「NIP
ワードの呼び出し」を含めてはいけない。
: word2-5 ( x1 x2 -- x2 ) SWAP DROP ;
- データスタックに積んだ 1 セル整数の回数だけ、FizzBuzz を実行するワードを定義せよ。
- フィボナッチ数を求めるワード
fib ( n1 -- n2 )
を定義せよ。
: fib ( n1 -- n2 )
CASE
0 OF 0 ENDOF
1 OF 1 ENDOF
0 1 ROT 0 DO 2DUP + ROT DROP LOOP
ENDCASE
;
- リターンスタック操作のワードを利用して、
OVER
ワードを実装せよ。
: OVER >R DUP R> SWAP ;