Reto
Escriba un programa / función no vacío p
que, dada una cadena de entrada no vacía s
, muestre la posición de la primera aparición de cada carácter s
en el código fuente de p
.
Por ejemplo, si su programa es
main() { cout << magic << cin }
^0 ^5 ^10 ^15 ^20 ^25
y recibe una entrada abcd{
, la salida debe ser
[1, x, 9, x, 7] (0-based) [2, x, 10, x, 8] (1-based)
En este caso, x
representa cualquier salida que no es una salida válida para una posición de carácter (por ejemplo, un número negativo, 0
si se utiliza la indexación basada en 1, NaN
, Inf
, la cadena potato
, un número mayor que la longitud de su programa, etc.).
Restricciones
No está permitido leer el código fuente (como en una quine adecuada). El uso de comentarios está permitido, pero cuenta para su puntaje.
La entrada y la salida se pueden hacer en un formato razonable, pero deben ser inequívocas (solo delimitadores adicionales, sin rand
flujo y alegando que la respuesta está en algún lugar), consistente (por ejemplo, lo x
de arriba siempre debe ser el mismo valor) y humano. LEGIBLE ; por ejemplo, una cadena o una matriz de caracteres. Puede suponer que la entrada es una cadena (o matriz) de caracteres ASCII imprimibles; no es necesario manejar todo el conjunto Unicode.
Página de códigos personalizada o ascii no imprimible en su código?
Si su idioma utiliza una página de códigos personalizada (Jelly, APL, etc.), debe tener eso en cuenta (por lo que un programa €æÆ
debe generar [1, x, 2]
una entrada €%æ
). Usar solo caracteres no ASCII para generar -1
siempre (dado que la entrada es solo ASCII) no es una solución válida. Puede suponer que su programa acepta de forma nativa su página de códigos personalizada, es decir, si su programa tiene un método para convertir un carácter A
en un entero 65
(codificación ASCII), puede suponer que ahora convierte el 65º carácter en su página de códigos 65
.
Inspirado en el siguiente desafío: conciencia posicional
01030708070
,?