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.rjust(8, ?0)
list = Integer.to_string(rule, 2) |> String.pad_leading(8, "0")
|> String.split("", trim: true) |> Enum.reverse
|> String.codepoints |> Enum.reverse
Enum.map(0..7, fn i -> String.rjust(Integer.to_string(i, 2), 3, ?0) end)
Enum.map(0..7, fn i -> Integer.to_string(i, 2) |> String.pad_leading(3, "0") end)
|> Enum.zip(list) |> Enum.into(Map.new)
|> 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.map(0..String.length(str)-1, fn i ->
next_str = Enum.map_join(0..String.length(str)-1, fn i ->
Dict.get(patterns, String.slice(str2, i, 3))
Map.get(patterns, String.slice(str2, i, 3))
end) |> Enum.join
end)
each(next_str, patterns, times-1)
each(next_str, patterns, times-1)
end
end