La parte simple: dada una cadena de entrada que contiene solo caracteres ASCII imprimibles (espacio - tilde), cuente el número de ocurrencias de cada carácter y devuelva el resultado en cualquier formato conveniente. El resultado de una cadena a%hda7a
debe ser algo como: a:3, %:1, h:1, 7:1, d:1
. La clasificación es innecesaria, los delimitadores y formatos son opcionales, pero debe entenderse fácilmente qué número corresponde a qué carácter. No debe incluir caracteres que no estén en la cadena de entrada ( a:3, b:0, c:0, d:1, ...
no está bien).
El verdadero desafío:
Convierta cada carácter en su código a un número binario de 8 bits (o 16 bits si está utilizando UTF-16 o similar), y enumere cada carácter comenzando en 0
.
Para cada carácter ( i
es el enumerador), el i%7
-bit 1 debe ser 1
. Los bits están numerados desde la derecha. Todos los demás bits pueden ser lo que quieras.
Usemos el siguiente código como ejemplo:
[f]-xif)#f
Al convertir esto a binario, obtenemos la matriz a continuación. El primer número (que representa [
tiene un a 1
en la posición 0, por lo que uno está bien. El segundo número (que representa f
tiene un 1
en la posición 1, por lo que uno también está bien. Continúe así, y verá que el código anterior es válido
C 76543210 Número 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 cambiamos el código a: ]f[-xif)#f
obtendremos el siguiente inicio de la secuencia:
C 76543210 Bit number
- -------- ----------
] 01011101 0 <- OK
f 01100110 1 <- OK
[ 01011011 2 <- Not OK
- 00101101 3 <- OK
Como vemos, el tercer carácter [
no tiene un 1
en la segunda posición (indexado a cero) y, por lo tanto, este código no es válido.
Casos de prueba:
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
Cualquier formato de salida razonable está bien (lo que sea más conveniente para usted). Podría, por ejemplo, tener: :7, !:1, ":2, #:3, &:1, /:1, T:1, a:2 ...
o [ ,7][!,1][",2][#,3][&,1]...
. La salida está en cualquier forma estándar (retorno de la función, impreso en STDOUT, etc.)
1i
módulo 7
.
Este es el código de golf , por lo que el código más corto en bytes ganará ref .
00001010
. ¡También puede ser útil! :)
n%7
punto th> pastie.org/pastes/10985263/text