Как мне найти индекс строки в Golfscript?
Учитывая строку "ABCDE", как мне найти индекс появления другой строки "C" в Golfscript?
? оператор не работает ( http://www.golfscript.com/golfscript/builtin.html):
"C" "ABCDE"?
1 ответ
"C""ABCDE".,,@`@`{@>1$,<=}++?
Там нет никакого способа, которым "C" "ABCDE" ?
будет работать - если бы это сделал поиск строки, он будет искать первое вхождение ABCDE
в C
,
Тем не менее, в GolfScript строки действительно отличаются представлением массивов целых чисел. "ABCDE"67?
дает 2
потому что 67 является кодовой точкой Unicode для C
,
Один немного более хороший подход, который вы можете ожидать, но не работает (X)
"C""ABCDE".,,\`{>1$,<}+%\?
Это довольно нелогично, но "правильно": ?
является операцией заказа, и строка имеет приоритет над массивом. Для сравнения:
[[1][2][3][4][5]][3]?
["1""2""3""4""5"]"3"?
Первый дает 2, как и ожидалось, но второй дает -1, потому что приоритет строки означает, что он ищет массив внутри строки - и никакой массив никогда не будет равен int, представляющему кодовую точку Unicode. Однако эти примеры указывают путь к другому подходу сокращения строк в массивы целых перед использованием подхода X.
Обновить
Я отправил электронное письмо в редакцию с предложением патча, и последняя версия Golfscript имеет новое поведение для string string ?
а также string array ?
, Так что, если вы обновите, "ABCDE""C"?
должен дать 2
,