Guest User

Untitled

a guest
Sep 16th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 1.57 KB | None | 0 0
  1. open System
  2.  
  3. type State =
  4.     | Dead = 0
  5.     | Alive = 1
  6.  
  7. let size = 10
  8.  
  9. let mutable grid = Array2D.create size size State.Dead
  10.  
  11. let spawn (lst : (int * int) list) = for (x, y) in lst do grid.[y, x] <- State.Alive
  12.  
  13. let printGrid () =
  14.     let row = (Array2D.length1 grid) - 1
  15.     let col = (Array2D.length2 grid) - 1
  16.     for y in [0..row] do
  17.         for x in [0..col] do
  18.             Console.Write((int) grid.[y, x])
  19.         Console.WriteLine()
  20.     Console.WriteLine()
  21.  
  22. let isValidCell (x, y) = (x > 0 && y > 0 && x < size && y < size)
  23.  
  24. let liveNeighbors (x, y) =
  25.     [for i in [-1 .. 1] do
  26.         for j in [-1 .. 1] do yield (x + i, y + j)]
  27.     |> List.filter (fun (i, j) -> (i > 0 && j > 0 && i < size && j < size))
  28.     |> List.filter (fun p -> p <> (x, y))
  29.     |> List.map (fun (x, y) -> grid.[y, x])
  30.     |> List.filter (fun x -> x = State.Alive)
  31.  
  32. let tick () =
  33.     let tempGrid = Array2D.create size size State.Dead
  34.     let row = (Array2D.length1 grid) - 1
  35.     let col = (Array2D.length2 grid) - 1
  36.     for y in [0..row] do
  37.         for x in [0..col] do
  38.             let count = (liveNeighbors (y, x)).Length
  39.             match tempGrid.[y, x] with
  40.                 | State.Dead -> if count = 3 then tempGrid.[y, x] <- State.Alive
  41.                 | State.Alive -> if count <> 2 || count <> 3 then tempGrid.[y, x] <- State.Dead
  42.                 | _ -> printfn "LOLDONGS"
  43.     grid <- tempGrid
  44.  
  45. let play max =
  46.     for i in [0..max] do
  47.         printGrid()
  48.         tick()
  49.  
  50. spawn [(2, 1); (2, 2); (2, 3); (1, 3); (0, 2)]
  51. play(10)
  52. Console.ReadLine() |> ignore
Add Comment
Please, Sign In to add comment