@@Camping_RIDER
Mal ohne Flax: Offenbar ist die weitaus größte Zahl an gültigen deutschen Vorwahlen vierstellig (ohne Null). Deutlich. Warum nicht nur noch auf die Vorwahlen prüfen, die zwei-, drei-, oder fünfstellig sind? Diese Liste ist deutlich kürzer
Eine (Key/Value)-Liste wie
{
⋮
"30":"Berlin",
"3301":"Oranienburg",
"3302":"Hennigsdorf",
"3303":"Birkenwerder",
"3304":"Velten",
"33051":"Nassenheide",
"33053":"Zehlendorf Kr Oberhavel",
"33054":"Liebenwalde",
"33055":"Kremmen",
"33056":"Mühlenbeck Kr Oberhavel",
"3306":"Gransee",
"3307":"Zehdenick",
"33080":"Marienthal Kr Oberhavel",
"33082":"Menz Kr Oberhavel",
"33083":"Schulzendorf Kr Oberhavel",
"33084":"Gutengermendorf",
"33085":"Seilershof",
"33086":"Grieben Kr Oberhavel",
"33087":"Bredereiche",
"33088":"Falkenthal",
"33089":"Himmelpfort",
"33093":"Fürstenberg Havel",
"33094":"Löwenberg",
"331":"Potsdam",
⋮
}
ist wohl nicht die beste Datenstruktur, da sucht man sich dumm und dähmlich.
Man kann sich die Daten aber in einen Baum umformen:
{
"1": { … },
"2": { … },
"3": {
"0": "Berlin",
"3": {
"0": {
"1":"Oranienburg",
"2":"Hennigsdorf",
"3":"Birkenwerder",
"4":"Velten",
"5": {
"1":"Nassenheide",
"3":"Zehlendorf Kr Oberhavel",
"4":"Liebenwalde",
"5":"Kremmen",
"6":"Mühlenbeck Kr Oberhavel"
},
"6": "Gransee",
"7": "Zehdenick",
"8": {
"0":"Marienthal Kr Oberhavel",
"2":"Menz Kr Oberhavel",
"3":"Schulzendorf Kr Oberhavel",
"4":"Gutengermendorf",
"5":"Seilershof",
"6":"Grieben Kr Oberhavel",
"7":"Bredereiche",
"8":"Falkenthal",
"9":"Himmelpfort"
},
"9": {
"3":"Fürstenberg Havel",
"4":"Löwenberg"
}
},
"1": "Potsdam",
"2": { … },
⋮
},
"4": { … },
⋮
},
"4": { … },
⋮
}
Dann holt man sich aus der Telefonnummer (ohne 0
bzw. +49
) das erste Zeichen, bspw. 3
. Wenn mal dafür als Wert einen String erhält, hat man die komplette Vorwahl gefunden. Ist hier aber nicht der Fall, sondern man erhält ein Objekt (einen Unterbaum). Also das nächste Zeichen der Telefonnummer lesen, bspw. 0
. Der dazugehörige Wert ist "Berlin"
. Fertig.
Wäre nach der ersten 3
noch eine 3
gekommen, würde man die nächste Ziffer aus der Telefonnummer holen, bspw. eine 0
. Dafür erhält man wieder ein Objekt, also weiter, bspw. eine 8
. Immer noch nicht beim Blatt angekommen; nächste Ziffer holen, bspw. 9
. Das ergibt "Himmelpfort"
. Man ist beim Weihnachtsmann angekommen.
LLAP 🖖
Ist diese Antwort anstößig? Dann könnte sie nützlich sein.