Browse Source

Cleaned up WetPancake library code.

Test Centre was not touched in this pass.
master
Craig Oates 6 years ago
parent
commit
b939af66e2
  1. 30
      WetPancake/DataServices.fs
  2. 9
      WetPancake/ProductServices.fs
  3. 15
      WetPancake/SystemServices.fs

30
WetPancake/DataServices.fs

@ -8,7 +8,7 @@
let rec GenerateMarkovChain (map: Map<string, string List>) (state:string) chain =
if map.ContainsKey state then
let nextChoice = map.[state] |> PickNextWord
let nextChoice = map.[state] |> PickRandomItem
if MatchText @"\." nextChoice then nextChoice :: chain
else
let currentWords =
@ -26,34 +26,18 @@
|> List.rev
|> ConcatToString
(* Thread.Sleep is needed for a new random number to generate.
Without it, the same sentence tends to repeat itself.
When debugging (I.E. the observer effect),
enough time passes for a new random number to generate --
meaning a new seed or "start word" for each sentence.
This isn't ideal but needed so please be careful when attempting to remove this line. *)
let GenerateMarkovText noOfSentences map =
let startWords = fst(SeperateStartWords map)
let result =
seq {
for i in 1 .. noOfSentences do
(*Thread.Sleep is needed for a new random number to generate.
Without it, the same sentence tends to repeat itself.
When debugging (I.E. the observer effect),
enough time passes for a new random number to generate --
meaning a new seed or "start word" for each sentence.
This isn't ideal but needed so please be careful when attempting to
remove this line.*)
Thread.Sleep(100)
yield GenerateMarkovSentence map (PickRandomItem startWords).Key
}
result |> ConcatToString
(*
YOU ARE UP TO HERE!
My hunch is I need to validate the startwords collection.
If the startwords is empty, the key generated from it will not be found in the map of possible results to append on to the initial word in startwords.
*)
let GenerateMarkovTextTesting noOfSentences map =
let startWords = fst(SeperateStartWords map)
let result =
seq {
for i in 1 .. noOfSentences do
Thread.Sleep(100)
yield GenerateMarkovSentence map (PickRandomItem startWords).Key
}
result |> ConcatToString

9
WetPancake/ProductServices.fs

@ -14,8 +14,7 @@ module Pancake =
|> ApplyStandardSetup
|> SortIntoGroups (PickRandomNumber 2 10)
|> GenerateMap
//GenerateMarkovText (PickRandomNumber 2 10) data
GenerateMarkovTextTesting (PickRandomNumber 2 10) data
GenerateMarkovText (PickRandomNumber 2 10) data
let RequestText (gibberishLevel: int) (sentences: int) =
let data =
@ -23,8 +22,7 @@ module Pancake =
|> ApplyStandardSetup
|> SortIntoGroups gibberishLevel
|> GenerateMap
//GenerateMarkovText sentences data
GenerateMarkovTextTesting sentences data
GenerateMarkovText sentences data
let RequestTextFromFile (gibberishLevel: int) (sentences: int) (filePath: string) =
@ -33,8 +31,7 @@ module Pancake =
|> ApplyStandardSetup
|> SortIntoGroups gibberishLevel
|> GenerateMap
//GenerateMarkovText sentences data
GenerateMarkovTextTesting sentences data
GenerateMarkovText sentences data
(* Should the library provide list of the available default txt files?

15
WetPancake/SystemServices.fs

@ -6,18 +6,5 @@
let PickRandomNumber min max = Random().Next(min, max)
let PickRandomItem seq =
(* This if check equates to an empty sequence.
The program cannot continue at this point.
Need a better way to handle this error.
Need a way to give a reasonable "default value" back. *)
if (Seq.length seq) = 0 then
seq |> Seq.item 0
else
let index = PickRandomNumber 1 (Seq.length seq)
seq |> Seq.item index
let PickNextWord seq =
let index = PickRandomNumber 0 (Seq.length seq)
seq |> Seq.item index
let PickStartWords seq = 0
seq |> Seq.item index
Loading…
Cancel
Save