Треки
/
Scala
Scala
/
Вправи
/
Номер телефону
Номер телефону

Номер телефону

Легка

Вступ

Ми приєдналися до 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. Памʼятаймо, що в Scala String неявно є також Seq[Char], тож їх можна викликати так само легко, як і методи String.

Кілька прикладів:

  • filter замість replaceAll
  • take, takeRight, drop, head, tail замість substring

Ще одна ідея, яку варто розглянути: перетворити String на List[Char] і потім скористатися зіставленням зі зразком з оператором ::.

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Scala Exercism

Час розпочати Номер телефону?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Scala, а також 95 вправ та справжнє наставництво від людей, і все це безкоштовно.