28 lines
503 B
Text
28 lines
503 B
Text
def print { file/stdout file/write }
|
|
def when { [] if }
|
|
def keep { over [call] dip }
|
|
def bi { [keep] dip call }
|
|
|
|
def times {
|
|
if: over 0 =
|
|
[drop drop]
|
|
[swap over >r >r call r> 1 - r> times];
|
|
}
|
|
|
|
def fizzbuzz? { [3 % 0 =] [5 % 0 =] bi or }
|
|
def fizz { when: 3 % 0 = ["Fizz" print]; }
|
|
def buzz { when: 5 % 0 = ["Buzz" print]; }
|
|
|
|
def fizzbuzz1 {
|
|
if: fizzbuzz?
|
|
[ [fizz] keep buzz "\n" print ]
|
|
[ . ];
|
|
}
|
|
|
|
def fizzbuzz {
|
|
0 swap times:
|
|
[ 1 + dup [fizzbuzz1] keep ];
|
|
drop
|
|
}
|
|
|
|
30 fizzbuzz
|