"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
.