anchor.diff:      | Unknown -> printf "?  "
       printRow row
       printfn ""
  +  printfn ""
  +
  +let rnd = Random()
  +let addRandomGuess grid =
  +  let x = rnd.Next(0, 25)
  +  let y = rnd.Next(0, 25)
  +  let z = if rnd.Next(0, 2) = 0 then Filled else Empty
  +  Array2D.mapi (fun i j v -> if i = x && j = y then z else v) grid
       
   [<EntryPoint>]
   let main argv =
     // printGrid Puzzle.initialGrid
  +  let start = convertPatternToResult Puzzle.initialGrid
  +  let guess =   
  +    [1..100] |> List.fold (fun acc e -> addRandomGuess acc) (convertPatternToResult Puzzle.initialGrid)
     
  -  printResultGrid Puzzle.initialGrid Puzzle.rowTests Puzzle.colTests
  +  printResultGrid start Puzzle.rowTests Puzzle.colTests
  +  
  +  printResultGrid guess Puzzle.rowTests Puzzle.colTests
     0 // return an integer exit code
  
positive.code:                       | _ -> acc.CurrentGroup :: acc.FinishedGroups
        
  
  let testAxis (axis: int[]) (test: int list) =
    let axisGroups = getGroups axis
    let axisGroupCount = List.length axisGroups
    let testCount = List.length test
  
negative.code: module gchq
  
  open System
  
  type group = int list
  type groupsIntermediate = { FinishedGroups : group list; CurrentGroup : group}
  type CellResult = Unknown | Filled | Empty
  type AxisResult = Unknown | Pass | Fail
  
  let row i (arr: 'T[,]) = arr.[i..i, *] |> Seq.cast<'T> |> Seq.toArray
  let column i (arr: 'T[,]) = arr.[*, i..i] |> Seq.cast<'T> |> Seq.toArray
  