Как мне найти индекс строки в 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,

Другие вопросы по тегам