home
/
code
/
cellular-automata.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Hide (int -> state) mappings.
[cellular-automata.git]
/
polymorphism
/
001
/
src
/
polymorphism.ml
diff --git
a/polymorphism/001/src/polymorphism.ml
b/polymorphism/001/src/polymorphism.ml
index
62730e4
..
5d6fbab
100644
(file)
--- a/
polymorphism/001/src/polymorphism.ml
+++ b/
polymorphism/001/src/polymorphism.ml
@@
-209,9
+209,9
@@
struct
sig
type t = D | A
sig
type t = D | A
- val
of_int : in
t -> t
+ val
random : uni
t -> t
- val
to_int : t -> int
+ val
is_alive : t -> bool
val to_cell : t -> Cell.t
val to_cell : t -> Cell.t
@@
-222,14
+222,15
@@
struct
struct
type t = D | A
struct
type t = D | A
- let of_int = function
+ let random () =
+ match Random.int 2 with
| 0 -> D
| 1 -> A
| _ -> assert false
| 0 -> D
| 1 -> A
| _ -> assert false
- let
to_int
= function
- | D ->
0
- | A ->
1
+ let
is_alive
= function
+ | D ->
false
+ | A ->
true
let to_pheno = function
| D -> PhenoType.create ' ' None
let to_pheno = function
| D -> PhenoType.create ' ' None
@@
-260,16
+261,17
@@
struct
| D -> D
end
| D -> D
end
- let create
()
=
-
Random.int 2 |> State.of_int |>
State.to_cell
+ let create =
+
State.random |-
State.to_cell
- let live_neighbors neighbors =
- neighbors |> List.map ~f:(State.of_cell_state |- State.to_int)
- |> List.fold_left ~init:0 ~f:(+)
+ let count_of_live =
+ List.map ~f:State.of_cell_state
+ |- List.filter ~f:State.is_alive
+ |- List.length
let transition ~self ~neighbors =
self |> State.of_cell_state
let transition ~self ~neighbors =
self |> State.of_cell_state
- |> State.next ~live_neighbors:(
live_neighbors
neighbors)
+ |> State.next ~live_neighbors:(
count_of_live
neighbors)
|> State.to_cell
end
|> State.to_cell
end
@@
-282,9
+284,7
@@
struct
val is_burning : t -> bool
val is_burning : t -> bool
- val of_int : int -> t
-
- val to_int : t -> int
+ val random : unit -> t
val to_cell : t -> Cell.t
val to_cell : t -> Cell.t
@@
-300,17
+300,13
@@
struct
| T -> false
| B -> true
| T -> false
| B -> true
- let of_int = function
+ let random () =
+ match Random.int 3 with
| 0 -> E
| 1 -> T
| 2 -> B
| _ -> assert false
| 0 -> E
| 1 -> T
| 2 -> B
| _ -> assert false
- let to_int = function
- | E -> 0
- | T -> 1
- | B -> 2
-
let to_pheno = function
| E -> PhenoType.create ' ' None
| T -> PhenoType.create 'T' (Some `green)
let to_pheno = function
| E -> PhenoType.create ' ' None
| T -> PhenoType.create 'T' (Some `green)
@@
-348,18
+344,17
@@
struct
| B, _ -> E
end
| B, _ -> E
end
- let create
()
=
-
Random.int 3 |> State.of_int |>
State.to_cell
+ let create =
+
State.random |-
State.to_cell
- let burning_neighbors neighbors =
- neighbors |> List.map ~f:State.of_cell_state
- |> List.filter ~f:State.is_burning
- |> List.map ~f:State.to_int
- |> List.fold_left ~init:0 ~f:(+)
+ let count_of_burning =
+ List.map ~f:State.of_cell_state
+ |- List.filter ~f:State.is_burning
+ |- List.length
let transition ~self ~neighbors =
self |> State.of_cell_state
let transition ~self ~neighbors =
self |> State.of_cell_state
- |> State.next ~burning_neighbors:(
burning_neighbors
neighbors)
+ |> State.next ~burning_neighbors:(
count_of_burning
neighbors)
|> State.to_cell
end
|> State.to_cell
end
This page took
0.028325 seconds
and
4
git commands to generate.