mirror of
https://github.com/rjNemo/exercism-elixir
synced 2026-06-06 02:16:48 +00:00
19 lines
803 B
Elixir
19 lines
803 B
Elixir
defmodule RemoteControlCar do
|
|
@enforce_keys [:nickname]
|
|
defstruct [:nickname, battery_percentage: 100, distance_driven_in_meters: 0]
|
|
|
|
def new(nickname \\ "none"), do: %__MODULE__{nickname: nickname}
|
|
|
|
def display_distance(%__MODULE__{distance_driven_in_meters: distance}),
|
|
do: "#{distance} meters"
|
|
|
|
def display_battery(%__MODULE__{battery_percentage: 0}), do: "Battery empty"
|
|
|
|
def display_battery(%__MODULE__{battery_percentage: battery}), do: "Battery at #{battery}%"
|
|
|
|
def drive(%__MODULE__{battery_percentage: 0} = car),
|
|
do: %{car | battery_percentage: 0, distance_driven_in_meters: 0}
|
|
|
|
def drive(%__MODULE__{battery_percentage: battery, distance_driven_in_meters: distance} = car),
|
|
do: %{car | battery_percentage: battery - 1, distance_driven_in_meters: distance + 20}
|
|
end
|