Вызов
Напишите непустую программу / функцию, p
которая, учитывая непустую входную строку s
, выводит позицию первого вхождения каждого символа s
в исходном коде p
.
Например, если ваша программа
main() { cout << magic << cin }
^0 ^5 ^10 ^15 ^20 ^25
и он получает вход abcd{
, выход должен быть
[1, x, 9, x, 7] (0-based) [2, x, 10, x, 8] (1-based)
Здесь, x
представляет любой вывод , который не является допустимым для вывода позиции символа (например, отрицательное число, 0
если вы используете индексацию 1 на основе, NaN
, Inf
, строка potato
, число больше длины вашей программы, и т.д.).
ограничения
Чтение исходного кода не допускается (как в правильном квине). Использование комментариев разрешено, но учитывается при подсчете очков.
Ввод и вывод могут быть выполнены в разумном формате, но должны быть однозначными (только дополнительные разделители, нет rand
потока и утверждение, что ответ где-то там), согласованным (например, приведенное x
выше значение всегда должно быть одинаковым) и человеком читаемый ; например, строка или массив символов. Вы можете предположить, что ввод представляет собой строку (или массив) печатных символов ASCII; нет необходимости обрабатывать весь набор Unicode.
Пользовательская кодовая страница или непечатаемая ascii в вашем коде?
Если ваш язык использует пользовательскую кодовую страницу (Jelly, APL и т. Д.), Вы должны принять это во внимание (поэтому программа €æÆ
должна выводить данные [1, x, 2]
для ввода €%æ
). Использование только не-ASCII символов для вывода -1
всегда (так как ввод только ASCII) не является допустимым решением. Вы можете предположить, что ваша программа изначально принимает вашу пользовательскую кодовую страницу, т. Е. Если ваша программа имеет метод преобразования символа A
в целое число 65
(кодировка ASCII), вы можете предположить, что теперь она преобразует 65-й символ в вашей кодовой странице 65
.
Вдохновлен следующей задачей: Позиционная осведомленность
01030708070
,?