간만에 풀어본 개념 문제. 여러 모듈이 주어졌을 때 이들을 alias
와 import
를 사용하여 적당히 연결하는 문제였다(구현은 이미 되어 있고, 이 코드를 고치지 않은 채 alias
와 import
만 추가해야 했다). 실제로 작성한 코드는 NeedForSpeed
모듈의 위에 위치한 4줄에 불과하지만, alias
에 별칭 주기, import
에서 only
와 except
옵션 사용하기 등 여러 형태를 사용해볼 수 있었다.
defmodule NeedForSpeed do
# Add missing aliases and imports here.
alias NeedForSpeed.Race
alias NeedForSpeed.RemoteControlCar, as: Car
import IO, only: [puts: 1]
import IO.ANSI, except: [color: 1]
# Do not edit the code below.
def print_race(%Race{} = race) do
puts("""
🏁 #{race.title} 🏁
Status: #{Race.display_status(race)}
Distance: #{Race.display_distance(race)}
Contestants:
""")
race.cars
|> Enum.sort_by(&(-1 * &1.distance_driven_in_meters))
|> Enum.with_index()
|> Enum.each(fn {car, index} -> print_car(car, index + 1) end)
end
defp print_car(%Car{} = car, index) do
color = color(car)
puts("""
#{index}. #{color}#{car.nickname}#{default_color()}
Distance: #{Car.display_distance(car)}
Battery: #{Car.display_battery(car)}
""")
end
defp color(%Car{} = car) do
case car.color do
:red -> red()
:blue -> cyan()
:green -> green()
end
end
end
# and some other modules...
'호두나무 공방 > Exercism in Elixir' 카테고리의 다른 글
Simple Linked List - Exercism in Elixir (0) | 2022.09.09 |
---|---|
Lucas Numbers - Exercism in Elixir (0) | 2022.09.08 |
Luhn - Exercism in Elixir (0) | 2022.09.06 |
Meetup - Exercism in Elixir (0) | 2022.09.05 |
Complex Numbers - Exercism in Elixir (0) | 2022.08.19 |