Elementary cellular automaton: Difference between revisions
Content added Content deleted
(→{{header|Perl 6}}: remove duplicate implementation; add link instead) |
(→{{header|Elixir}}: change Dict(deprecated) -> Map, String.rjust -> String.pad_leading) |
||
Line 518: | Line 518: | ||
=={{header|Elixir}}== |
=={{header|Elixir}}== |
||
{{works with|Elixir|1.3}} |
|||
{{trans|Ruby}} |
{{trans|Ruby}} |
||
<lang elixir>defmodule Elementary_cellular_automaton do |
<lang elixir>defmodule Elementary_cellular_automaton do |
||
Line 526: | Line 527: | ||
defp rule_pattern(rule) do |
defp rule_pattern(rule) do |
||
list = Integer.to_string(rule, 2) |> String. |
list = Integer.to_string(rule, 2) |> String.pad_leading(8, "0") |
||
|> String. |
|> String.codepoints |> Enum.reverse |
||
Enum.map(0..7, fn i -> |
Enum.map(0..7, fn i -> Integer.to_string(i, 2) |> String.pad_leading(3, "0") end) |
||
|> Enum.zip(list) |> |
|> Enum.zip(list) |> Map.new |
||
end |
end |
||
Line 536: | Line 537: | ||
IO.puts String.replace(str, "0", ".") |> String.replace("1", "#") |
IO.puts String.replace(str, "0", ".") |> String.replace("1", "#") |
||
str2 = String.last(str) <> str <> String.first(str) |
str2 = String.last(str) <> str <> String.first(str) |
||
next_str = Enum. |
next_str = Enum.map_join(0..String.length(str)-1, fn i -> |
||
Map.get(patterns, String.slice(str2, i, 3)) |
|||
end) |
end) |
||
each(next_str, patterns, times-1) |
each(next_str, patterns, times-1) |
||
end |
end |