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.Antworten:
Holzkohle , 110 Bytes
Probieren Sie es online aus! Der Link führt zur ausführlichen Version des Codes. Nimmt die Eingabe als Array von zwei Zeichenfolgen auf. Erläuterung:
Entfernen Sie die Leerzeichen von beiden Zeichenfolgen.
Nehmen Sie die Gewichtsbalance an.
Schleife über beide Saiten.
Subtrahieren Sie die Laufdifferenz vom Gewicht der Saite.
Drucken Sie die Basis der Waage.
Angenommen, beide Pfannen befinden sich 3 über dem Boden.
Wenn die Gewichte nicht balancierten ...
... die Höhe der linken Pfanne berechnen ...
... ziehen Sie die Waage nach rechts unten ...
... und überlegen, ob die linke Pfanne schwerer war.
Ansonsten ziehen Sie eine Waage.
Springe zur ersten Waagschale.
Schleife über die Eingänge.
Zeichnen Sie die Waagschale.
Schneiden Sie die Eingabe in Teilzeichenfolgen der Länge 6 und drucken Sie sie verkehrt herum, so dass sie die Pfanne nach oben füllen.
Springe zur zweiten Waagschale.
quelle
Python 2 ,
11011071855837 Bytes-216 Bytes mit String-Komprimierung
-18 Bytes durch Reduzieren einiger Wiederholungen
Probieren Sie es online aus!
Ausführen als
A(string_one, string_two
.w
berechnet das Gewicht der Zeichenfolge rekursiv.t
ist der komprimierte und verschachtelte Text aller sechs möglichen Skalen, der sehr gut komprimiert wird.p
Nimmt die Zeichenfolge (mit entfernten Leerzeichen), das Gewicht der Zeichenfolge und die Seite des Gleichgewichts, auf der sich die Zeichenfolge befindet, und erstellt einen 5x6-Zeichenblock.A
nimmt die Saiten und baut ihre Blöcke mitp
. Die riesige Zeichenfolge unten besteht aus drei Format-Zeichenfolgen, die interlaced und komprimiert sind.quelle
JavaScript (ES6),
340337 ByteNimmt die Eingabe als Array von 2 Zeichenarrays auf. Zeichnet die Ausgabe zeichenweise.
Probieren Sie es online aus!
Wie?
Wir rufen jetzt die zweite Hilfsfunktion auf, um die Ausgabe zu zeichnen:
Wo
INDEX
wird wie folgt berechnet:quelle
Java 10,
1043993988983 Bytes-5 Bytes dank @ceilingcat .
Eingabe sind zwei Strings, die als Ergebnis eine Zeichenmatrix ergeben.
Probieren Sie es online aus.
Erläuterung:
quelle