40 lines
914 B
Plaintext
40 lines
914 B
Plaintext
!yamlscript/v0
|
|
|
|
defn main(count=100 impl=1):
|
|
:: |
|
|
Invoke one of the FizzBuzz implementations below.
|
|
|
|
usage: ys fizzbuzz.ys [<count> [<implementation-number>]]
|
|
|
|
fizzbuzz =: "fizzbuzz-$impl"
|
|
say: "Running function '$fizzbuzz' with count=$count"
|
|
mapv say:
|
|
call fizzbuzz: count
|
|
|
|
defn fizzbuzz-1(n):
|
|
:: Implementation 1 - with 'map'
|
|
map _ (1 .. n):
|
|
fn(x):
|
|
cond:
|
|
zero?(x % 15) : 'FizzBuzz'
|
|
zero?(x % 5) : 'Buzz'
|
|
zero?(x % 3) : 'Fizz'
|
|
else : x
|
|
|
|
defn fizzbuzz-2(n):
|
|
:: Implementation 2 - with 'loop'
|
|
loop i 1, l []:
|
|
if i <= n:
|
|
recur i.++:
|
|
conj l:
|
|
condp eq 0:
|
|
i % 15 :: FizzBuzz
|
|
i % 5 :: Buzz
|
|
i % 3 :: Fizz
|
|
else : i
|
|
else: l
|
|
|
|
defn fizzbuzz-3(n):
|
|
:: Implementation 3 - with 'for'
|
|
for x (1 .. n): str(((x % 3).! &&& 'Fizz') ((x % 5).! &&& 'Buzz')) ||| x
|