Einführung
Eine Codepage ordnet Ganzzahlwerte einem bestimmten Zeichen zu. Wir können eine Codepage wie diese visualisieren:
+ --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + - + --- + --- + --- + --- + | | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + - + --- + --- + --- + --- + | 0 | q | w | e | r | t | z | u | ich | o | p | a | s | d | f | g | j | + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + - + --- + --- + --- + --- + | 1 | k | l | y | x | c | v | b | n | m | Q | W | E | R | T | Z | U | + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + - + --- + --- + --- + --- + | 2 | Ich | O | P | A | S | D | F | G | H | J | | | | | | | + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + - + --- + --- + --- + --- +
Die Zeilen geben die erste Ziffer und die Spalten die zweite Ziffer der Hex-Zahl an.
Die Herausforderung
Geben Sie bei einer Zeichenfolge mit 16 bis 255 eindeutigen Zeichen die entsprechende Codepage aus, wobei Sie den auf Null basierenden Index jedes Zeichens in der Zeichenfolge als Wert verwenden. Die Eingabe würde qwertzuiopasdfghjklyxcvbnmQWERTZUIOPASDFGHJ
zum Beispiel die obige Tabelle ergeben.
- Die Ausgabe muss genau das gleiche Format haben wie in der obigen Tabelle. Nur ein abschließender Zeilenumbruch ist optional.
- Wenn die Eingabelänge kein Vielfaches von 16 ist, müssen Sie eine neue Zeile für die verbleibenden Zeichen beginnen und die nicht verwendeten Zellen leer lassen (= mit 3 Leerzeichen gefüllt).
- Jedes Zeichen wird genau in der Mitte einer Zelle platziert und links und rechts um ein Leerzeichen aufgefüllt.
- Die Werte in der ersten Zeile und Spalte werden durch Hexadezimalzahlen mit den Ziffern angegeben
0123456789ABCDEF
. Diese sind links und rechts mit einem Leerzeichen aufgefüllt. Sie können auch hexadezimale Kleinbuchstaben verwenden, müssen sich jedoch an eine halten. - Die einzigen in der Ausgabe vorhandenen Zeichen sind Bindestriche
-
, Pluszeichen+
, Pipes|
, Leerzeichen, die Ziffern für Hexadezimalzahlen und die Zeichen aus der Eingabe.
- Alle eingebauten Elemente, die sich auf ASCII-Tabellen beziehen oder das Problem in irgendeiner Weise trivialisieren, sind verboten.
- Sie können davon ausgehen, dass die Eingabe nur aus Zeichen einer bestimmten Codierung besteht. Bitte geben Sie an, ob dies der Fall ist.
- Wenn Ihre Sprache nur ASCII-Eingaben verarbeiten kann, können Sie nur ASCII-Eingaben und wiederholte Zeichen annehmen.
Regeln
- Funktion oder Vollprogramm erlaubt.
- Standardregeln für die Eingabe / Ausgabe.
- Es gelten Standardlücken .
- Dies ist Code-Golf , also gewinnt die niedrigste Byte-Anzahl. Tiebreaker ist eine frühere Vorlage.
Viel Spaß beim Codieren!
Antworten:
Pyth, 60 Bytes
Der führende Zeilenumbruch ist signifikant.
Probieren Sie es hier aus.
quelle
+---+---+---[...]
. In Pyth gibt die Funktion newline das Argument aus und gibt es zurück.Python 3.5,
326355 Bytes:( +29 Bytes, da, wenn die Länge der letzten Zeile kein Vielfaches von 16 ist, nicht verwendete Zellen leer bleiben sollten (obwohl es meiner Meinung nach viel besser aussieht, wenn diese leeren Zellen einfach nicht einmal angezeigt werden) )
Klappt wunderbar!
Beispieleingänge und -ausgänge:
Ich hoffe das ist okay.
Auch hier ist eine andere Version , die ich für diese Herausforderung geschaffen, die, obwohl sie ein ungültiges Kandidat , da es sich nicht zusätzliche leere Zellen für die letzte Zeile ausdrucken, wenn seine Länge nicht ein Vielfaches 16 ist, meiner Meinung nach gibt ein viel besser aussehende Seite als die von OP geforderte, vor allem, weil sie keine leeren Zellen anzeigt, wenn die letzte Zeile kein Vielfaches von 16 ist, sondern nur gefüllte Zellen anzeigt, und das wars:
Hier ist ein Beispiel für die Eingabe und Ausgabe des oben nicht zutreffenden Codes:
quelle
05AB1E ,
6563 BytesCode:
Probieren Sie es online! . Verwendet die CP-1252- Codierung.
quelle
JavaScript (ES6), 148 Byte
Das ist
' 0123456789ABCDEF'
vorhanden, um die erste Spalte zu füllen, es deckt jedoch auch die erste Zeile ab. Die Eingabezeichenfolge wird dann mit Leerzeichen aufgefüllt, damit sie in Teilzeichenfolgen der Länge 16 aufgeteilt werden kann, wobei(?|^)
verhindert wird, dass das führende Leerzeichen übereinstimmt. Der Rest fügt nur die Teile zusammen.quelle
Excel VBA, 157 Bytes (Betrug?)
Anonyme VBE-Direktfensterfunktion, die zerstörerisch Eingaben aus dem Bereich
[A1]
und Ausgaben in das VBE-Direktfenster aufnimmtActiveSheet
Objekt .Golf gespielt
Formatiert
Input-Output
Gegeben:
Die generierte Ausgabe ist
quelle