Как мне найти индекс строки в Golfscript? - PullRequest
3 голосов
/ 11 сентября 2011

Учитывая строку "ABCDE", как мне найти индекс появления другой строки "C" в Golfscript?

?оператор не работает (http://www.golfscript.com/golfscript/builtin.html#?):

"C" "ABCDE"?

1 Ответ

5 голосов
/ 30 октября 2011
"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.

...