Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,46 @@
|
|||
defmodule Pascal do
|
||||
defp ij(n), do: for i <- 1..n, j <- 1..n, do: {i,j}
|
||||
|
||||
def upper_triangle(n) do
|
||||
Enum.reduce(ij(n), Map.new, fn {i,j},acc ->
|
||||
val = cond do
|
||||
i==1 -> 1
|
||||
j<i -> 0
|
||||
true -> Map.get(acc, {i-1, j-1}) + Map.get(acc, {i, j-1})
|
||||
end
|
||||
Map.put(acc, {i,j}, val)
|
||||
end) |> print(1..n)
|
||||
end
|
||||
|
||||
def lower_triangle(n) do
|
||||
Enum.reduce(ij(n), Map.new, fn {i,j},acc ->
|
||||
val = cond do
|
||||
j==1 -> 1
|
||||
i<j -> 0
|
||||
true -> Map.get(acc, {i-1, j-1}) + Map.get(acc, {i-1, j})
|
||||
end
|
||||
Map.put(acc, {i,j}, val)
|
||||
end) |> print(1..n)
|
||||
end
|
||||
|
||||
def symmetic_triangle(n) do
|
||||
Enum.reduce(ij(n), Map.new, fn {i,j},acc ->
|
||||
val = if i==1 or j==1, do: 1,
|
||||
else: Map.get(acc, {i-1, j}) + Map.get(acc, {i, j-1})
|
||||
Map.put(acc, {i,j}, val)
|
||||
end) |> print(1..n)
|
||||
end
|
||||
|
||||
def print(matrix, range) do
|
||||
Enum.each(range, fn i ->
|
||||
Enum.map(range, fn j -> Map.get(matrix, {i,j}) end) |> IO.inspect
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
IO.puts "Pascal upper-triangular matrix:"
|
||||
Pascal.upper_triangle(5)
|
||||
IO.puts "Pascal lower-triangular matrix:"
|
||||
Pascal.lower_triangle(5)
|
||||
IO.puts "Pascal symmetric matrix:"
|
||||
Pascal.symmetic_triangle(5)
|
||||
Loading…
Add table
Add a link
Reference in a new issue