aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-328/hvukman/f#/328_p1.fs12
1 files changed, 12 insertions, 0 deletions
diff --git a/challenge-328/hvukman/f#/328_p1.fs b/challenge-328/hvukman/f#/328_p1.fs
new file mode 100644
index 0000000000..7c1ce7d3f7
--- /dev/null
+++ b/challenge-328/hvukman/f#/328_p1.fs
@@ -0,0 +1,12 @@
+open System
+let example = "a?z"
+let rnd = new Random()
+
+// choose random a-z
+let rnd_char = ['a' .. 'z'].[rnd.Next(0, 25) ]
+
+// tailcall rec newchar; if n=x repeat newchar with new randomchar
+[<TailCall>]
+let rec newchar n x = if n=x then newchar rnd_char x else printfn "%c" n
+// iterate over string
+String.iter (fun x -> if x <> '?' then printfn "%c" x else newchar rnd_char x) example