Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,27 @@
|
|||
defmodule Elementary_cellular_automaton do
|
||||
def run(start_str, rule, times) do
|
||||
IO.puts "rule : #{rule}"
|
||||
each(start_str, rule_pattern(rule), times)
|
||||
end
|
||||
|
||||
defp rule_pattern(rule) do
|
||||
list = Integer.to_string(rule, 2) |> String.pad_leading(8, "0")
|
||||
|> String.codepoints |> Enum.reverse
|
||||
Enum.map(0..7, fn i -> Integer.to_string(i, 2) |> String.pad_leading(3, "0") end)
|
||||
|> Enum.zip(list) |> Map.new
|
||||
end
|
||||
|
||||
defp each(_, _, 0), do: :ok
|
||||
defp each(str, patterns, times) do
|
||||
IO.puts String.replace(str, "0", ".") |> String.replace("1", "#")
|
||||
str2 = String.last(str) <> str <> String.first(str)
|
||||
next_str = Enum.map_join(0..String.length(str)-1, fn i ->
|
||||
Map.get(patterns, String.slice(str2, i, 3))
|
||||
end)
|
||||
each(next_str, patterns, times-1)
|
||||
end
|
||||
end
|
||||
|
||||
pad = String.duplicate("0", 14)
|
||||
str = pad <> "1" <> pad
|
||||
Elementary_cellular_automaton.run(str, 18, 25)
|
||||
Loading…
Add table
Add a link
Reference in a new issue