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

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top