Die Herausforderung
Geben Sie zwei Zeichenfolgen mit einer Länge von jeweils bis zu 30, die aus druckbaren ASCII-Zeichen (Codes ) bestehen, in den wenigsten Code-Bytes auf eine Waage! Dies besteht aus folgenden Schritten:
- Berechnen und vergleichen Sie die Gewichte der Zeichenfolgen
- Wählen Sie die entsprechend geneigte ASCII-Kunstskala
- Legen Sie die beiden Saiten auf die Waage
Die Zeichenfolgen können als Array, zwei Argumente oder eine andere sinnvolle Methode übergeben werden.
Das Gewicht einer Zeichenfolge ist definiert als die Summe der Gewichte der Zeichen dieser Zeichenfolge, wobei:
- Leerzeichen haben ein Gewicht von 0 (
) - Kleinbuchstaben haben ein Gewicht von 2 (
abcdefghijklmnopqrstuvwxyz) - Großbuchstaben haben ein Gewicht von 4 (
ABCDEFGHIJKLMNOPQRSTUVWXYZ) - Alle anderen Symbole haben ein Gewicht von 3 (
!"#$%&'()*+,-./0123456789:;<=>?@[\]^_`{|}~)
Die Waage sieht folgendermaßen aus:
. _
| _- * / \
| - * / \
_- * | / \.
_- * | / \.
/ \ | * ------ *
/ \ |
/ \ |
/ \ |
* ------ * |
______ | ______
_.
/ \ * -_ |
/ \ * - |
/ \ | * -_
/ \ | * -_
* ------ * | / \.
| / \.
| / \.
| / \.
| * ------ *
______ | ______
.
|
______ | ______
/ \ | / \.
/ \ | / \.
/ \ | / \.
/ \ | / \.
* ------ * | * ------ *
|
|
______ | ______
Wenn die erste Zeichenfolge schwerer ist, verwenden Sie die erste Zeichnung als Basis für Ihre Ausgabe. Wenn die zweite Zeichenfolge schwerer ist, verwenden Sie die zweite Zeichnung. Wenn die Saiten das gleiche Gewicht haben, verwenden Sie die dritte. Nachgestellte Leerzeichen sind zulässig.
Ich werde ein Segment der dritten Zeichnung als Basis für alle folgenden Beispiele verwenden.
Die erste Saite sollte auf die linke Pfanne und die zweite Saite auf die rechte Pfanne gelegt werden.
Platzieren Sie eine Zeichenfolge in einer Pfanne, indem Sie die Nicht-Leerzeichen innerhalb des 6x5-Bereichs unmittelbar über den Bindestrichen platzieren, wie hier mit #s gekennzeichnet (möglicherweise überschreiben Sie einen Teil der Waage - das ist in Ordnung):
###### _ ###### ###### ###### / ###### \ * ------ *
Alle diese Zeichen sollten "erledigt" sein, dh. entweder über einem -Zeichen oder einem anderen Zeichen aus der Zeichenfolge:
FALSCH FALSCH RICHTIG
____ ____ ____
f / \ / \ / \
l \ / \ / \
/ \ / hov \ / s \
/ oating \ / eri ng \ / ettled \
* ------ * * ------ * * ------ *
Außerdem sollte der gesamte Stapel so flach wie möglich sein, dh von den sechs 1-breiten Säulen dürfen sich die Höhe der höchsten und die Höhe der kürzesten nicht um mehr als 1 unterscheiden:
FALSCH FALSCH RICHTIG RICHTIG
[am höchsten: 5] [am höchsten: 4] [am höchsten: 5] [am höchsten: 2]
[kürzeste: 0] [kürzeste: 2] [kürzeste: 4] [kürzeste: 2]
5__5_ ____ 5_5__ ____
45445 & / \ 445454 / \
45445 $% & $ @ 445454 / \
/ 45445 &% @% $ & 445454% & $ @% &
/ 45445 \ / & $ @ $ &% \ / 445454 \ / $ @ $% $$ \
* ------ * * ------ * * ------ * * ------ *
Die genaue Reihenfolge / Anordnung der Zeichen spielt keine Rolle. Das Folgende sind alle gültigen Anordnungen für die Zeichenfolge "Wiegen Sie Ihre Wörter!":
____ ____ ____ ____ / \ / \ / \ / \ ds! \ / owd oe \ u! Wd \ ourwor Wihuos yoiwgr eghioo / Weighy \ / egyrr! \ / Wrhd! S \ / rrsuwy \ * ------ * * ------ * * ------ * * ------ *
Testfälle
EINGABE: "CODE GOLF", "Codierungsherausforderungen"
GEWICHTE: 32, 32
BEISPIELAUSGABE:
.
|
______ | ______
/ \ | / \.
/ \ | nge \ s
/ OO \ | Herausforderung
/ CFGLED \ | / Kodierung \
* ------ * | * ------ *
|
|
______ | ______
EINGABE: "", "$"
GEWICHTE: 0, 3
BEISPIELAUSGABE:
_.
/ \ * -_ |
/ \ * - |
/ \ | * -_
/ \ | * -_
* ------ * | / \.
| / \.
| / \.
| / $ \
| * ------ *
______ | ______
EINGABE: "SIE WISSEN, WAS SIE SAGEN!", "Es gibt immer einen relevanten xxccd"
GEWICHTE: 75, 65
BEISPIELAUSGABE:
. tr_a_s
| _hekx_y
| - * elcdta
_- * | revanw
_- * | / e's_al \
T / \ | * ------ *
AUYOHY |
A! HWYK |
/ OTSMEW \ |
* ------ * |
______ | ______
+1. Erstens: Wenn Räume nichts "wiegen" und nicht in das Kunstwerk aufgenommen werden, warum sollten sie dann überhaupt aufgenommen werden? Es ist nur unnötig, sie zuerst herauszufiltern. Zweitens: Dies fühlt sich für mich wie eine "2-in-1" / Chamäleon-Herausforderung an - Herausforderung 1: Bestimmen Sie, welche Saite "schwerer" ist. Herausforderung 2: Generieren Sie ASCII-Kunst.