Tarefa
Codifique uma string que consiste inteiramente de letras maiúsculas ( A-Z
) usando apenas zeros e uns, usando seu próprio esquema favorito. Mas a regra não é tão simples!
Regras
- Seu programa / função deve manipular corretamente qualquer sequência de entrada válida de comprimento 8 .
- Os resultados devem ter o mesmo comprimento para todas as entradas.
- Os resultados devem ser distintos para entradas distintas.
- Os resultados devem ser tão curtos quanto possível.
- Os resultados devem ser balanceados em zero um (ter um número semelhante ao dos zeros). Eles não precisam ser iguais (ou seja, perfeitamente equilibrados), mas sua pontuação será penalizada por isso.
Você não precisa fornecer um programa / função que decodifique sua codificação.
Entrada e saída
- Você pode optar por aceitar qualquer conjunto de 26 caracteres ASCII imprimíveis distintos em vez de
A-Z
. - Você pode optar por imprimir qualquer par de caracteres ASCII imprimíveis distintos em vez de
0
e1
. - Você não tem permissão para gerar um número inteiro em vez de uma sequência de bits, pois pode ter zeros à esquerda e não está claro se você realmente cumpriu a regra 2.
- Se você decidir se desviar do padrão (
A-Z
entrada e01
saída), deverá especificar os conjuntos de caracteres de entrada / saída no seu envio.
Pontuação
- Pontuação básica: tamanho do código ou 1 se o seu programa estiver vazio.
- Sanções
- Pena por comprimento: multiplicar
1.5 ** (encoded length - 42)
- Não há bônus por ser mais baixo; 42 é o comprimento mínimo para uma codificação perfeitamente equilibrada de cadeias de 8 comprimentos com tamanho de alfabeto 26.
- Penalidade por desequilíbrio: multiplique
2 ** max(abs(ones - zeros) for every valid input of length 8)
, ondeones
ezeros
são as contagens de 1 e 0 em cada saída, respectivamente. - Seu envio deve mostrar um exemplo de pior caso (entrada / saída) ou explicação teórica sobre o valor da penalidade.
- Pena por comprimento: multiplicar
- A pontuação mais baixa vence.
Submissão de exemplo
Esolang hipotético, 0 Bytes, Pontuação 74733.8906
Aqui está um esolang hipotético, em que um programa vazio imprime todos os códigos ASCII dos caracteres da entrada em binário.
Por exemplo, se você fornecer AAAAAAAA
como entrada, o programa imprimirá 1000001
8 vezes seguidas, ou seja 10000011000001100000110000011000001100000110000011000001
.
O alfabeto de entrada é escolhido para ser CEFGIJKLMNQRSTUVXYZabcdefh
. Dessa forma, todos os caracteres são convertidos em sete dígitos em binário e a contagem de zero e um difere apenas um por caractere (todos eles têm três 1 e quatro 0 ou vice-versa quando convertidos em binário).
O comprimento da saída é sempre 56 e o pior desequilíbrio ocorre nas entradas como CCCCCCCC
, onde os zeros aparecem 8 vezes mais do que aqueles.
Portanto, a pontuação dessa submissão é 1.5 ** (56 - 42) * 2 ** 8 == 74733.8906
.