La partie simple: étant donné une chaîne d'entrée contenant uniquement des caractères ASCII imprimables (espace - tilde), comptez le nombre d'occurrences de chaque caractère et retournez le résultat dans n'importe quel format pratique. Le résultat d'une chaîne a%hda7adoit être quelque chose comme: a:3, %:1, h:1, 7:1, d:1. Le tri n'est pas nécessaire, les délimiteurs et les formats sont facultatifs mais il faut comprendre facilement quel numéro correspond à quel caractère. Vous ne devez pas inclure de caractères qui ne sont pas dans la chaîne d'entrée ( a:3, b:0, c:0, d:1, ...n'est pas OK).
Le vrai défi:
Convertissez chaque caractère de votre code en un nombre binaire 8 bits (ou 16 bits si vous utilisez UTF-16 ou similaire) et énumérez chaque caractère à partir de 0.
Pour chaque caractère ( iest l'énumérateur), le i%7-bit 1 doit être 1. Les bits sont numérotés à droite. Tous les autres bits peuvent être ce que vous voulez.
Prenons le code suivant comme exemple:
[f]-xif)#f
En convertissant cela en binaire, nous obtenons le tableau ci-dessous. Le premier nombre (représentant [a un 1dans la position 0, de sorte que l'un est OK. Le deuxième numéro (représentant fa un 1dans la position 1, de sorte que l'un est OK aussi. Continuez comme ceci, et vous verrez que le code ci-dessus est valide.
C 76543210 Numéro de bit - -------- ---------- [0101101 1 0 - OK f 011001 1 0 1 - OK ] 01011 1 01 2 - OK - 0010 1 101 3 - OK x 011 1 1000 4 - OK i 01 1 01001 5 - OK f 0 1 100110 6 - OK ) 0010100 1 0 - OK # 001000 1 1 1 - OK f 01100 1 10 2 - OK
Si nous changeons le code en: ]f[-xif)#fnous obtiendrons le début suivant de la séquence:
C 76543210 Bit number
- -------- ----------
] 01011101 0 <- OK
f 01100110 1 <- OK
[ 01011011 2 <- Not OK
- 00101101 3 <- OK
Comme nous le voyons, le troisième caractère [n'a pas 1de deuxième position (indexé zéro), et ce code n'est donc pas valide.
Cas de test:
Input:
This is a string containing some symbols: ".#!".#&/#
Output:
! " # & / : T a b c e g h i l m n o r s t y .
7 1 2 3 1 1 1 1 2 1 1 1 2 1 5 1 2 4 3 1 6 2 1 2
Tout format de sortie raisonnable est OK (celui qui vous convient le mieux). Vous pourriez par exemple avoir: :7, !:1, ":2, #:3, &:1, /:1, T:1, a:2 ...ou [ ,7][!,1][",2][#,3][&,1].... La sortie se fait de n'importe quelle manière standard (retour de la fonction, imprimé sur STDOUT etc.)
1i module 7.
Il s'agit de code-golf , donc le code le plus court en octets gagnera ref .
00001010. Cela peut aussi être utile! :)
n%7th spot> pastie.org/pastes/10985263/text