Data update
This commit is contained in:
parent
81fd053722
commit
52a6ef48dd
10248 changed files with 63654 additions and 6775 deletions
|
|
@ -1,55 +1,39 @@
|
|||
#!/usr/bin/env ys-0
|
||||
|
||||
# This program has multiple implementations of "fizzbuzz".
|
||||
|
||||
# usage: yamlscript fizzbuzz.ys [<count>] [<fizzbuzz-fn-#>]
|
||||
|
||||
# The main function runs a certain requested fizzbuzz implementation function
|
||||
# for a certain requested number (default is 100).
|
||||
!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"
|
||||
|
||||
when-not ENV.'YS_TEST':
|
||||
say: "Running function '$fizzbuzz' with count=$count"
|
||||
|
||||
function =: resolve(fizzbuzz.symbol())
|
||||
result =: function(count)
|
||||
|
||||
mapv say: result
|
||||
|
||||
|
||||
# These implementation functions were adapted from
|
||||
# https://rosettacode.org/wiki/FizzBuzz#Clojure
|
||||
say: "Running function '$fizzbuzz' with count=$count"
|
||||
mapv say:
|
||||
call fizzbuzz: count
|
||||
|
||||
defn fizzbuzz-1(n):
|
||||
map:
|
||||
:: Implementation 1 - with 'map'
|
||||
map _ (1 .. n):
|
||||
fn(x):
|
||||
cond:
|
||||
zero?(x % 15): 'FizzBuzz'
|
||||
zero?(x % 5): 'Buzz'
|
||||
zero?(x % 3): 'Fizz'
|
||||
=>: x
|
||||
=>: 1 .. n
|
||||
zero?(x % 15) : 'FizzBuzz'
|
||||
zero?(x % 5) : 'Buzz'
|
||||
zero?(x % 3) : 'Fizz'
|
||||
else : x
|
||||
|
||||
defn fizzbuzz-2(n):
|
||||
loop [i 1, l []]:
|
||||
if (i > n):
|
||||
=>: l
|
||||
recur inc(i):
|
||||
:: Implementation 2 - with 'loop'
|
||||
loop i 1, l []:
|
||||
if i <= n:
|
||||
recur i.++:
|
||||
conj l:
|
||||
cond:
|
||||
zero?(i % 15): 'FizzBuzz'
|
||||
zero?(i % 5): 'Buzz'
|
||||
zero?(i % 3): 'Fizz'
|
||||
=>: i
|
||||
condp eq 0:
|
||||
i % 15 :: FizzBuzz
|
||||
i % 5 :: Buzz
|
||||
i % 3 :: Fizz
|
||||
else : i
|
||||
else: l
|
||||
|
||||
defn fizzbuzz-3(n):
|
||||
map:
|
||||
fn(x):
|
||||
s =:
|
||||
str:
|
||||
when zero?(x % 3): 'Fizz'
|
||||
=>: (zero?(x % 5) && 'Buzz') || nil
|
||||
if empty?(s): x s
|
||||
rng: 1 n
|
||||
:: Implementation 3 - with 'for'
|
||||
for x (1 .. n): str(((x % 3).! &&& 'Fizz') ((x % 5).! &&& 'Buzz')) ||| x
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue