Contribution :
Deux entiers décimaux m
et n
qui donnent respectivement le nombre de lignes et de colonnes du tableau.
m
et n
sont supérieurs ou égaux à 1.
Sortie:
Un tableau en HTML qui a m lignes et n colonnes.
Le tableau doit être affichable par un navigateur moderne de votre choix. La plupart des navigateurs afficheront tout correctement, même si les balises ne sont pas fermées. Un retrait et un espacement appropriés sont facultatifs.
Il doit y avoir au moins un caractère imprimable (non blanc) dans chaque cellule.
Les cellules de la première ligne doivent utiliser des <th>
balises tandis que celles des lignes suivantes doivent utiliser des <td>
balises.
Condition de victoire:
Il s'agit de code-golf, donc le code source le plus court pour chaque langue l'emporte.
Exemple d'entrée:
2 3
Exemple de sortie:
<table>
<tr>
<th>A</th>
<th>A</th>
<th>A</th>
</tr>
<tr>
<td>A</td>
<td>A</td>
<td>A</td>
</tr>
</table>
ou :
<table><tr><th>A<th>A<th>A<tr><td>A<td>A<td>A
la source
Réponses:
APL (Dyalog Unicode) avec MiServer 3.0 ,
3130 octets SBCSProgramme complet. Invite stdin pour la liste à deux éléments
[m,n]
et imprime XHTML strict sur stdout.Exemple de session:
Essayez-le en ligne!
Explication:
(
…).Render
Rendez l'élément HTML suivant:⎕NEW _.Table (
…)
Une nouvelle table avec les paramètres suivants:(
…) ⍬ 1
Le contenu suivant, sans style particulier, 1 ligne d'en-tête:⎕⍴0
l'entrée évaluée remodèle zéro (c'est-à-dire une matrice de z lignes à m colonnes et n)la source
JavaScript (ES6), 70 octets
Enregistré 2 octets grâce à @RickHitchcock
Prend une entrée dans la syntaxe de curry
(m)(n)
.Essayez-le en ligne!
Démo
Afficher l'extrait de code
la source
Python 2 , 57 octets
Essayez-le en ligne! Suppose que ce
m
n'est pas zéro.la source
Toile , 31 octets
Essayez-le ici! ou Essayez-le visualisé!
Après avoir corrigé 2 bugs (ಠ_ಠ) dans l'interpréteur, 30 octets fonctionnent aussi
la source
JavaScript, 65 octets
la source
05AB1E , 30 octets
Essayez-le en ligne!
Explication
la source
Stax , 28 octets
Exécuter et déboguer
Déballé, non golfé et commenté, il ressemble à ceci.
Exécutez celui-ci
la source
Java 10,
139133102 octetsEssayez-le en ligne.
Explication:
la source
(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 octets) J'ai trouvé celui-ci intéressant, mais n'en valait pas la peine compte tenu de votre score actuel. Vous pouvez probablement jouer un peu à votre réponse en utilisant des idées comme le mutablem
.m
, mais à cause des<th>
/<td>
différences ça n'aurait pas d'importance. Je dois encore vérifier s'il s'agit de la première itération de la boucle externe, auquel cas j'ai besoin des deuxj
etm
, et je dois répéter la boucle interne plusieurs fois, auquel cas j'ai besoin dei
etn
. Au lieu d'aller vers le haut à partir de 0 et de vérifier,j<2
je pourrais revenir en arrière et vérifieri>m-2
, mais ce serait +1 octet au lieu de -1. Votre approche d'utiliser deux boucles séparées avec modifiablesm
etn
est en effet intéressant, cependant. :)APL (Dyalog Unicode) ,
4238 octets SBCS-4 grâce à ngn.
Programme complet. Invite stdin pour la liste à deux éléments [m, n] et imprime les balises non fermées sur stdout.
Essayez-le en ligne!
⊂'<th>A'
joindre cette chaîne pour la traiter dans son ensemble⎕⍴
invite de dimensions et de manière cyclique r Eshape la cellule unique à une matrice de cette taille ,…⍀
insérez cumulativement la fonction suivante entre chaque paire verticale de cellules:{'d'}@3
ignorer la cellule supérieure; placerd
en 3e position dans la cellule du bas'<tr>',⍤1
ajouter cette chaîne à chaque ligne∊
ϵ nlist (aplatir)'<table>',
ajouter cette chaînela source
'd'⎕R'h'
->'h'@3
(⊂'<tr>'),
->'<tr>',⍤1
et...@1
->...⍀
C (gcc) ,
107999897 octetsEssayez-le en ligne!
-8 octets grâce à la pomme de terre
-2 octets grâce au plafond
Le
s
tableau doit être déclaré comme un tableau et non comme un pointeur, sinon il ne sera pas modifiable (nous définissons le premier h sur ad). La plupart des navigateurs ne se soucient même pas de savoir si votre balise de fermeture est correcte, nous fermons donc toutes les balises avec</t>
.la source
</t>
qui apparaît deux fois et -8 octets.R , 73 octets
Essayez-le en ligne!
7 octets enregistrés avec un hack sale - remplacez "rep" par "<".
la source
Haskell ,
109107103 octetsTant de parenthèses… Merci à @nimi pour deux octets (et une perte de généricité)!
Essayez-le en ligne!
Sans balises de fin, l'implémentation directe gagne à 87 octets ( essayez-le en ligne ):
la source
APL + WIN,
68 6356 octets12 octets au total économisés grâce à Adám
Demande le nombre de lignes suivi du nombre de colonnes et affiche l'option de non-fermeture:
la source
∊
ou des parenthèses de fin:t,,((⎕-1),n←⎕)⍴r
ni des deux premières virgules.h
etr
dans l'expression principale:'<table>'t(n⍴⊂'<th>A')t,,((⎕-1),n←⎕)⍴⊂'<td>A'
<tr>
pour le corps. Chaque ligne a besoin d'un<tr>
.Rétine ,
5654 octetsEssayez-le en ligne! Edit: sauvé 2 octets grâce à @CowsQuack. Explication: La première étape utilise la multiplication de chaînes de Retina 1 d'abord pour générer le nombre approprié de cellules, puis pour générer le nombre approprié de lignes. La deuxième étape transforme ensuite la première rangée de
td
s enth
s.la source
.
place de\d
Fusain , 33 octets
Essayez-le en ligne!
Explication
la source
K, 58 octets
La version K est tout ce qui est inclus
KDB+ 3.5 2017.11.30
.Port de la réponse Python ci-dessus. Finit par être 1 octet de plus en raison de devoir enrôler et aplatir plusieurs fois.
la source
Perl 5
-p
,6554 octets-11 octets grâce au rappel de @ msh2108
Essayez-le en ligne!
la source
.'</table>'
.C # (.NET Core) , 130 octets
Essayez-le en ligne!
la source
PowerShell Core ,
7268 octetsEssayez-le en ligne!
Voici mes cas de test et sorties attendues (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
Merci, @ mazzy , pour les -4 octets!
la source
Function F($m,$n){'<table><tr>'+'<th>A'*$n+('<tr>'+'<td>A'*$n)*--$m}
.Pyth , 40 octets
Essayez-le en ligne!
la source
Dart ,
4563 octetsSolution de travail:
Essayez-le en ligne ici!
Fonction lambda / anonyme prenant
m
etn
comme paramètres, affiche la sortie versSTDOUT
.Depuis tables avec unclosed
<table>
,<tr>
,<th>
et<td>
balises rendent toujours dans les navigateurs modernes (ex., Chrome), la sortie est valide.Ancienne solution (cassée):
Ma première tentative a oublié de passer
<td>
après la première ligne:Merci à @Lynn de l'avoir signalé.
la source
Google Sheets, 66 octets
L'entrée est dans la cellule
A1
etB1
.Il n'y a rien d'extraordinaire, vraiment; ce sont juste des
Rept
fonctions imbriquées .Il ne suppose
m > n > 0
et qu'ils sont tous les deux entiers.la source
Gelée ,
3332 octetsUne prise de programme complète
rows
,columns
qui imprime le résultat.Essayez-le en ligne!
hmm, également 32 à l'aide d'une table:
la source
J, 64 octets
Un autre port de la réponse Python:
la source
PHP, 161 octets
Essayez-le en ligne
Code
Explication
PHP, 193 octets
Structure de table complète
oubliée<tfooter>
<thead>, <tbody>..etc..
Essayez un exemple de la fonction
Explication
$t=["table>","thead>","tbody>","th>","td>","tbody>","tr>"];
Un tableau avec toutes les balises de la table qu'il est construit, puis avec
str_repeat
un nombre se référant à un index dans le tableau est écrit, puis àstrtr
la chaîne plus le tableau est passéla source
Yabasic , 124 octets
Fonction anonyme qui prend les entrées sous forme d'entiers délimités par des espaces et les renvoie vers la console.
Essayez-le en ligne!
la source
Forth (gforth) , 86 octets
Essayez-le en ligne!
Explication
la source
Carotte ,
7751 octets(En travaillant là-dessus, j'ai découvert un bogue qui
h
ne fonctionnait pas et je l'ai corrigé)Golfé quelques octets en raccourcissant le code HTML ainsi qu'en utilisant "scinder, joindre" au lieu de "remplacer"
Essayez-le en ligne! , utilisez l'option de ligne de commande
-d
pour voir l'AST (Remarque: ceci utilise le nouvel interpréteur de noeud, donc l'ancienne version sur le site Web ne peut pas l'exécuter.)Ce programme prend l'entrée indexée 0 et dans l'ordre inverse, en raison de la nature étrange de Carrot,
3 2
imprimant ainsi un tableau 3 × 4.Exécutez le programme comme ça,
./carrot -f prog.carrot input.txt
Fondamentalement, crée la ligne d'en-tête, puis les lignes de données sur une autre cellule du jardin (bande 2D), et les concatène ensemble.
Carrot travaille sur une bande 2D, appelée jardin. Chaque cellule du jardin est composée de trois modes de pile, chaîne, flottant, tableau. Il existe une valeur pour chaque mode, appelée "pile" (remarque: impropre). Ces piles commencent vides. Lorsqu'une cellule est dans un mode particulier, les commandes suivantes affecteront la pile qui correspond à ce mode, par exemple en mode flottant, les opérations affecteront le flotteur de pile. Et bien sûr, il existe des commandes pour basculer entre les modes. Les modes sont importants car chaque opérateur peut être surchargé pour chaque mode et chaque type d'argument.
De plus, il existe deux modes supplémentaires (ceux-ci n'affectent que les commandes, pas directement la pile), le mode normal et le mode caret. Le mode normal fonctionne normalement, où des opérateurs acceptent des arguments et affectent directement la pile. En mode accent circonflexe, (presque) chaque caractère est interprété littéralement comme une chaîne et est ensuite ajouté / ajouté en conséquence à la pile. Le mode insertion est démarré / terminé avec des accents (ajout) ou vers le bas (ajout).
La carotte commence dans une cellule du jardin, en mode pile-chaîne et en mode caret.
À partir du mode caret, la chaîne
<th>A
est ajoutée à la chaîne de pile initialement vide. Suit ensuite la*
commande qui le duplique$
, l'entrée, les temps. Puis<tr>
est ajouté à la chaîne de pile par l'utilisation du curseur basv
. Cela crée la ligne d'en-tête de la table.Pour créer les lignes de données, nous dupliquons l'en-tête dans une autre cellule.
l
déplace l'IP vers la cellule vide de droite et+
ajoute(^h)
la chaîne dans la cellule à gauche (en la copiant essentiellement dans la cellule de droite).()
démarre un sous-shell, un nouveau programme Carrot avec presque la même bande, et^
quitte le mode caret afin que nous puissionsh
obtenir la chaîne dans la cellule de gauche. Il est ensuite*
dupliqué par($^F- 1)
, la prochaine entrée moins 1 fois.Toujours dans la cellule de droite,
A
définit le tableau de cette cellule sur son empilement divisé par"h"
.S
rejoint le tableau de pile par"d"
et définit la chaîne de pile à cette valeur.A"h"S"d"
remplace vraimenth
s pard
s pour former les lignes de données. Passons maintenanth
à la cellule de départ de gauche.Maintenant, nous ajoutons la chaîne de pile de la cellule à droite de cette cellule en utilisant
+(^l)
. Il ne reste plus qu'à ajouter la<table>
balise, nous le faisons donc en lav
ajoutant au préalable.la source
K (ngn / k) , 51 octets
Essayez-le en ligne!
la source
Powershell, 63 octets
enregistrez-le sous
new-mntable.ps1
. Script de test:sortie (les espaces supplémentaires sont facultatifs):
Powershell, 65 octets,
-replace
enregistrez-le sous
new-mntable.ps1
. Script de test:sortie:
Comment ça marche:
'<table>h'+'d'*--$args[0]
- créer une chaîne comme<table>hddd...
'h|d'
- chercherh
oud
caractères dans la chaîne pour remplacer'<tr>'+'<t$0>A'*$args[1]
- remplacez chaque caractère par une chaîne comme<tr><t$0>A<t$0>A...
$0
est capturégroup[0]
- l'omble dans le-replace
.Powershell, 65 octets,
scriptblock
enregistrez-le sous
new-mntable.ps1
. Script de test:sortie:
la source