Compito
Codifica una stringa che consiste interamente di alfabeti maiuscoli ( A-Z
) usando solo zeri e quelli, usando il tuo schema preferito. Ma la regola non è così semplice!
Regole
- Il programma / funzione deve gestire correttamente qualsiasi stringa di input valida di lunghezza 8 .
- I risultati devono avere la stessa lunghezza per tutti gli input.
- I risultati devono essere distinti per input distinti.
- I risultati devono essere il più brevi possibile.
- I risultati devono essere zero-uno bilanciati (avere un numero di quelli simili a quello degli zeri). Non devono essere uguali (cioè perfettamente bilanciati), ma il tuo punteggio sarà penalizzato per questo.
Non è necessario fornire un programma / funzione che decodifichi la codifica.
Ingresso e uscita
- Puoi decidere di accettare qualsiasi set di 26 caratteri ASCII stampabili distinti anziché
A-Z
. - È possibile decidere di generare qualsiasi coppia di caratteri ASCII stampabili distinti anziché
0
e1
. - Non è consentito generare un numero intero anziché una stringa di bit, poiché potrebbe avere zeri iniziali e non è chiaro se si è effettivamente rispettati la regola 2.
- Se si decide di discostarsi dal valore predefinito (
A-Z
input e01
output), è necessario specificare i set di caratteri di input / output nell'invio.
punteggio
- Punteggio di base: dimensione del codice o 1 se il programma risulta essere vuoto.
- sanzioni
- Penalità per lunghezza: moltiplicare
1.5 ** (encoded length - 42)
- Non ci sono bonus per essere più brevi; 42 è la lunghezza minima per una codifica perfettamente bilanciata di stringhe di 8 lunghezze con dimensione alfabeto 26.
- Penalità per essere sbilanciato: moltiplicare
2 ** max(abs(ones - zeros) for every valid input of length 8)
, doveones
ezeros
sono i conteggi di 1 e 0 in ciascuna uscita, rispettivamente. - L'invio deve mostrare un esempio nel caso peggiore (input / output) o una spiegazione teorica sul valore della penalità.
- Penalità per lunghezza: moltiplicare
- Vince il punteggio più basso.
Esempio di presentazione
Esolang ipotetico, 0 byte, punteggio 74733,8906
Ecco un ipotetico esolang, in cui un programma vuoto stampa tutti i codici ASCII dei caratteri di input in binario.
Ad esempio, se si fornisce AAAAAAAA
come input, il programma stamperà 1000001
8 volte di seguito, ad es 10000011000001100000110000011000001100000110000011000001
.
L'alfabeto di input è scelto per essere CEFGIJKLMNQRSTUVXYZabcdefh
. In questo modo, tutti i caratteri vengono convertiti in binari a sette cifre e i conteggi zero-one differiscono solo di uno per carattere (tutti hanno tre 1 e quattro 0 o viceversa quando convertiti in binario).
La lunghezza dell'uscita è sempre 56 e lo sbilanciamento nel caso peggiore si verifica sugli ingressi simili CCCCCCCC
, dove gli zeri compaiono 8 volte più di quelli.
Pertanto, il punteggio di questa presentazione è 1.5 ** (56 - 42) * 2 ** 8 == 74733.8906
.