Data update
This commit is contained in:
parent
ed705008a8
commit
0df55f9f24
2196 changed files with 32999 additions and 3075 deletions
55
Task/Padovan-sequence/Elixir/padovan-sequence.elixir
Normal file
55
Task/Padovan-sequence/Elixir/padovan-sequence.elixir
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
# Padovan sequence as a Stream
|
||||
defmodule Padovan do
|
||||
def stream do
|
||||
Stream.resource(
|
||||
fn -> {1, 1, 1} end,
|
||||
fn {a, b, c} ->
|
||||
next_value = a + b
|
||||
{[a], {b, c, next_value}}
|
||||
end,
|
||||
fn _ -> :ok end
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
# Padovan floor function
|
||||
defmodule PadovanFloorFunction do
|
||||
@p 1.324717957244746025960908854
|
||||
@s 1.0453567932525329623
|
||||
|
||||
def padovan_f(n), do: trunc((:math.pow(@p, n - 1) / @s) + 0.5)
|
||||
end
|
||||
|
||||
# Calculate and print the first 20 elements of the Padovan sequence and the floor function
|
||||
padovan_sequence = Padovan.stream() |> Enum.take(20)
|
||||
padovan_floor_function = Enum.map(0..19, &PadovanFloorFunction.padovan_f(&1))
|
||||
|
||||
IO.puts("Recurrence Padovan: #{inspect(padovan_sequence)}")
|
||||
IO.puts("Floor function: #{inspect(padovan_floor_function)}")
|
||||
|
||||
# Check if the sequences are equal up to n
|
||||
n = 63
|
||||
bool = Enum.map(0..(n-1), &PadovanFloorFunction.padovan_f(&1)) == Padovan.stream() |> Enum.take(n)
|
||||
IO.puts("Recurrence and floor function are equal up to #{n}: #{bool}.")
|
||||
|
||||
# L-system generator as a Stream
|
||||
defmodule LSystem do
|
||||
def stream(axiom \\ "A", rules \\ %{"A" => "B", "B" => "C", "C" => "AB"}) do
|
||||
Stream.iterate(axiom, fn string ->
|
||||
string
|
||||
|> String.graphemes()
|
||||
|> Enum.map(&Map.get(rules, &1, ""))
|
||||
|> Enum.join()
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
# Calculate and print the first 10 elements of the L-system
|
||||
l_system_sequence = LSystem.stream() |> Enum.take(10)
|
||||
IO.puts("First 10 elements of L-system: #{l_system_sequence |> Enum.join(", ")}")
|
||||
|
||||
# Check if the sizes of the L-system strings match the Padovan sequence
|
||||
n = 32
|
||||
l_system_sizes = LSystem.stream() |> Enum.take(n) |> Enum.map(&String.length/1)
|
||||
bool = l_system_sizes == Padovan.stream() |> Enum.take(n)
|
||||
IO.puts("Sizes of first #{n} L_system strings equal to recurrence Padovan? #{bool}.")
|
||||
Loading…
Add table
Add a link
Reference in a new issue