Data update

This commit is contained in:
Ingy döt Net 2024-10-16 18:07:41 -07:00
parent 81fd053722
commit 52a6ef48dd
10248 changed files with 63654 additions and 6775 deletions

View file

@ -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