Kontakte finden
Teil des Abschnitts Logik & Ablauf der Kotlin-Journey von Coddy. Lektion 22 von 63.
Aufgabe
SchwerVervollständige contactBook mit den Parametern commands: List<String>, names: List<String>, phones: List<String>. Erstelle ein im Speicher befindliches Kontaktbuch, das bei jedem Funktionsaufruf leer beginnt. Die drei Listen haben dieselbe Länge, höchstens 100. An jedem Index wählt commands eine Operation aus; names und phones liefern deren Argumente. Namen sind nichtleere Wörter aus kleingeschriebenen ASCII-Zeichen; phones sind nichtleere Ziffernfolgen und müssen als Zeichenketten erhalten bleiben, damit führende Nullen bewahrt werden. Jeder Befehl erzeugt eine Antwort in der zurückgegebenen Liste. Behalte alles bei, was du in den vorherigen Schritten geschrieben hast, einschließlich aller früheren Befehle und Antworten. Unterstütze PUT: Speichere die Telefonnummer für den angegebenen Namen oder ersetze sie und antworte mit saved. Füge FIND hinzu: Antworte mit der gespeicherten Telefonnummer für den angegebenen Namen oder mit missing. Sein Telefonnummernargument wird ignoriert. Die Eingaben enthalten nur in diesem Schritt unterstützte Befehle. Ignorierte Argumentzeichenketten können beliebiger nichtleerer Text sein.
Sofern oben keine strengeren Grenzen angegeben sind, enthalten Sammlungen auf jeder Ebene höchstens 100 Elemente, und ganzzahlige Argumente sowie ganzzahlige Sammlungswerte liegen zwischen -1000 und 1000. Für das Parsen bereitgestellter Text kann ungültige oder außerhalb des zulässigen Bereichs liegende Darstellungen enthalten, wie beschrieben.
Gib einen Wert vom Typ List<String> zurück. Behalte den bereitgestellten Eingabe-/Ausgabecode bei. Er liest skalare Argumente jeweils in einer eigenen Zeile; eine Liste beginnt mit ihrer Anzahl, gefolgt von ihren Elementen, und eine Map beginnt mit der Anzahl ihrer Einträge, gefolgt von jedem Schlüssel und Wert. Verschachtelte Listen wiederholen für jede Zeile das Format aus Anzahl und Elementen. Das bereitgestellte main gibt den Rückgabewert gefolgt von genau einem Zeilenumbruch aus. Listen verwenden das standardmäßige Klammerformat von Kotlin; gib keine zusätzlichen Bezeichnungen aus.
Probier es selbst
fun contactBook(commands: List<String>, names: List<String>, phones: List<String>): List<String> {
val contacts = mutableMapOf<String, String>()
val replies = mutableListOf<String>()
for (i in commands.indices) {
val name = names[i]
when (commands[i]) {
"PUT" -> {
contacts[name] = phones[i]
replies.add("saved")
}
}
}
return replies
}
fun main() {
val commandsCount = readln().toInt()
val commands = mutableListOf<String>()
for (i0 in 0 until commandsCount) {
val commandsItem = readLine().orEmpty()
commands.add(commandsItem)
}
val namesCount = readln().toInt()
val names = mutableListOf<String>()
for (i0 in 0 until namesCount) {
val namesItem = readLine().orEmpty()
names.add(namesItem)
}
val phonesCount = readln().toInt()
val phones = mutableListOf<String>()
for (i0 in 0 until phonesCount) {
val phonesItem = readLine().orEmpty()
phones.add(phonesItem)
}
println(contactBook(commands, names, phones))
}Alle Lektionen in Logik & Ablauf
1Maps Teil 1
Maps erstellenSichere Maps-ZugriffeMaps aktualisierenSchlüssel prüfenRückblick – Lagerverwaltung4Verschachtelte Sammlungen
Listen von ListenZeilen durchlaufenZeilenzusammenfassungenVerschachtelte Listen abflachenRückblick – Sitzreihen7Collection-Pipelines
Transformieren mit MapWerte filternSammlungsregeln testenMit Fold akkumulierenRückblick – genehmigte Summen10Textverarbeitung
Teilen und ZusammenfügenTexte effizient erstellenTextmuster abgleichenSuchen und ErsetzenRückblick – Code bereinigen13Abschließende Herausforderungen
Herausforderung – WortanalyseHerausforderung – PunkteprüfungHerausforderung – Geteilte Vorräte2Maps Teil 2
Map-Einträge durchlaufenSchlüssel und WerteHäufigkeits-MapsVerschachtelte MapsRückblick – Häufigkeitsbericht5Projekt – Kontaktbuch
Kontakte speichernKontakte finden3Mengen und Mitgliedschaft
Mengen erstellenMengen aktualisierenMengenoperationenTeilmenge prüfenRückblick – Gäste der Veranstaltung6Funktionswerte
Lambdas schreibenFunktionstypenFunktionen übergebenErfasste VariablenRückblick – Konfigurierbare PunktzahlÜbe selbstständig: Kotlin-Playground