Aufgabe
Codieren Sie eine Zeichenfolge, die ausschließlich aus Großbuchstaben ( A-Z
) besteht , und verwenden Sie dabei nur Nullen und Einsen. Verwenden Sie dabei Ihr eigenes Lieblingsschema. Aber die Regel ist nicht so einfach!
Regeln
- Ihr Programm / Ihre Funktion muss eine gültige Eingabezeichenfolge der Länge 8 korrekt verarbeiten .
- Die Ergebnisse müssen für alle Eingaben gleich lang sein.
- Die Ergebnisse müssen für unterschiedliche Eingaben unterschiedlich sein.
- Die Ergebnisse müssen so kurz wie möglich sein.
- Die Ergebnisse müssen eins zu null ausbalanciert sein (eine Anzahl von Einsen ähnlich der von Nullen). Sie müssen nicht gleich sein (dh perfekt ausbalanciert sein), aber Ihre Punktzahl wird dafür bestraft.
Sie müssen kein Programm / keine Funktion bereitstellen, die Ihre Codierung decodiert.
Ein- und Ausgang
- Sie können eine beliebige Menge von 26 verschieden zu akzeptieren entscheiden druckbaren ASCII - Zeichen statt
A-Z
. - Sie können festlegen, dass anstelle von und ein Paar eindeutiger druckbarer ASCII-Zeichen ausgegeben werden soll .
0
1
- Sie dürfen anstelle einer Bitfolge keine Ganzzahl ausgeben , da diese möglicherweise führende Nullen enthält und es unklar ist, ob Sie die Regel 2 tatsächlich erfüllt haben.
- Wenn Sie von der Standardeinstellung (
A-Z
Eingabe und01
Ausgabe) abweichen möchten , müssen Sie die Eingabe- / Ausgabe-Zeichensätze in Ihrer Übermittlung angeben.
Wertung
- Basisbewertung: Codegröße oder 1, wenn Ihr Programm leer ist.
- Strafen
- Strafe für Länge: multiplizieren
1.5 ** (encoded length - 42)
- Es gibt keinen Bonus dafür, kürzer zu sein. 42 ist die Mindestlänge für eine perfekt ausbalancierte Kodierung von 8-fachen Zeichenfolgen mit der Alphabetgröße 26.
- Strafe für Unausgeglichenheit: Multiplizieren Sie
2 ** max(abs(ones - zeros) for every valid input of length 8)
, woones
undzeros
sind die Zählungen von 1 und 0 in jedem Ausgang. - Ihr Beitrag muss entweder ein Worst-Case-Beispiel (Eingabe / Ausgabe) oder eine theoretische Erklärung zum Strafwert enthalten.
- Strafe für Länge: multiplizieren
- Die niedrigste Punktzahl gewinnt.
Beispiel Einsendung
Hypothetisches esolang, 0 Bytes, Kerbe 74733.8906
Hier ist ein hypothetischer Esolang, bei dem ein leeres Programm alle ASCII-Codes der eingegebenen Zeichen binär ausgibt.
Wenn Sie AAAAAAAA
beispielsweise eine Eingabe machen, druckt das Programm 1000001
8 Mal hintereinander, d 10000011000001100000110000011000001100000110000011000001
. H.
Das eingegebene Alphabet wird als gewählt CEFGIJKLMNQRSTUVXYZabcdefh
. Auf diese Weise werden alle Zeichen in Binärform in sieben Ziffern umgewandelt, und die Null-Eins-Zählungen unterscheiden sich nur um eins pro Zeichen (bei der Umwandlung in Binärform haben alle drei Einsen und vier Nullen oder umgekehrt).
Die Ausgabelänge beträgt immer 56, und der ungünstigste Fall tritt bei den Eingängen auf CCCCCCCC
, bei denen Nullen 8-mal häufiger auftreten als Einsen.
Daher ist der Punktestand dieser Einreichung 1.5 ** (56 - 42) * 2 ** 8 == 74733.8906
.