Напишите программу , которая проходит через строку без пробельных символов (можно предположить , что они являются цифры 0
до 9
, но ничего в том , как они должны быть обработаны не зависит от этого) , и добавляет пространства в соответствии со следующими правилами.
- Пусть текущий токен будет пустой строкой, а ранее выпущенные токены будут пустым набором.
- Перебирайте символы строки. Для каждого символа сначала добавьте символ к текущему токену. Затем, если текущий токен еще не находится в наборе ранее выпущенных токенов, добавьте текущий токен в этот набор и пусть новый текущий токен будет пустой строкой.
- Если по достижении конца строки текущий токен пуст, выведите ранее выпущенные токены в порядке эмиссии, разделенных пробелом. В противном случае выведите исходную строку дословно.
вход
Ввод к STDIN должен быть последовательностью цифр.
Выход
Программа должна распечатать результат, как указано в шаге 3.
образцы
Образцы входов
2015
10101010
4815162342
101010101010
3455121372425
123456789101112131415
314159265358979323846264338327950288419716939937
Пример выходов
2 0 1 5
10101010
4 8 1 5 16 2 3 42
1 0 10 101 01 010
3 4 5 51 2 1 37 24 25
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
3 1 4 15 9 2 6 5 35 8 97 93 23 84 62 64 33 83 27 95 0 28 841 971 69 39 937
Это код гольф, поэтому применяются стандартные правила компьютерной игры. Самая короткая программа в байтах побеждает.
(Пожалуйста, запросите любые пояснения в комментариях. Я все еще новичок в этом. Спасибо!)
1 0 10
, следующая итерация найдет 1
(уже использованная), затем продвинет одну, чтобы найти 10
(уже использованную), затем продвиньте одну, чтобы найти 101
, которая является новой и будет «добавлена». Затем будет добавлен пробел, и вы получите новый 0
, который уже использовался, но находится в конце строки. Следовательно, вывод будет 1 0 10 101 0
недопустимым ( 0
повторяется), и сценарий должен просто вывести входную строку. Это можно было сделать, только 1010
если 101
уже было использовано.
If a unique number cannot be formed at the end of the string, then the input should be printed verbatim
может быть разделен, поэтому он печатается как есть.
1
, который будет повторяться. Таким образом, вместо этого вы перемещаетесь вправо на 5 в пространстве 5, а затем снова перемещаетесь вправо на шаге 4, снова вводите шаг 5 и создаете 101
.
4815162342
Я вижу, что ты там сделал, брат .