Eingabe:
Zwei Dezimalzahlen m
und n
diese geben jeweils die Anzahl der Zeilen und Spalten der Tabelle an.
m
und n
sind größer als oder gleich 1.
Ausgabe :
Eine Tabelle in HTML mit m Zeilen und n Spalten.
Die Tabelle sollte von einem modernen Browser Ihrer Wahl angezeigt werden können. Die meisten Browser zeigen alles korrekt an, auch wenn Tags nicht geschlossen sind. Die richtige Einrückung und der richtige Abstand sind optional.
In jeder Zelle sollte mindestens ein druckbares Zeichen (ohne Leerzeichen) vorhanden sein.
Zellen in der ersten Zeile sollten <th>
Tags verwenden, während die Zellen in den folgenden Zeilen <td>
Tags verwenden sollten.
Gewinnbedingung:
Das ist Code-Golf, also gewinnt der kürzeste Quellcode für jede Sprache.
Eingabebeispiel:
2 3
Ausgabebeispiel:
<table>
<tr>
<th>A</th>
<th>A</th>
<th>A</th>
</tr>
<tr>
<td>A</td>
<td>A</td>
<td>A</td>
</tr>
</table>
oder :
<table><tr><th>A<th>A<th>A<tr><td>A<td>A<td>A
code-golf
code-generation
Kartoffel
quelle
quelle
Antworten:
APL (Dyalog Unicode) mit MiServer 3.0 ,
3130 Byte SBCSVolles Programm. Fordert stdin zur Eingabe der Liste mit zwei Elementen auf
[m,n]
und gibt striktes XHTML an stdout aus.Beispielsitzung:
Probieren Sie es online!
Erläuterung:
(
…).Render
Rendern Sie das folgende HTML-Element:⎕NEW _.Table (
…)
Eine neue Tabelle mit folgenden Parametern:(
…) ⍬ 1
Folgenden Inhalt, kein spezielles Styling, 1 Kopfzeile:⎕⍴0
ausgewertete Eingabe formt Null um (dh eine m-Zeilen-, n-Spaltenmatrix von Nullen)quelle
JavaScript (ES6), 70 Byte
2 Bytes dank @RickHitchcock gespart
Übernimmt Eingaben in der Currying-Syntax
(m)(n)
.Probieren Sie es online!
Demo
Code-Snippet anzeigen
quelle
Python 2 , 57 Bytes
Probieren Sie es online! Angenommen,
m
ist nicht Null.quelle
Canvas , 31 Byte
Probieren Sie es hier aus! oder versuchen Sie es visualisiert!
Nach dem Beheben von 2 Fehlern (ಠ_ಠ) im Interpreter funktionieren auch 30 Bytes
quelle
JavaScript, 65 Bytes
quelle
05AB1E , 30 Bytes
Probieren Sie es online!
Erläuterung
quelle
Stax , 28 Bytes
Führen Sie es aus und debuggen Sie es
Entpackt, ungolfed und kommentiert sieht es so aus.
Führen Sie dieses aus
quelle
Java 10,
139133102 BytesProbieren Sie es online aus.
Erläuterung:
quelle
(m,n)->{var l="<tr>";for(;n-->0;)l+="<td>A";var s="<table>"+l.replace('d','h');for(;--m>0;)s+=l;return s;}
(106 bytes) Ich fand das interessant, aber es lohnt sich nicht, wenn man die aktuelle Punktzahl bedenkt. Sie können Ihre Antwort wahrscheinlich ein wenig mit Ideen wie dem veränderlichen spielenm
.m
, aber wegen der<th>
/<td>
Unterschiede wäre es egal. Ich muss immer noch prüfen, ob es die erste Iteration der äußeren Schleife ist. In diesem Fall benötige ich beidej
undm
, und ich muss die innere Schleife mehrmals ausführen. In diesem Fall benötige ichi
undn
. Anstatt von 0 aufwärts zuj<2
gehen und zu prüfeni>m-2
, könnte ich auch rückwärts gehen und prüfen , aber es wäre +1 Byte anstelle von -1. Ihr Ansatz von zwei mit getrennten Schleifen mit modifizierbarenm
undn
ist in der Tat interessant, though. :)APL (Dyalog Unicode) ,
4238 Byte SBCS-4 danke an ngn.
Volles Programm. Fordert stdin zur Eingabe der Liste mit zwei Elementen [m, n] auf und druckt nicht geschlossene Tags nach stdout.
Probieren Sie es online!
⊂'<th>A'
Schließen Sie diese Zeichenfolge ein, um sie als Ganzes zu behandeln⎕⍴
Aufforderung für Abmessungen und zyklisch r die einzelne Zelle zu einer Matrix von dieser Größe eshape…⍀
Fügen Sie kumulativ die folgende Funktion zwischen jedem vertikalen Zellenpaar ein:{'d'}@3
ignoriere obere Zelle; Platzieren Sie esd
an der 3. Stelle in der unteren Zelle'<tr>',⍤1
Stellen Sie diese Zeichenfolge in jeder Zeile voran∊
ϵ nlist (Abflachen)'<table>',
stellen Sie diese Zeichenfolge voranquelle
'd'⎕R'h'
->'h'@3
(⊂'<tr>'),
->'<tr>',⍤1
und...@1
->...⍀
C (gcc) ,
107999897 BytesProbieren Sie es online!
-8 Bytes dank Kartoffel
-2 Bytes dank Ceilingcat
Das
s
Array muss als Array deklariert werden, nicht als Zeiger, da es sonst nicht bearbeitet werden kann (wir setzen das erste h auf ad). Die meisten Browser kümmern sich nicht einmal darum, ob Ihr schließendes Tag korrekt ist. Deshalb schließen wir einfach alle Tags mit</t>
.quelle
</t>
, das zweimal und -8 Byte angezeigt wird.R , 73 Bytes
Probieren Sie es online!
7 Bytes mit einem schmutzigen Hack gespeichert - ersetzen Sie "rep" durch "<".
quelle
Haskell ,
109107103 BytesSo viele Klammern ... Danke an @nimi für zwei Bytes (und einen Verlust an Generizität)!
Probieren Sie es online!
Ohne End-Tags gewinnt die direkte Implementierung mit 87 Bytes ( Online testen ):
quelle
APL + WIN,
68 6356 BytesInsgesamt 12 Bytes gespart dank Adám
Fordert zur Eingabe der Anzahl der Zeilen gefolgt von der Anzahl der Spalten auf und gibt die Option ohne Abschluss aus:
quelle
∊
oder die nachfolgenden Parenst,,((⎕-1),n←⎕)⍴r
noch die ersten beiden Kommas.h
undr
in den Hauptausdruck einfügen:'<table>'t(n⍴⊂'<th>A')t,,((⎕-1),n←⎕)⍴⊂'<td>A'
<tr>
für den Körper ein. Jede Reihe braucht a<tr>
.Netzhaut ,
5654 BytesProbieren Sie es online! Bearbeiten: 2 Bytes dank @CowsQuack gespeichert. Erläuterung: In der ersten Stufe wird die String-Multiplikation von Retina 1 zuerst verwendet, um die entsprechende Anzahl von Zellen und dann die entsprechende Anzahl von Zeilen zu generieren. Die zweite Stufe ändert dann die erste Reihe von
td
s inth
s.quelle
.
statt\d
Holzkohle , 33 Bytes
Probieren Sie es online!
Erläuterung
quelle
K, 58 Bytes
K-Version ist was auch immer enthalten ist
KDB+ 3.5 2017.11.30
.Port of the Python Antwort oben. Endet 1 Byte länger, weil Sie sich mehrmals registrieren und reduzieren müssen.
quelle
Perl 5
-p
,6554 Bytes-11 Bytes dank der Erinnerung von @ msh2108
Probieren Sie es online!
quelle
.'</table>'
.C # (.NET Core) , 130 Byte
Probieren Sie es online!
quelle
PowerShell Core ,
72 bis68 ByteProbieren Sie es online!
Hier sind meine Testfälle und erwarteten Ausgaben (Cf, TIO)
<table><tr><th>A<th>A<th>A<tr><td>A<td>A<td>A
<table><tr><th>A<th>A<th>A
<table><tr><th>A<th>A<tr><td>A<td>A<tr><td>A<td>A<tr><td>A<td>A
<table><tr><th>A<th>A<th>A<th>A<th>A<th>A<th>A<th>A<tr><td>A<td>A<td>A<td>A<td>A<td>A<td>A<td>A
Danke, @ mazzy , für die -4 Bytes!
quelle
Function F($m,$n){'<table><tr>'+'<th>A'*$n+('<tr>'+'<td>A'*$n)*--$m}
.Pyth , 40 Bytes
Probieren Sie es online!
quelle
Dart ,
4563 BytesArbeits lösung:
Probieren Sie es hier online aus!
Lambda / anonyme Funktion, die
m
undn
als Parameter verwendet, zeigt die Ausgabe anSTDOUT
.Da die Tabellen mit unclosed
<table>
,<tr>
,<th>
, und<td>
Tags macht noch in modernen Browsern (ex., Chrome), ist der Ausgang gültig.Alte (kaputte) Lösung:
Mein erster Versuch vergaß
<td>
nach der ersten Reihe zu wechseln :Vielen Dank an @Lynn für den Hinweis.
quelle
Google Sheets, 66 Bytes
Die Eingabe erfolgt in Zelle
A1
undB1
.Es ist wirklich nichts Besonderes; Es sind nur verschachtelte
Rept
Funktionen.Es wird davon ausgegangen,
m > n > 0
dass beide ganze Zahlen sind.quelle
Jelly ,
3332 BytesEine vollständige Programmaufnahme
rows
,columns
die das Ergebnis druckt.Probieren Sie es online!
hmm, auch 32 mit einer Tabelle:
quelle
J, 64 Bytes
Ein weiterer Port der Python-Antwort:
quelle
PHP, 161 Bytes
Probieren Sie es online aus
Code
Erläuterung
PHP, 193 Bytes
Vollständige Tabellenstruktur
vergessen<tfooter>
<thead>, <tbody>..etc..
Probieren Sie ein Beispiel für die Funktion
Erläuterung
$t=["table>","thead>","tbody>","th>","td>","tbody>","tr>"];
Ein Array mit allen Tags für die Tabelle, die erstellt wurde, und
str_repeat
einer Zahl, die auf einen Index im Array verweist, wird geschrieben und anschließend anstrtr
die Zeichenfolge plus das Array übergebenquelle
Yabasic , 124 Bytes
Eine anonyme Funktion, die Eingaben von durch Leerzeichen getrennten Ganzzahlen und Ausgaben an die Konsole annimmt.
Probieren Sie es online!
quelle
Viertens (gviertens) , 86 Bytes
Probieren Sie es online!
Erläuterung
quelle
Karotte ,
7751 Bytes(Während ich daran arbeitete, entdeckte ich einen Fehler, der
h
nicht funktionierte und behebte ihn)Einige Bytes durch Kürzung des HTML-Codes und Verwendung von "Teilen, Verbinden" anstelle von "Ersetzen" abgegolten
Probieren Sie es online! Verwenden Sie die Befehlszeilenoption
-d
, um den AST anzuzeigen.Dieses Programm verwendet die Eingabe 0-indiziert und in umgekehrter Reihenfolge, da Carrot seltsam ist, und
3 2
druckt so eine 3 × 4-Tabelle.Führen Sie das Programm wie folgt aus:
./carrot -f prog.carrot input.txt
Im Grunde genommen erstellt die Kopfzeile dann die Datenzeilen in einer anderen Zelle des Gartens (2D-Band) und verkettet sie miteinander.
Karotte arbeitet auf einem 2D-Band, Garten genannt. Jede Zelle im Garten besteht aus drei Stapelmodi: String, Float und Array. Für jeden Modus gibt es einen Wert, der als "Stapel" bezeichnet wird (Anmerkung: falsche Bezeichnung). Diese Stapel beginnen leer. Befindet sich eine Zelle in einem bestimmten Modus, wirken sich die folgenden Befehle auf den Stapel aus, der diesem Modus entspricht. Beispielsweise wirken sich die Vorgänge im Float-Modus auf den Stapel-Float aus. Und natürlich gibt es Befehle zum Umschalten zwischen den Modi. Die Modi sind wichtig, da jeder Operator für jeden Modus und jeden Argumenttyp überladen werden kann.
Darüber hinaus gibt es zwei zusätzliche Modi (diese wirken sich nur auf die Befehle aus, nicht direkt auf den Stapel), den normalen Modus und den Caret-Modus. Der Normalmodus funktioniert normal, wenn Operatoren Argumente aufnehmen und den Stapel direkt beeinflussen. Im Caret-Modus wird (fast) jedes Zeichen buchstäblich als Zeichenfolge interpretiert und später dem Stapel entsprechend vorangestellt / angehängt. Der Caret-Modus wird mit Carets (anhängen) oder Downcarets (voranstellen) gestartet / beendet.
Karotte beginnt in einer Zelle im Garten, im Stapelmodus und im Caret-Modus.
Beginnend im Caret-Modus wird der String
<th>A
dem anfänglich leeren Stack-String hinzugefügt. Dann folgt der*
Befehl, der es dupliziert$
, die Eingabe, mal. Dann<tr>
wird der Stack-Zeichenkette mit dem Downcaret vorangestelltv
. Dadurch wird die Kopfzeile der Tabelle erstellt.Um die Datenzeilen zu erstellen, duplizieren wir den Header in eine andere Zelle. Verschiebt
l
die IP-+
Adresse in die rechte leere Zelle und hängt(^h)
die Zeichenfolge in der Zelle links an (im Wesentlichen durch Kopieren in die rechte Zelle).()
Startet eine Subshell, ein neues Carrot-Programm mit fast demselben Band, und beendet den^
Caret-Modus, damit wirh
den String in der linken Zelle finden können. Dies wird dann*
durch($^F- 1)
die nächste Eingabe minus 1-mal dupliziert .A
Setzt das Array dieser Zelle in der rechten Zelle auf die Stapelung, die durch geteilt wird"h"
.S
Verbindet das Stack-Array mit"d"
und setzt den Stack-String auf diesen Wert.A"h"S"d"
Ersetzt einfachh
s durchd
s, um die Datenzeilen zu bilden. Jetzt gehenh
wir zur linken Startzelle.Nun hängen wir die Stapelzeichenfolge der Zelle mit rechts an diese Zelle an
+(^l)
. Alles, was übrig bleibt, ist das Hinzufügen des<table>
Tags.v
Dazu müssen wir ihm voranstellen.quelle
K (ngn / k) , 51 Bytes
Probieren Sie es online!
quelle
Powershell, 63 Bytes
Speichern Sie es als
new-mntable.ps1
. Testskript:Ausgabe (zusätzliche Leerzeichen sind optional):
Powershell, 65 Bytes,
-replace
Speichern Sie es als
new-mntable.ps1
. Testskript:Ausgabe:
Wie es funktioniert:
'<table>h'+'d'*--$args[0]
- Erstelle einen String wie<table>hddd...
'h|d'
- Sucheh
oderd
Zeichen in der Zeichenfolge zum Ersetzen'<tr>'+'<t$0>A'*$args[1]
- Ersetze jedes Zeichen mit einem String<tr><t$0>A<t$0>A...
$0
ist ein gefangenergroup[0]
- der char in der-replace
.Powershell, 65 Bytes,
scriptblock
Speichern Sie es als
new-mntable.ps1
. Testskript:Ausgabe:
quelle