Ваш инструмент сканирования сети раздражающе разборчив в вводе данных и сразу падает, если вы передаете ему IPv4-адрес, который содержит неправильные символы или неправильно отформатирован.
Адрес IPv4 - это 32-разрядный числовой адрес, записанный в виде четырех чисел, разделенных точками. Каждое число может быть от нуля до 255 .
Нам нужно написать инструмент для предварительной проверки ввода, чтобы избежать этих сбоев, и наш конкретный инструмент требователен: допустимый формат будет выглядеть так, a.b.c.d
где a, b, c и d:
- Может быть
0
или натуральным числом без начальных нулей . - Должно быть между 0 - 255 (включительно).
- Если не содержат специальные символы , такие как
+
,-
,,
и другие. - Должен быть десятичным (базовым
10
)
Ввод : строка
Вывод : значение «истина» или «ложь» (произвольные значения также принимаются)
Тестовые случаи :
Input | Output | Reason
| |
- 1.160.10.240 | true |
- 192.001.32.47 | false | (leading zeros present)
- 1.2.3. | false | (only three digits)
- 1.2.3 | false | (only three digits)
- 0.00.10.255 | false | (leading zeros present)
- 1.2.$.4 | false | (only three digits and a special symbol present)
- 255.160.0.34 | true |
- .1.1.1 | false | (only three digits)
- 1..1.1.1 | false | (more than three periods)
- 1.1.1.-0 | false | (special symbol present)
- .1.1.+1 | false | (special symbol present)
- 1 1 1 1 | false | (no periods)
- 1 | false | (only one digit)
- 10.300.4.0 | false | (value over 255)
- 10.4F.10.99 | false | (invalid characters)
- fruit loops | false | (umm...)
- 1.2.3.4.5 | false | (too many periods/numbers)
- 0.0.0.0 | true |
- 0.0 0.0. | false | (periods misplaced)
- 1.23..4 | false | (a typo of 1.2.3.4)
- 1:1:1:1:1:1:1:1| false | (an IPv6 address, not IPv4)
Это код-гольф , поэтому выиграет меньше байтов!
Примечание для пользователей - если вы хотите добавить еще несколько тест-кейсов, добро пожаловать (предлагая редактирование). Но, пожалуйста, убедитесь, что тесты не повторяются! Благодарность
1.1.1.1.1
,1.1.1.1.
,.1.1.1
,1..1.1
,1..1.1.1
,1.1.1.0
,1.1.1.-0
,1.1.1.+1
,1.1.1.1E1
,1.1.1.256
,1.1.1.0x1
,255.255.255.255
,0.0.0.0
,'or 1=1--
,<empty string>
,1 1 1 1
,1,1,1,1
.