Défi
Ecrivez un programme / fonction non vide p
qui, à partir d’une chaîne d’entrée non vide s
, affiche la position de la première occurrence de chaque caractère s
dans le code source de p
.
Par exemple, si votre programme est
main() { cout << magic << cin }
^0 ^5 ^10 ^15 ^20 ^25
et il reçoit une entrée abcd{
, la sortie doit être
[1, x, 9, x, 7] (0-based) [2, x, 10, x, 8] (1-based)
Ici, x
représente une sortie qui n'est pas une sortie valide pour une position de caractère (par exemple, un numéro de négatif, 0
si vous utilisez une indexation de base 1, NaN
, Inf
, la chaîne potato
, un nombre supérieur à la longueur de votre programme, etc.).
Les restrictions
La lecture du code source n'est pas autorisée (comme dans un bon quine). L'utilisation de commentaires est autorisée, mais compte pour votre score.
Entrée et la sortie peut être fait dans un format raisonnable, mais doit être sans ambiguïté (seulement délimiteurs supplémentaires, aucun rand
cours d' eau et affirmant que la réponse est quelque part là - dedans), cohérente (par exemple, en x
haut doit toujours être la même valeur) et origine humaine lisible ; par exemple, une chaîne ou un tableau de caractères. Vous pouvez supposer que l'entrée est une chaîne (ou un tableau) de caractères ASCII imprimables. pas besoin de gérer l'ensemble du jeu Unicode.
Page de code personnalisée ou ASCII non imprimable dans votre code?
Si votre langue utilise une page de code personnalisée (Jelly, APL, etc.), vous devez en tenir compte (un programme €æÆ
doit donc générer [1, x, 2]
une sortie pour une entrée €%æ
). Utiliser toujours uniquement des caractères non-ASCII pour la sortie -1
(puisque l'entrée est uniquement en ASCII) n'est pas une solution valide. Vous pouvez supposer que votre programme accepte nativement votre page de code personnalisée, c'est-à-dire que si votre programme dispose d'une méthode de conversion d'un caractère A
en entier 65
(codage ASCII), vous pouvez supposer qu'il convertit maintenant le 65e caractère de votre page de code en 65
.
Inspiré par le défi suivant: sensibilisation positionnelle
01030708070
,?