Csatlakoztál a LinkLine-hoz, egy vezető kommunikációs vállalathoz, amely azon dolgozik, hogy mindenki számára megbízható kapcsolatot biztosítson. A csapat nagy kihívás előtt áll: a felhasználók mindenféle formátumban küldik be a telefonszámokat, kötőjelekkel, szóközökkel, pontokkal, zárójelekkel, sőt előtagokkal is. Egyes számok érvényesek, másokat viszont lehetetlen használni.
A küldetésed az, hogy rendet teremts ebben a káoszban. Megtisztítod az érvényes számokat, és úgy formázod őket, hogy használhatók legyenek a rendszerben. Ezzel egy időben felismered és kiszűröd az érvénytelen bejegyzéseket.
A LinkLine működésének sikere azon múlik, hogy képes vagy-e különválasztani a hasznosat a használhatatlantól. Készen állsz rá, hogy belevágj a kihívásba, és a kapcsolatok zökkenőmentesen működjenek?
Tisztítsd meg a felhasználók által megadott telefonszámokat, hogy SMS-üzeneteket lehessen rájuk küldeni.
A North American Numbering Plan (NANP) egy olyan telefonszámozási rendszer, amelyet Észak-Amerika számos országa használ, például az Egyesült Államok, Kanada vagy Bermuda.
Minden NANP-ország ugyanazt a nemzetközi országkódot használja: 1.
A NANP-számok tízjegyű számok, amelyek egy háromjegyű területi kódból, közismert nevén körzetszámból, majd egy hétjegyű helyi számból állnak. A helyi szám első három jegye a központkód, ezt követi az egyedi négyjegyű előfizetői szám.
A formátumot általában így szokás leírni:
NXX NXX-XXXX
ahol N bármely 2 és 9 közötti számjegy, X pedig bármely 0 és 9 közötti számjegy.
Néha az országkód is az elejükön szerepel (1 vagy +1 formában).
A feladatod, hogy a különböző formátumú telefonszámokat megtisztítsd az írásjelektől és, ha szerepel, az országkódtól.
Például ezek a bemenetek
+1 (613)-995-0253613-995-02531 613 995 0253613.995.0253mindegyiküknek ezt a kimenetet kell eredményeznie:
6139950253
Megjegyzés: Mivel ez a feladat csak a NANP-országokban használt telefonszámokkal foglalkozik, csak az 1 számít érvényes országkódnak.
Az egyszerűség és az olvashatóság kedvéért: érdemes a Scala gyűjteményfüggvényeit használni a Java String metódusai helyett.
Ne feledd, hogy a Scalában a String implicit módon Seq[Char] is egyben, így ugyanolyan könnyen hívhatod őket, mint a String metódusait.
Néhány példa:
filter a replaceAll helyetttake, takeRight, drop, head, tail a substring helyettEgy másik kipróbálásra érdemes ötlet lehet, hogy a String-ből List[Char]-et csinálj, majd a :: operátorral mintaillesztést használj.
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Scala nyelvet 95 feladat segítségével, valódi emberi mentorálással, mindez ingyen.