Powered by AppSignal & Oban Pro
Would you like to see your link here? Contact us
Notesclub

2023 - 12 -05

2023_12_05_2.livemd

2023 - 12 -05

Section

defmodule Moves do
  def new() do
    []
  end

  def add([m1, m2, m3, _m4] = moves, x, y) when length(moves) == 4 do
    [{x, y} | [m1, m2, m3]]
  end

  def add(moves, x, y) do
    [{x, y} | moves]
  end

  # def add(moves, x, y) do
  #   new_moves = [{x, y} | moves]

  #   if length(new_moves) == 5 do
  #     new_moves
  #     |> Enum.reverse()
  #     |> tl()
  #     |> Enum.reverse()
  #   else
  #     new_moves
  #   end
  # end

  def add_v2(moves, x, y) do
    new_moves = moves ++ [{x, y}]

    if length(new_moves) == 5 do
      tl(new_moves)
    else
      new_moves
    end
  end
end
Moves.new()
|> Moves.add(1, 1)
|> Moves.add(2, 2)
|> Moves.add(3, 3)
|> Moves.add(3, 2)
|> Moves.add(1, 3)
|> Moves.add(1, 1)
Moves.new()
|> Moves.add_v2(1, 1)
|> Moves.add_v2(2, 2)
|> Moves.add_v2(3, 3)
|> Moves.add_v2(3, 2)
|> Moves.add_v2(1, 3)
|> Moves.add_v2(1, 1)

Queue

:queue.from_list([1, 2, 3, 4, 5])