tracks/elixir/exercises/robot-simulator/example.exs in trackler-1.0.1.0 vs tracks/elixir/exercises/robot-simulator/example.exs in trackler-1.0.1.1
- old
+ new
@@ -25,18 +25,17 @@
def position(%RobotSimulator{position: pos}), do: pos
def direction(%RobotSimulator{direction: dir}), do: dir
defp orient(%RobotSimulator{} = robot, direction) when direction in @valid_directions do
- %RobotSimulator{ robot | direction: direction }
+ %{ robot | direction: direction }
end
defp orient({ :error, _ } = error, _), do: error
defp orient(_, _), do: { :error, "invalid direction" }
defp place(%RobotSimulator{} = robot, { x, y } = position) when is_integer(x) and is_integer(y) do
- %RobotSimulator{ robot | position: position }
+ %{ robot | position: position }
end
- defp place({ :error, _ } = error, _), do: error
defp place(_, _), do: { :error, "invalid position" }
defp move("R", %RobotSimulator{ direction: direction } = robot), do: robot |> orient(direction |> rotate_right)
defp move("L", %RobotSimulator{ direction: direction } = robot), do: robot |> orient(direction |> rotate_left)
defp move("A", %RobotSimulator{ direction: :north, position: { x, y } } = robot), do: robot |> place({ x, y + 1 })