From e47de8355dca82953a77618af636524feef361dd Mon Sep 17 00:00:00 2001 From: seth Date: Wed, 16 Aug 2023 08:58:40 -0400 Subject: misc: add fizzbuzz --- misc/fizzbuzz.nix | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 misc/fizzbuzz.nix (limited to 'misc/fizzbuzz.nix') diff --git a/misc/fizzbuzz.nix b/misc/fizzbuzz.nix new file mode 100644 index 0000000..8306bd1 --- /dev/null +++ b/misc/fizzbuzz.nix @@ -0,0 +1,27 @@ +max: let + inherit (builtins) concatStringsSep filter isString map toString; + + mod = num: denom: num / denom * denom == num; + + results = { + "15" = "fizzbuzz"; + "3" = "fizz"; + "5" = "buzz"; + }; + + fizzbuzz = num: let + a = filter isString (map (d: + if mod num d + then results.${toString d} + else d) [15 3 5]); + in + if a == [] + then toString num + else builtins.elemAt a 0; + + generate = i: max: + if i == max + then ["${fizzbuzz i}\n"] + else [(fizzbuzz i)] ++ (generate (i + 1) max); +in + concatStringsSep "\n" (generate 1 max) -- cgit v1.2.3