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%hda7a
doit ê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 ( i
est 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 1
dans la position 0, de sorte que l'un est OK. Le deuxième numéro (représentant f
a un 1
dans 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)#f
nous 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 1
de 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%7
th spot> pastie.org/pastes/10985263/text