Menu
Coddy logo textTech

Parking wielopoziomowy

Część sekcji Programowanie obiektowe ścieżki Kotlin w Coddy. Lekcja 55 z 57.

challenge icon

Wyzwanie

Trudny

Zbuduj parking wielopoziomowy.

  • Wyliczenie Size zawiera SMALL, MEDIUM i LARGE, w tej kolejności, każde z etykietą label zapisaną małymi literami.
  • Vehicle(plate) to klasa zapieczętowana z abstrakcyjnymi właściwościami size i hourlyRate. Motorbike jest mały (1 za godzinę), Car jest średni (3), a Van jest duży (5).
  • Garage(small, medium, large) jest tworzony z liczbą miejsc dla każdego rozmiaru. park(vehicle) umieszcza pojazd na wolnym miejscu jego rozmiaru lub, jeśli takiego nie ma, na wolnym miejscu o kolejnym większym rozmiarze, i zwraca parked AB12 in medium, full for AB12 lub AB12 is already parked. leave(plate, hours) zwalnia miejsce i zwraca AB12 paid 9 (stawka razy liczba godzin, co najmniej 1 godzina) lub no vehicle AB12. status() zwraca free: small 1, medium 0, large 2.

Dostarczony kod odczytuje liczbę miejsc w formacie small,medium,large, a następnie polecenia park car AB12 (bike, car lub van), leave AB12 3 albo status i wypisuje każdą odpowiedź.

Twój kod umieść w plikach Size.kt, Vehicle.kt, Motorbike.kt, Car.kt, Van.kt i Garage.kt. Main.kt zawiera dostarczony kod wejścia/wyjścia i nie można go edytować.

Spróbuj swoich sił

fun main() {
    // Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
    val input = generateSequence(::readLine).toList()
    val (small, medium, large) = input[0].split(",").map { it.toInt() }
    val garage = Garage(small, medium, large)
    for (cmd in input.drop(1)) {
        val p = cmd.split(" ")
        when (p[0]) {
            "park" -> {
                val vehicle = when (p[1]) {
                    "bike" -> Motorbike(p[2])
                    "van" -> Van(p[2])
                    else -> Car(p[2])
                }
                println(garage.park(vehicle))
            }
            "leave" -> println(garage.leave(p[1], p[2].toInt()))
            else -> println(garage.status())
        }
    }
}

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Edytor online Kotlin