1) Реализуйте функцию snail_path(), которая принимает на вход матрицу и возвращает список элементов матрицы по порядку следования от левого верхнего элемента по часовой стрелке к внутреннему. Движение по матрице напоминает улитку.
>>> snail_path([[1, 2], [3, 4]])
[1, 2, 4, 3]
>>> snail_path([[1, 2, 3], [8, 9, 4], [7, 6, 5]])
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> snail_path([['b', 'c', 'a'], ['3', True, 11], [None, 'foo', 0]])
['b', 'c', 'a', 11, 0, 'foo', None, '3', True]
2) Реализуйте и экспортируйте функции ip2int и int2ip, которые преобразовывают представление IP-адреса из десятичного формата с точками в 32-битное число в десятичной форме и обратно. Функция ip2int принимает на вход строку и должна возвращать число. А функция int2ip наоборот: принимает на вход число, а возвращает строку.
>>> ip2int('128.32.10.1')
2149583361
>>> ip2int('0.0.0.0')
0
>>> ip2int('255.255.255.255')
4294967295
>>>
>>> int2ip(2149583361)
'128.32.10.1'
>>> int2ip(0)
'0.0.0.0'
>>> int2ip(4294967295)
'255.255.255.255'
3) Реализуйте функцию-предикат is_valid_ipv6, которая проверяет IPv6-адреса (адреса шестой версии интернет протокола) на корректность. Функция принимает на вход строку с адресом IPv6 и возвращает True, если адрес корректный, и False, если нет.
Дополнительные условия:
>>> from solution import is_valid_ipv6
>>> is_valid_ipv6('10:d3:2d06:24:400c:5ee0:be:3d')
True
>>> is_valid_ipv6('::1')
True
>>> is_valid_ipv6('2607:G8B0:4010:801::1004')
False
>>> is_valid_ipv6('2.001::')
False
>>>
Гарантия на работу | 1 год |
Средний балл | 4.96 |
Стоимость | Назначаете сами |
Эксперт | Выбираете сами |
Уникальность работы | от 70% |