Die Herausforderung
Geben Sie bei einer CSV-Eingabe eine richtige Unicode-Tabelle mit Box-Zeichen aus.
Formatierung
Die Tabelle wird nach folgenden Regeln formatiert:
- Die Spaltenbreite entspricht dem längsten Wert dieser Spalte
- Alle Tabellendaten bleiben in der richtigen Reihenfolge
- Jede Tabelle nimmt an, dass die erste csv-Zeile der Header ist
- In der Tabelle werden die folgenden Zeichen als Rahmen verwendet:
┌ ┬ ┐ ├ ┼ ┤ └ ┴ ┘ ─ │
Beispiel
Input:
Name,Age,Gender
Shaun,19,Male
Debra,19,Female
Alan,26,Male
George,15,Male
Output:
┌──────┬───┬──────┐
│Name │Age│Gender│
├──────┼───┼──────┤
│Shaun │19 │Male │
│Debra │19 │Female│
│Alan │26 │Male │
│George│15 │Male │
└──────┴───┴──────┘
Regeln
- Es gelten Standardlücken
- Sie können ein vollständiges Programm, eine Funktion oder ein Lambda einreichen
- Die Eingabe kann aus einer Datei, einem Programmargument oder einer beliebigen akzeptablen Alternative erfolgen
- Die Ausgabe kann in einer Datei, als Rückgabe oder in einer beliebigen akzeptablen Alternative erfolgen
- Die CSV-Eingabe sollte dasselbe Format wie in meinem Beispiel haben.
- Kürzeste Antwort in Bytes gewinnt.
CSV-Eingaben sollten die folgende Form haben:
Header1,Header2,Header3 newline
Column1,Column2,Column3 newline
Column1,Column2,Column3 optional_newline
Antworten:
Try (Dyalog) APL ,
3843 BytesDie letzte Eingabezeile muss mit einem Zeilenumbruch versehen sein.
Probieren Sie es online! Führen Sie in der Offline-Version von Dyalog APL
]boxing ON -style=min
den gleichen Effekt aus.Erläuterung
{
...}
eine anonyme Funktion, in⍵
der das Argument steht:¯1 ⌽ ⍵
Drehen Sie den hinteren Zeilenvorschub nach vorne(s ←
...)
definieren Sie die Funktion s wie folgt und wenden Sie sie an1 ↓¨
lassen Sie das erste Zeichen von jedem fallen⊢ ⊂⍨
Linie, wo aufgeteilt⊃ = ⊢
Das erste Zeichen entspricht den Zeichen in der Zeichenfolge',' ,¨
Stellen Sie dann jeder Zeile ein Komma vorans¨
Wenden Sie die Funktion s auf jede Zeile an{
...}
wende nun die folgende anonyme Funktion an:1 ↓ ⍵
lösche das erste Element (die Zeilenüberschriften)↓ ⍉ ↑
transponieren Sie die Liste der Zeilen in eine Liste der Spalten↑¨
Machen Sie jedes Element (eine Liste von Einträgen) zu einer Matrix von aufgefüllten Einträgen⍉ ⍪
In eine einspaltige Matrix umwandeln und dann in eine einzeilige Matrix umwandeln(⊃⍵) ⍪
setze das erste Element des Arguments (die Liste der Überschriften) oben drauf`Hinweis: Während die Strichzeichnungszeichen in meiner Lösung nicht explizit verwendet werden, sind sie Teil des APL-Zeichensatzes und werden auch als einzelne Bytes gezählt.
quelle
Is input using list or array of strings (and no newlines) valid? Nope.
PowerShell 3+, 365 Byte
Ich habe das Gefühl, dass dies viel verbessert werden könnte, aber mir ging die Zeit davon. Alle Zeilenenden sind
\n
mit Nein\r
, die Codierung ist UTF8 ohne Stückliste.quelle
Schläger 578 Bytes
Ungolfed:
Testen:
Ausgabe:
quelle
JavaScript (ES6 | FireFox), 286 Byte
Verwendet
padEnd
, was FireFox-spezifisch ist.quelle
g('└┴┘')
gleichbedeutend mitg└┴┘
(mit Backticks nachg
und am Ende)?padEnd
ist nicht standard. Sie sollten die erforderliche Ausführungsumgebung angeben.`foo`+bar+`baz`
- Sie können ein Byte mithilfe einer Vorlage speichern`foo${bar}baz`
.JavaScript (ES6), 281 Byte
Hinweis: Eingabe als einzelner String mit Zeilenumbrüchen - wie vom OP verlangt. Bei anderen Antworten wird eine Zeichenfolgenliste verwendet. Bei Verwendung eines Zeichenfolgenarrays in der Eingabe kann ich das erste Teilen und Ausschneiden von 9 Byte vermeiden.
Weniger golfen
Prüfung
quelle
Python 3, 318 Bytes
-3 Bytes für die
%
Formatierung und -1 für die Abkürzungstr.join
Erfordert die Eingabe in Anführungszeichen.
quelle
input()
bei jedem Anruf nur eine Leitung belegt wird. Sie müssen anrufen,input()
bis keine Leitungen mehr vorhanden sind, oder direkt von dort lesenstdin
.696 Bytes
Golf gespielt:
Ungolfed (und schöner, weil das für niemanden von Nutzen ist):
Testen:
quelle
Is input using list or array of strings (and no newlines) valid? Nope.
Perl, 273 + 9 (
-CS -nlaF,
Flags) = 282 BytesVerwenden von:
Probieren Sie es auf Ideone .
quelle
PHP, 313 Bytes
Nervenzusammenbruch
Teste es bei ideone
quelle
APL (Dyalog Extended) ,
3625 Byte SBCSVolles Programm. Nimmt das an
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ist die CSV-Datei. Druckt nach Standard.Probieren Sie es online!
⎕A
der Großbuchstabe A lphabet (kürzeste-zu-Referenz Einbau-String)⎕CSV
an Matrix , die Datei und Konvertieren von CSV lesenm←
Speichers alsm
(für m atrix)1↓
der ersten Reihe fallen⍉
Transponierte↓
aufgeteilt in Liste von Spalten↑¨
jeder Liste von Zeichenketten in eine Matrix mischen(
…)⍪
Stapeln Sie darüber Folgendes:1↑m
Nehmen Sie die erste Zeilem
⌂disp
,dfns.disp
auf die angewendet werden soll (zeichnet Strichzeichnungszeichen).quelle