¿Cómo encuentro el índice de una cadena en GolfScript?
-
28-10-2019 - |
Pregunta
Dada una cadena "abcde", ¿cómo encuentro el índice de ocurrencia de otra cadena "c" en golfscript?
? El operador no parece funcionar (http://www.golfscript.com/golfscript/builtin.html#?):
"C" "Abcde"?
Solución
"C""ABCDE".,,@`@`{@>1$,<=}++?
No hay forma de que "C" "ABCDE" ?
funcionaría: si eso hiciera una búsqueda de cadenas, estaría buscando la primera ocurrencia de ABCDE
en C
.
Sin embargo, en las cadenas de GolfScript son realmente una presentación diferente de matrices de enteros. "ABCDE"67?
da 2
Porque 67 es el punto de código unicode para C
.
Un enfoque ligeramente mejor que puede esperar trabajar pero no es (x)
"C""ABCDE".,,\`{>1$,<}+%\?
Esto es bastante contradictorio, pero "correcto": ?
es una operación de pedido, y la cadena tiene prioridad sobre la matriz. Comparar:
[[1][2][3][4][5]][3]?
["1""2""3""4""5"]"3"?
El primero da 2, como se esperaba, pero el segundo da -1 porque la prioridad de la cadena significa que está buscando la matriz dentro de la cadena, y ninguna matriz será igual a un int representando un punto de código unicode. Sin embargo, estos ejemplos señalan el camino hacia otro enfoque para reducir las cadenas a matrices de INT antes de usar el enfoque X.
Actualizar
Envié un correo electrónico a Flagitious Sugeriendo un parche y la última versión de GolfScript tiene un nuevo comportamiento para string string ?
y string array ?
. Entonces, si actualizas, "ABCDE""C"?
debería ceder 2
.