Entrada:
Dos enteros decimales m
y n
que respectivamente dan el número de filas y columnas de la tabla.
m
y n
son mayores o iguales a 1.
Salida:
Una tabla en HTML que tiene m filas yn columnas.
La tabla debe ser visualizable por un navegador moderno de su elección. La mayoría de los navegadores mostrarán todo correctamente incluso si las etiquetas no están cerradas. La sangría y el espaciado adecuados son opcionales.
Debe haber al menos un carácter imprimible (sin espacios en blanco) en cada celda.
Las celdas en la primera línea deben usar <th>
etiquetas, mientras que las de las siguientes líneas deben usar<td>
etiquetas.
Condición de victoria:
Esto es código golf por lo que gana el código fuente más corto para cada idioma.
Ejemplo de entrada:
2 3
Ejemplo de salida:
<table>
<tr>
<th>A</th>
<th>A</th>
<th>A</th>
</tr>
<tr>
<td>A</td>
<td>A</td>
<td>A</td>
</tr>
</table>
o:
<table><tr><th>A<th>A<th>A<tr><td>A<td>A<td>A
code-golf
code-generation
patata
fuente
fuente
Respuestas:
APL (Dyalog Unicode) con MiServer 3.0 ,
3130 bytes SBCSPrograma completo Solicita stdin para la lista de dos elementos
[m,n]
e imprime XHTML estricto en stdout.Sesión de ejemplo:
Pruébalo en línea!
Explicación:
(
...).Render
Representa el siguiente elemento HTML:⎕NEW _.Table (
...)
una nueva tabla con los siguientes parámetros:(
...) ⍬ 1
el siguiente contenido, sin estilo especial, 1 fila de encabezado:⎕⍴0
la entrada evaluada cambia la forma a cero (es decir, una matriz de ceros de n filas y columnas)fuente
JavaScript (ES6), 70 bytes
Guardado 2 bytes gracias a @RickHitchcock
Toma entrada en la sintaxis de curry
(m)(n)
.Pruébalo en línea!
Manifestación
Mostrar fragmento de código
fuente
Python 2 , 57 bytes
Pruébalo en línea! Asume
m
que no es cero.fuente
Lienzo , 31 bytes.
Pruébalo aquí! o Pruébalo visualizado!
Después de corregir 2 errores (ಠ_ಠ) en el intérprete, 30 bytes también funcionan
fuente
JavaScript, 65 bytes
fuente
05AB1E , 30 bytes
Pruébalo en línea!
Explicación
fuente
Stax , 28 bytes
Ejecutar y depurarlo
Desempaquetado, sin golf y comentado, se ve así.
Ejecute este
fuente
Java 10,
139133102 bytesPruébalo en línea.
Explicación:
fuente
(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) Me pareció interesante, pero no valió la pena dada su puntuación actual. Probablemente puedas jugar un poco tu respuesta usando ideas como la mutablem
.m
, pero debido a las<th>
/<td>
diferencias no importaría. Todavía necesito verificar si es la primera iteración del bucle externo, en cuyo caso necesito ambosj
ym
, y necesito hacer el bucle interno varias veces, en cuyo caso necesitoi
yn
. En lugar de ir hacia arriba desde 0 y verificarj<2
, podría ir hacia atrás y verificari>m-2
, pero sería +1 byte en lugar de -1. Sin embargo, su enfoque de usar dos bucles separados con modificablesm
y den
hecho es interesante. :)APL (Dyalog Unicode) ,
4238 bytes SBCS-4 gracias a ngn.
Programa completo Solicita stdin para la lista de dos elementos [m, n] e imprime etiquetas no cerradas en stdout.
Pruébalo en línea!
⊂'<th>A'
encierra esta cadena para tratarla como un todo⎕⍴
símbolo para las dimensiones y cíclicamente r eshape la célula individual a una matriz de ese tamaño…⍀
inserte acumulativamente la siguiente función entre cada par vertical de celdas:{'d'}@3
ignorar la celda superior; colocard
en la tercera posición en la celda inferior'<tr>',⍤1
anteponer esta cadena cada fila∊
ϵ nlist (aplanar)'<table>',
anteponer esta cadenafuente
'd'⎕R'h'
->'h'@3
(⊂'<tr>'),
->'<tr>',⍤1
y...@1
->...⍀
C (gcc) ,
107999897 bytesPruébalo en línea!
-8 bytes gracias a la papa
-2 bytes gracias a ceilingcat
La
s
matriz debe declararse como una matriz, no como un puntero, de lo contrario no será editable (configuramos la primera h como anuncio). A la mayoría de los navegadores ni siquiera les importa si su etiqueta de cierre es correcta, por lo que solo cerramos todas las etiquetas con</t>
.fuente
</t>
que aparece dos veces y -8 bytes.R , 73 bytes
Pruébalo en línea!
Guardado 7 bytes con un truco sucio - reemplace "rep" por "<".
fuente
Haskell ,
109107103 bytesTantos paréntesis ... ¡Gracias a @nimi por dos bytes (y una pérdida de genérico)!
Pruébalo en línea!
Sin etiquetas finales, la implementación directa gana a 87 bytes ( Pruébelo en línea ):
fuente
APL + WIN,
68 6356 bytes12 bytes en total guardados gracias a Adám
Solicita el número de filas seguido del número de columnas y la opción de salida sin cierre:
fuente
∊
parens finalest,,((⎕-1),n←⎕)⍴r
o las dos primeras comas.h
yr
en la expresión principal:'<table>'t(n⍴⊂'<th>A')t,,((⎕-1),n←⎕)⍴⊂'<td>A'
<tr>
para el cuerpo. Cada fila necesita un<tr>
.Retina ,
5654 bytesPruébalo en línea! Editar: Guardado 2 bytes gracias a @CowsQuack. Explicación: La primera etapa usa la multiplicación de cadenas de Retina 1 primero para generar el número apropiado de celdas, luego para generar el número apropiado de filas. La segunda etapa luego cambia la primera fila de
td
s enth
s.fuente
.
lugar de\d
Carbón , 33 bytes
Pruébalo en línea!
Explicación
fuente
K, 58 bytes
La versión K es lo que está incluido en
KDB+ 3.5 2017.11.30
.El puerto de la respuesta de Python arriba. Termina siendo 1 byte más debido a tener que alistarse y aplanarse varias veces.
fuente
Perl 5
-p
,6554 bytes-11 bytes gracias al recordatorio de @ msh2108
Pruébalo en línea!
fuente
.'</table>'
.C # (.NET Core) , 130 bytes
Pruébalo en línea!
fuente
PowerShell Core ,
7268 bytesPruébalo en línea!
Aquí están mis casos de prueba y resultados esperados (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
¡Gracias, @ mazzy , por los -4 bytes!
fuente
Function F($m,$n){'<table><tr>'+'<th>A'*$n+('<tr>'+'<td>A'*$n)*--$m}
.Pyth , 40 bytes
Pruébalo en línea!
fuente
Dart ,
4563 bytesSolución de trabajo:
Pruébelo en línea aquí!
Toma de funciones lambda / anónimas
m
yn
como parámetros, muestra la salida aSTDOUT
.Dado que las tablas con no cerrada
<table>
,<tr>
,<th>
, y<td>
las etiquetas todavía hacen en los navegadores modernos (por ej., Cromo), la salida es válida.Solución antigua (rota):
Mi primer intento olvidó cambiar a
<td>
después de la primera fila:Gracias a @Lynn por señalar eso.
fuente
Hojas de cálculo de Google, 66 bytes
La entrada está en la celda
A1
yB1
.No hay nada lujoso, en realidad; son solo
Rept
funciones anidadas .Que no asumen
m > n > 0
y que los dos son números enteros.fuente
Jalea ,
3332 bytesUna toma completa del programa
rows
,columns
que imprime el resultado.Pruébalo en línea!
hmm, también 32 usando una tabla:
fuente
J 64 bytes
Otro puerto de la respuesta de Python:
fuente
PHP, 161 bytes
Pruébalo en línea
Código
Explicación
PHP, 193 bytes
Estructura completa de la mesa
olvidada<tfooter>
<thead>, <tbody>..etc..
Pruebe el ejemplo de la función
Explicación
$t=["table>","thead>","tbody>","th>","td>","tbody>","tr>"];
Se construye una matriz con todas las etiquetas para la tabla y luego con
str_repeat
un número que hace referencia a un índice en la matriz, luegostrtr
se pasa a la cadena más la matriz.fuente
Yabasic , 124 bytes
Una función anónima que toma entradas de enteros delimitados por espacios y salidas a la consola.
Pruébalo en línea!
fuente
Adelante (gforth) , 86 bytes
Pruébalo en línea!
Explicación
fuente
Zanahoria ,
7751 bytes(Mientras trabajaba en esto, descubrí un error con
h
no funcionaba y lo solucioné)Golfé algunos bytes acortando el html y usando "dividir, unir" en lugar de "reemplazar"
Pruébalo en línea! , use la opción de línea de comandos
-d
para ver el AST (Nota: esto usa el nuevo intérprete de nodo, por lo que la versión anterior en el sitio web no puede ejecutar esto).Este programa toma la entrada indexada en 0 y en orden inverso, debido a la naturaleza extraña de Carrot,
3 2
imprimiendo así una tabla de 3 × 4.Ejecute el programa así,
./carrot -f prog.carrot input.txt
Básicamente crea la fila del encabezado, luego las filas de datos en otra celda del jardín (cinta 2D) y las concatena juntas.
La zanahoria funciona en una cinta 2D, llamada jardín. Cada celda en el jardín se compone de tres modos de pila, cadena, flotador, matriz. Hay un valor para cada modo, llamado "pila" (nota: nombre incorrecto). Estas pilas comienzan vacías. Cuando una celda está en un modo particular, los siguientes comandos afectarán a la pila que corresponde a este modo, por ejemplo, en modo flotante, las operaciones afectarán a la pila flotante. Y, por supuesto, hay comandos para cambiar entre modos. Los modos son importantes porque cada operador puede sobrecargarse para cada modo y cada tipo de argumento.
Además, hay dos modos adicionales (estos solo afectan a los comandos, no a la pila directamente), el modo normal y el modo de detención. El modo normal funciona normalmente, donde hay operadores que toman argumentos y afectan directamente a la pila. En el modo de intercalación, (casi) cada carácter se interpreta literalmente como una cadena, y luego se antepone / agrega en consecuencia a la pila. El modo Caret se inicia / finaliza con carets (agregar) o down-carets (anteponer).
La zanahoria comienza en una celda en el jardín, en modo de cadena de apilamiento y en modo de cuidado.
Comenzando en modo caret, la cadena
<th>A
se agrega a la cadena de pila inicialmente vacía. Luego sigue el*
comando que lo duplica$
, la entrada, los tiempos. Luego<tr>
se antepone a la cadena de la pila mediante el uso de down-caretv
. Esto crea la fila de encabezado de la tabla.Para crear las filas de datos, duplicamos el encabezado a otra celda.
l
mueve la IP a la celda vacía derecha y+
agrega(^h)
la cadena en la celda a la izquierda (esencialmente copiándola a la celda a la derecha).()
inicia una subshell, un nuevo programa Carrot con casi la misma cinta, y^
sale del modo intercalado para que podamosh
obtener la cadena en la celda izquierda. Esto se*
duplica por($^F- 1)
, la siguiente entrada menos 1, veces.Aún en la celda derecha,
A
establece la matriz de esta celda en su apilamiento dividido por"h"
.S
une la matriz de la pila"d"
y establece la cadena de la pila en este valor.A"h"S"d"
Realmente reemplazah
s cond
s para formar las filas de datos. Ahorah
nos movemos a la celda inicial izquierda.Ahora agregamos la cadena de pila de la celda a la derecha de esta celda usando
+(^l)
. Todo lo que queda es agregar la<table>
etiqueta, por lo que lo hacemosv
anteponiéndola.fuente
K (ngn / k) , 51 bytes
Pruébalo en línea!
fuente
Powershell, 63 bytes
guárdelo como
new-mntable.ps1
. Script de prueba:salida (los espacios adicionales son opcionales):
Powershell, 65 bytes,
-replace
guárdelo como
new-mntable.ps1
. Script de prueba:salida:
Como funciona:
'<table>h'+'d'*--$args[0]
- crear una cadena como<table>hddd...
'h|d'
- búsquedah
od
caracteres en la cadena para reemplazar'<tr>'+'<t$0>A'*$args[1]
- reemplace cada char con una cadena como<tr><t$0>A<t$0>A...
$0
es capturadogroup[0]
- el char en el-replace
.Powershell, 65 bytes,
scriptblock
guárdelo como
new-mntable.ps1
. Script de prueba:salida:
fuente