Напишите программу, которая принимает строку, в которой каждая строка состоит из символа с 0
отступом на некоторое количество пробелов. Верхняя строка не имеет отступа, и каждая вторая строка будет иметь отступ не более чем на один пробел перед строкой.
Никакие строки не будут содержать завершающие пробелы, но вы можете при желании предположить, что есть одна завершающая новая строка.
Например, входные данные могут выглядеть примерно так:
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Ваша задача состоит в том, чтобы нумеровать его как иерархическую схему , используя увеличивающиеся положительные целые числа в качестве заголовков строк. Это будет вывод для примера:
1
1
1
2
2
2
1
2
3
1
3
1
1
2
Обратите внимание, что каждый уровень иерархического отступа имеет свой собственный набор увеличивающихся чисел, даже если они доходят только до одного.
В выводе не должно быть завершающих пробелов, но при желании может быть один завершающий перевод строки.
Напишите полную программу, которая принимает входную строку через стандартный ввод или командную строку, или напишите функцию, которая принимает строку в качестве аргумента. Напечатайте результат или верните его в виде строки.
Самый короткий код в байтах побеждает.
Примеры
Если введена пустая строка, пустая строка должна быть выведена.
Следующим самым тривиальным примером является ввод
0
который должен стать
1
Большой пример - вход:
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Выход:
1
1
1
2
1
3
1
2
1
2
1
1
2
3
4
2
3
1
2
3
2
1
1
2
1
2
3
4
5
6
7
8
9
10
11
1
1
1
12
1
3
4
5
1
1
1
1
1
1
2
2
2
2
2
2
1
2
1
2
6
7
источник
S=[]\nfor w in input()[:-1].split('0\n'):S=([0]+S)[~len(w):];S[0]+=1;print w+`S[0]`
S=[]\nfor w in input().split('\n'):S=([0]+S)[-len(w):];S[0]+=1;print w[:-1]+`S[0]`
.CJam, 25 байт
Как и в моем Python-ответе , здесь используется массив для хранения номера каждого уровня отступов. Одно отличие, однако, состоит в том, что он использует
t
(набор массивов) для замены 0 в каждой строке на число, которое мы хотим.Попробуйте онлайн .
источник
JavaScript ES6,
8381 байтПри этом используется массив, который содержит текущий номер для каждого уровня отступа. Все после этого уровня сбрасывается до 0 с помощью
fill()
. РЕДАКТИРОВАТЬ: 2 байта сохранены благодаря совету vihan1086.Приведенный ниже фрагмент стека может быть использован для тестирования, поскольку он немного раскручен и использует лучше поддерживаемый синтаксис ES5. Вторая функция - это polyfill, потому
fill()
что нет короткого пути сделать это без ES6.источник
Питон - 191
Функция есть
z
.источник
Пип
-rn
,3127 байтВвод от стандартного ввода. Попробуйте онлайн!
объяснение
источник