رقم الهاتف

رقم الهاتف

سهل

مقدمة

لقد انضممت إلى LinkLine، وهي شركة اتصالات رائدة تعمل على ضمان اتصالات موثوقة للجميع. يواجه الفريق تحديًا كبيرًا: فالمستخدمون يُدخلون أرقام الهاتف بصيغ شتى، من الشرطات والمسافات والنقاط والأقواس، وحتى البادئات. بعض هذه الأرقام صالح للاستخدام، وبعضها الآخر يتعذّر استخدامه.

مهمتك هي تحويل هذه الفوضى إلى نظام. ستُنقّي الأرقام الصالحة وتُنسّقها بالشكل المناسب لاستخدامها في النظام. وفي الوقت نفسه، ستتعرّف على المدخلات غير الصالحة وتستبعدها.

يتوقف نجاح عمليات LinkLine على قدرتك على فصل المفيد عن غير القابل للاستخدام. هل أنت مستعد لخوض التحدي والحفاظ على سير الاتصالات بسلاسة؟

التعليمات

نظّف أرقام الهواتف التي يُدخلها المستخدمون حتى يمكن إرسال رسائل SMS إليها.

خطة ترقيم أمريكا الشمالية (NANP) هي نظام لترقيم الهواتف تستخدمه دول كثيرة في أمريكا الشمالية مثل الولايات المتحدة وكندا أو برمودا. وتتشارك جميع بلدان NANP رمز البلد الدولي نفسه: 1.

أرقام NANP هي أعداد مكوّنة من عشرة أرقام، تبدأ برمز منطقة خطة الترقيم المكوّن من ثلاثة أرقام، ويُعرف باسم رمز المنطقة، ويتبعه رقم محلي من سبعة أرقام. وتمثّل الأرقام الثلاثة الأولى من الرقم المحلي رمز المقسم، ويتبعه العدد الفريد المكوّن من أربعة أرقام، وهو رقم المشترك.

يُكتب التنسيق عادة على الصورة التالية

NXX NXX-XXXX

حيث N أي رقم من 2 إلى 9 وX أي رقم من 0 إلى 9.

وفي بعض الأحيان يسبقها رمز البلد أيضًا (الممثَّل بـ 1 أو +1).

مهمتك هي تنظيف أرقام الهواتف المنسّقة بتنسيقات مختلفة، بإزالة علامات الترقيم ورمز البلد إن وُجد.

على سبيل المثال، المدخلات

  • +1 (613)-995-0253
  • 613-995-0253
  • 1 613 995 0253
  • 613.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 مع العامل ::.

تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Scala Exercism

مستعد لبدء رقم الهاتف؟

سجّل في Exercism لتتعلّم وتتقن Scala عبر 95 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.