Tarea
Codifique una cadena que consista completamente en alfabetos en mayúscula ( A-Z
) usando solo ceros y unos, usando su propio esquema favorito. ¡Pero la regla no es tan simple!
Reglas
- Su programa / función debe manejar correctamente cualquier cadena de entrada válida de longitud 8 .
- Los resultados deben tener la misma longitud para todas las entradas.
- Los resultados deben ser distintos para entradas distintas.
- Los resultados deben ser lo más cortos posible.
- Los resultados deben ser cero-uno equilibrado (tener un número similar a los de ceros). No tienen que ser iguales (es decir, perfectamente equilibrados), pero su puntaje será penalizado por eso.
No tiene que proporcionar un programa / función que decodifique su codificación.
Entrada y salida
- Puede decidir aceptar cualquier conjunto de 26 caracteres ASCII imprimibles distintos en lugar de
A-Z
. - Puede decidir generar cualquier par de caracteres ASCII imprimibles distintos en lugar de
0
y1
. - No puede generar un número entero en lugar de una cadena de bits, ya que puede tener ceros a la izquierda y no está claro si realmente cumplió con la regla 2.
- Si decide desviarse del valor predeterminado (
A-Z
entrada y01
salida), debe especificar los conjuntos de caracteres de entrada / salida en su envío.
Puntuación
- Puntaje base: tamaño del código, o 1 si su programa está vacío.
- Sanciones
- Penalidad por longitud: multiplicar
1.5 ** (encoded length - 42)
- No hay bonificación por ser más bajo; 42 es la longitud mínima para una codificación perfectamente equilibrada de cadenas de 8 longitudes con un tamaño de alfabeto 26.
- Penalización por estar desequilibrado: multiplica
2 ** max(abs(ones - zeros) for every valid input of length 8)
, dondeones
yzeros
son los recuentos de 1 y 0 en cada salida, respectivamente. - Su envío debe mostrar el peor de los casos (entrada / salida) o una explicación teórica sobre el valor de la penalización.
- Penalidad por longitud: multiplicar
- El puntaje más bajo gana.
Presentación de ejemplo
Esolang hipotético, 0 bytes, puntuación 74733.8906
Aquí hay un hipotético esolang, donde un programa vacío imprime todos los códigos ASCII de los caracteres de entrada en binario.
Por ejemplo, si da AAAAAAAA
como entrada, el programa imprimirá 1000001
8 veces seguidas, es decir 10000011000001100000110000011000001100000110000011000001
.
El alfabeto de entrada se elige para ser CEFGIJKLMNQRSTUVXYZabcdefh
. De esta manera, todos los caracteres se convierten a siete dígitos en binario, y los recuentos de cero uno difieren solo en uno por carácter (todos tienen tres 1 y cuatro 0 o viceversa cuando se convierten en binario).
La longitud de salida siempre es 56, y el desequilibrio en el peor de los casos ocurre en las entradas como CCCCCCCC
, donde los ceros aparecen 8 veces más que unos.
Por lo tanto, el puntaje de esta presentación es 1.5 ** (56 - 42) * 2 ** 8 == 74733.8906
.