Desafio
Escreva um programa / função não vazio p
que, dada uma sequência de entrada não vazia s
, produza a posição da primeira ocorrência de cada caractere s
no código fonte de p
.
Por exemplo, se o seu programa for
main() { cout << magic << cin }
^0 ^5 ^10 ^15 ^20 ^25
e recebe uma entrada abcd{
, a saída deve ser
[1, x, 9, x, 7] (0-based) [2, x, 10, x, 8] (1-based)
Aqui, x
representa qualquer saída que não é uma saída válida para uma posição de caractere (por exemplo, um número negativo, 0
se você usa indexação baseada em 1, NaN
, Inf
, a string potato
, um número maior do que o comprimento do seu programa, etc).
Restrições
A leitura do código fonte não é permitida (como em um quine apropriado). O uso de comentários é permitido, mas conta para a sua pontuação.
A entrada e a saída podem ser feitas em um formato razoável, mas devem ser inequívocas (apenas delimitadores adicionais, sem rand
fluxo e alegando que a resposta está em algum lugar), consistente (por exemplo, o x
acima deve sempre ser o mesmo valor) e humano. legível ; por exemplo, uma sequência ou uma matriz de caracteres. Você pode assumir que a entrada é uma sequência (ou matriz) de caracteres ASCII imprimíveis; não há necessidade de lidar com todo o conjunto Unicode.
Página de código personalizada ou ascii não imprimível no seu código?
Se o seu idioma usa uma página de código personalizada (Jelly, APL, etc), você deve levar isso em conta (para que um programa €æÆ
exiba [1, x, 2]
uma entrada €%æ
). Usar apenas caracteres não ASCII para gerar -1
sempre (uma vez que a entrada é somente ASCII) não é uma solução válida. Você pode assumir que seu programa aceita nativamente sua página de códigos personalizada, ou seja, se seu programa possui um método de converter um caractere A
em um número inteiro 65
(codificação ASCII), você pode assumir que agora ele converte o 65º caractere em sua página de código em 65
.
Inspirado no seguinte desafio: Consciência posicional
01030708070
,?