Another update from ingydotnet^djgoku
This commit is contained in:
parent
91df62d461
commit
948b86eafa
7604 changed files with 108452 additions and 22726 deletions
33
Task/Spiral-matrix/Elixir/spiral-matrix.elixir
Normal file
33
Task/Spiral-matrix/Elixir/spiral-matrix.elixir
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
defmodule RC do
|
||||
def spiral_matrix(n) do
|
||||
right(n,n-1,0,[]) |> Enum.with_index |> Enum.sort |> Enum.with_index |>
|
||||
Enum.each(fn {{_,x},i} ->
|
||||
:io.format("~2w ", [x])
|
||||
if( rem(i+1,n)==0, do: IO.puts "")
|
||||
end)
|
||||
end
|
||||
|
||||
def right(n,side,i,coordinates) do
|
||||
coord = for j <- 0..side, do: {i, i+j}
|
||||
down(n,side,i,coordinates++coord)
|
||||
end
|
||||
|
||||
def down(_,0,_,coordinates), do: coordinates
|
||||
def down(n,side,i,coordinates) do
|
||||
coord = for j <- 1..side, do: {i+j, n-1-i}
|
||||
left(n,side-1,i,coordinates++coord)
|
||||
end
|
||||
|
||||
def left(n,side,i,coordinates) do
|
||||
coord = for j <- 0..side, do: {n-1-i, i+side-j}
|
||||
up(n,side,i,coordinates++coord)
|
||||
end
|
||||
|
||||
def up(_,0,_,coordinates), do: coordinates
|
||||
def up(n,side,i,coordinates) do
|
||||
coord = for j <- 1..side, do: {i+side-j+1, i}
|
||||
right(n,side-1,i+1,coordinates++coord)
|
||||
end
|
||||
end
|
||||
|
||||
RC.spiral_matrix(5)
|
||||
Loading…
Add table
Add a link
Reference in a new issue