لقد انضممت إلى LinkLine، وهي شركة اتصالات رائدة تعمل على ضمان اتصالات موثوقة للجميع. يواجه الفريق تحديًا كبيرًا: فالمستخدمون يُدخلون أرقام الهاتف بصيغ شتى، من الشرطات والمسافات والنقاط والأقواس، وحتى البادئات. بعض هذه الأرقام صالح للاستخدام، وبعضها الآخر يتعذّر استخدامه.
مهمتك هي تحويل هذه الفوضى إلى نظام. ستُنقّي الأرقام الصالحة وتُنسّقها بالشكل المناسب لاستخدامها في النظام. وفي الوقت نفسه، ستتعرّف على المدخلات غير الصالحة وتستبعدها.
يتوقف نجاح عمليات LinkLine على قدرتك على فصل المفيد عن غير القابل للاستخدام. هل أنت مستعد لخوض التحدي والحفاظ على سير الاتصالات بسلاسة؟
نظّف أرقام الهواتف التي يُدخلها المستخدمون حتى يمكن إرسال رسائل SMS إليها.
خطة ترقيم أمريكا الشمالية (NANP) هي نظام لترقيم الهواتف تستخدمه دول كثيرة في أمريكا الشمالية مثل الولايات المتحدة وكندا أو برمودا.
وتتشارك جميع بلدان NANP رمز البلد الدولي نفسه: 1.
أرقام NANP هي أعداد مكوّنة من عشرة أرقام، تبدأ برمز منطقة خطة الترقيم المكوّن من ثلاثة أرقام، ويُعرف باسم رمز المنطقة، ويتبعه رقم محلي من سبعة أرقام. وتمثّل الأرقام الثلاثة الأولى من الرقم المحلي رمز المقسم، ويتبعه العدد الفريد المكوّن من أربعة أرقام، وهو رقم المشترك.
يُكتب التنسيق عادة على الصورة التالية
NXX NXX-XXXX
حيث N أي رقم من 2 إلى 9 وX أي رقم من 0 إلى 9.
وفي بعض الأحيان يسبقها رمز البلد أيضًا (الممثَّل بـ 1 أو +1).
مهمتك هي تنظيف أرقام الهواتف المنسّقة بتنسيقات مختلفة، بإزالة علامات الترقيم ورمز البلد إن وُجد.
على سبيل المثال، المدخلات
+1 (613)-995-0253613-995-02531 613 995 0253613.995.0253يجب أن تُنتج جميعها المخرَج
6139950253
ملاحظة: بما أن هذا التمرين يتعامل فقط مع أرقام الهواتف المستخدمة في بلدان NANP، فإن 1 هو رمز البلد الوحيد المعتبر صالحًا.
من أجل البساطة وسهولة القراءة: فكّر في استخدام دوال مجموعات Scala بدلًا من طرق String في Java.
تذكّر أن String في Scala هي أيضًا Seq[Char] ضمنيًا، لذا يمكنك استدعاؤها بسهولة كما تستدعي طرق String.
بعض الأمثلة:
filter بدلًا من replaceAll
take وtakeRight وdrop وhead وtail بدلًا من substring
وثمة فكرة أخرى تستحق الاستكشاف: تحويل String إلى List[Char] ثم استخدام pattern matching مع العامل ::.
سجّل في Exercism لتتعلّم وتتقن Scala عبر 95 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.