Напишите программу , которая проходит через строку без пробельных символов (можно предположить , что они являются цифры 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Я вижу, что ты там сделал, брат .