Дан json cо вложенной структурой. Необходимо убрать вложенность и конвертировать структуру данных в словарь без сложенных структур.
На вход подается строка в формате json. На выходе ожидается полученный словарь. Словарь нужно выводить отсортированным по ключам. Например:
{"list": [1, 2, 3]}
{'list.0': 1, 'list.1': 2, 'list.2': 3}
{"a": {"a1": null,"a2": 2},"b": {"b1": "12","b2": 1.2}}
{'a.a1': None, 'a.a2': 2, 'b.b1': '12', 'b.b2': 1.2}
Если встретился пустой список или словарь, тогда значение сохраняется.
{"empty_dict": {}, "empty_list": []}
{'empty_dict': {}, 'empty_list': []}
Если на вход подается невалидный json, то нужно выдавать пустой словарь {}.
Задачу нужно решать не через рекурсию. Решения через рекурсию засчитываться не будут.
Sample Input:
{"list": [1, 2, 3]}
Sample Output:
{'list.0': 1, 'list.1': 2, 'list.2': 3}
Дана строка, которая является абсолютным путем к файлу или директории в системе Unix.
Нужно упростить эту строку до каноничного пути.
Каноничный путь - это тот путь, который будет максимально простым и строгим, а именно:
- Путь начинается с единичного слеша /
- Любые две директории разделяются одиночным слешем
- Путь не может оканчиваться на /
- Путь может содержать только истинные директории к нужному файлу (то есть в пути не может быть '.' или '..')
На вход подается путь к файлу или директории в системе Unix.
На выходе ожидается каноничный путь.
Пример
абсолютный путь: /home/abc/../abc/file.txt
каноничный путь: /home/abc/file.txt
Программа должна возвращать упрощенный каноничный путь до файла или директории
Sample Input:
/../
Sample Output:
/
Дан лог сервера, который содержит логи операций с машинами. Для идентификации машин используется IPv4 адреса.
Нужно определить частоту встечаемости IP адресов.
На вход принимается лог.
На выходе ожидается список адресов с количеством упоминаний адреса (список IP-адресов, отсортированных в порядке убывания количества упоминаний). Если несколько IP-адресов имеют одинаковое количество упоминаний, то к ним применяется сортировка строк по убыванию.
Важно:
- В логе может встречаться текст похожий на IP, но не являющимся им. Например, 0.0.0.1000
- Также в логах могут встречаться маски подсети, например, 192.168.0.0/16. Их не нужно считать как ip.
- Строки логов могут быть пустые.
- Строка лога не обязательно содержит ip, но в логах обязательно содержится хотя бы один ip.
Например, если лог содержит следующие записи:
[2019-08-29 13:00:13] login to 10.64.64.8
[2019-08-29 13:15:35] logout from 95.213.255.16
[2019-08-29 14:14:33] ssh connection to 10.64.64.8
[2019-09-01 14:14:35] request from 35.228.158.140 to 10.64.65.8
[2019-09-01 14:14:35] login to 35.228.158.140
[2019-09-01 15:29:01] login to 35.228.158.140
Программа должна вывести на экран:
35.228.158.140 3
10.64.64.8 2
95.213.255.16 1
10.64.65.8 1
Sample Input:
[2019-08-29 13:00:13] login to 10.64.64.8
[2019-08-29 13:15:35] logout from 95.213.255.16
[2019-08-29 14:14:33] ssh connection to 10.64.64.8
[2019-09-01 14:14:35] request from 35.228.158.140 to 10.64.65.8
[2019-09-01 14:14:35] login to 35.228.158.140
[2019-09-01 15:29:01] login to 35.228.158.140
Sample Output:
35.228.158.140 3
10.64.64.8 2
95.213.255.16 1
10.64.65.8 1