Entrada :
Dois números inteiros decimais m
e n
que respectivamente fornecem o número de linhas e colunas da tabela.
m
e n
são maiores ou iguais a 1.
Saída:
Uma tabela em HTML que possui m linhas e n colunas.
A tabela deve ser exibida por um navegador moderno de sua escolha. A maioria dos navegadores exibirá tudo corretamente, mesmo que as tags não estejam fechadas. Recuo e espaçamento adequados são opcionais.
Deve haver pelo menos um caractere imprimível (sem espaço em branco) em cada célula.
As células na primeira linha devem usar <th>
tags, enquanto as das linhas seguintes devem usar <td>
tags.
Condição da vitória:
Este é o código-golfe, portanto o código-fonte mais curto para cada idioma vence.
Exemplo de entrada:
2 3
Exemplo de saída:
<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
code-golf
code-generation
batata
fonte
fonte
Respostas:
APL (Dyalog Unicode) com MiServer 3.0 ,
31SBCSde30 bytesPrograma completo. Solicita ao stdin a lista de dois elementos
[m,n]
e imprime XHTML estrito no stdout.Sessão de exemplo:
Experimente online!
Explicação:
(
…).Render
Renderize o seguinte elemento HTML:⎕NEW _.Table (
…)
Uma nova tabela com os seguintes parâmetros:(
…) ⍬ 1
O seguinte conteúdo, sem estilo especial, 1 linha de cabeçalho:⎕⍴0
a entrada avaliada redefine o zero (ou seja, uma matriz m, n coluna de zeros)fonte
JavaScript (ES6), 70 bytes
Guardado 2 bytes graças a @RickHitchcock
Recebe entrada na sintaxe de currying
(m)(n)
.Experimente online!
Demo
Mostrar snippet de código
fonte
Python 2 , 57 bytes
Experimente online! Assume que
m
não é zero.fonte
Tela , 31 bytes
Experimente aqui! ou Experimente visualizado!
Depois de corrigir 2 erros (ಠ_ಠ) no intérprete, 30 bytes também funcionam
fonte
JavaScript, 65 bytes
fonte
05AB1E , 30 bytes
Experimente online!
Explicação
fonte
Stax , 28 bytes
Execute e depure
Descompactado, não jogado e comentado, parece com isso.
Execute este
fonte
Java 10,
139133102 bytesExperimente online.
Explicação:
fonte
(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) Achei este interessante, mas não vale a pena, considerando sua pontuação atual. Você provavelmente pode jogar um pouco sua resposta usando idéias aqui, como a mutávelm
.m
, mas devido às<th>
/<td>
diferenças não importava. Ainda preciso verificar se é a primeira iteração do loop externo; nesse caso, preciso de ambosj
em
, e preciso fazer o loop interno várias vezes; nesse caso, precisoi
en
. Em vez de ir para cima de 0 e verificar,j<2
eu poderia voltar e verificari>m-2
, mas seria +1 byte em vez de -1. Sua abordagem de usar dois loops separados com modificávelm
en
é realmente interessante, no entanto. :)APL (Dyalog Unicode) ,
4238 bytes SBCS-4 graças a ngn.
Programa completo. Solicita ao stdin a lista de dois elementos [m, n] e imprime tags não fechadas no stdout.
Experimente online!
⊂'<th>A'
coloque esta sequência para tratá-la como um todo⎕⍴
pronta para dimensões e ciclicamente r eshape a única célula de uma matriz desse tamanho…⍀
cumulativamente, insira a seguinte função entre cada par vertical de células:{'d'}@3
ignorar célula superior; coloqued
na 3ª posição na célula inferior'<tr>',⍤1
Anexe esta string a cada linha∊
ε nlist (achatar)'<table>',
precede esta sequênciafonte
'd'⎕R'h'
->'h'@3
(⊂'<tr>'),
->'<tr>',⍤1
e...@1
->...⍀
C (gcc) ,
107999897 bytesExperimente online!
-8 bytes graças à batata
-2 bytes graças ao ceilingcat
A
s
matriz deve ser declarada como uma matriz, não como ponteiro, caso contrário não será editável (definimos o primeiro h como anúncio). A maioria dos navegadores nem se importa se a sua tag de fechamento está correta, então fechamos todas as tags com</t>
.fonte
</t>
que aparece duas vezes e -8 bytes.R , 73 bytes
Experimente online!
7 bytes salvos com um hack sujo - substitua "rep" por "<".
fonte
Haskell ,
109107103 bytesTantos parênteses… Obrigado a @nimi por dois bytes (e uma perda de genicidade)!
Experimente online!
Sem tags finais, a implementação direta ganha em 87 bytes ( Experimente on-line ):
fonte
APL + WIN,
68 6356 bytesTotal de 12 bytes salvos graças a Adám
Solicita o número de linhas seguido pelo número de colunas e gera a opção de não fechamento:
fonte
∊
parênteses finais ou finais:t,,((⎕-1),n←⎕)⍴r
ou das duas primeiras vírgulas.h
er
na expressão principal:'<table>'t(n⍴⊂'<th>A')t,,((⎕-1),n←⎕)⍴⊂'<td>A'
<tr>
para o corpo. Cada linha precisa de um<tr>
.Retina ,
5654 bytesExperimente online! Editar: salvou 2 bytes graças a @CowsQuack. Explicação: O primeiro estágio usa a multiplicação de string da Retina 1 primeiro para gerar o número apropriado de células e, em seguida, para gerar o número apropriado de linhas. O segundo estágio altera a primeira linha de
td
s parath
s.fonte
.
, em vez de\d
Carvão , 33 bytes
Experimente online!
Explicação
fonte
K, 58 bytes
A versão K é o que está incluído
KDB+ 3.5 2017.11.30
.Porta da resposta Python acima. Ele acaba sendo 1 byte mais devido a ter que se alistar e achatar várias vezes.
fonte
Perl 5
-p
,6554 bytes-11 bytes graças ao lembrete de @ msh2108
Experimente online!
fonte
.'</table>'
.C # (.NET Core) , 130 bytes
Experimente online!
fonte
Núcleo do PowerShell ,
7268 bytesExperimente online!
Aqui estão meus casos de teste e 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
Obrigado, @ mazzy , pelos -4 bytes!
fonte
Function F($m,$n){'<table><tr>'+'<th>A'*$n+('<tr>'+'<td>A'*$n)*--$m}
.Pitão , 40 bytes
Experimente online!
fonte
Dardo ,
4563 bytesSolução de trabalho:
Experimente online aqui!
Tomando a função Lambda / anônima
m
e,n
como parâmetros, exibe a saída paraSTDOUT
.Desde tabelas com unclosed
<table>
,<tr>
,<th>
, e<td>
etiquetas ainda rende em navegadores modernos (ex., Chrome), a saída é válido.Solução antiga (quebrada):
Minha primeira tentativa esqueceu de mudar para
<td>
após a primeira linha:Obrigado a @Lynn por apontar isso.
fonte
Planilhas Google, 66 bytes
A entrada está na célula
A1
eB1
.Não há nada chique, realmente; são apenas
Rept
funções aninhadas .Ele não assumem
m > n > 0
e que eles são ambos inteiros.fonte
Geléia ,
3332 bytesUm programa completo
rows
,columns
que imprime o resultado.Experimente online!
hmm, também 32 usando uma tabela:
fonte
J, 64 bytes
Outra porta da resposta do Python:
fonte
PHP, 161 bytes
Experimente online
Código
Explicação
PHP, 193 bytes
Esqueci aestrutura da tabela<tfooter>
<thead>, <tbody>..etc..
Experimente o exemplo da função
Explicação
$t=["table>","thead>","tbody>","th>","td>","tbody>","tr>"];
Uma matriz com todas as tags para a mesa é edificada e depois com
str_repeat
um número referindo-se a um índice na matriz está escrito, então astrtr
corda mais a matriz é passadofonte
Yabasic , 124 bytes
Uma função anônima que recebe entradas como números inteiros delimitados por espaço e sai para o console.
Experimente online!
fonte
Quarto (gforth) , 86 bytes
Experimente online!
Explicação
fonte
Cenoura ,
7751 bytes(Enquanto trabalhava nisso, descobri um bug que
h
não funcionava e o corrigi)Golpeou alguns bytes encurtando o html e usando "split, join" em vez de "replace"
Experimente online! , use a opção de linha de comando
-d
para ver o AST (Observação: isso usa o novo interpretador de nó, portanto, a versão mais antiga no site não pode executar isso.)Este programa pega a entrada indexada em 0 e em ordem inversa, devido à natureza estranha de Cenoura,
3 2
imprimindo assim uma tabela 3 × 4.Execute o programa assim,
./carrot -f prog.carrot input.txt
Cria basicamente a linha do cabeçalho, depois as linhas de dados em outra célula do jardim (fita 2D) e as concatena.
Cenoura trabalha em uma fita 2D, chamada de jardim. Cada célula do jardim é composta de três modos de pilha, string, float, array. Há um valor para cada modo, chamado de "pilha" (nota: nome impróprio). Essas pilhas começam vazias. Quando uma célula está em um modo específico, os seguintes comandos afetam a pilha que corresponde a esse modo, por exemplo, no modo de flutuação, as operações afetam a flutuação da pilha. E, claro, existem comandos para alternar entre os modos. Os modos são importantes porque cada operador pode ser sobrecarregado para cada modo e cada tipo de argumento.
Além disso, existem dois modos adicionais (eles afetam apenas os comandos, não a pilha diretamente), modo normal e modo de interpolação. O modo normal funciona normalmente, onde há operadores recebendo argumentos e afetando diretamente a pilha. No modo de sinal de intercalação, (quase) todo caractere é interpretado literalmente como uma sequência e, posteriormente, é anexado / anexado de acordo com a pilha. O modo de intercalação é iniciado / finalizado com intercalação (anexar) ou intercalar (intercalar).
A cenoura começa em uma célula no jardim, no modo de pilha e no modo de sinal de intercalação.
Começando no modo de sinal de intercalação, a string
<th>A
é adicionada à string de pilha inicialmente vazia. Em seguida, segue o*
comando que duplica$
, a entrada, os tempos. Em seguida,<tr>
é anexado à string da pilha pelo uso do sinal de intercalaçãov
. Isso cria a linha do cabeçalho da tabela.Para criar as linhas de dados, duplicamos o cabeçalho para outra célula.
l
move o IP para a célula vazia direita e+
anexa(^h)
a sequência na célula à esquerda (essencialmente copiando-a para a célula à direita).()
inicia um subshell, um novo programa Carrot com quase a mesma fita e^
sai do modo de sinal de intercalação para que possamosh
obter a string na célula esquerda. Isso é*
duplicado pela($^F- 1)
próxima entrada menos 1, vezes.Ainda na célula certa,
A
define a matriz dessa célula para seu empilhamento dividido por"h"
.S
junta-se à matriz da pilha"d"
e define a cadeia de caracteres da pilha para esse valor.A"h"S"d"
realmente substituih
s pord
s para formar as linhas de dados. Agorah
vamos para a célula inicial esquerda.Agora, anexamos a string de pilha da célula à direita dessa célula usando
+(^l)
. Tudo o que resta é adicionar a<table>
tag, então fazemos issov
anexando-a.fonte
K (ngn / k) , 51 bytes
Experimente online!
fonte
Powershell, 63 bytes
salve-o como
new-mntable.ps1
. Script de teste:saída (espaços extras são opcionais):
PowerShell, 65 bytes,
-replace
salve-o como
new-mntable.ps1
. Script de teste:saída:
Como isso funciona:
'<table>h'+'d'*--$args[0]
- crie uma string como<table>hddd...
'h|d'
- pesquisah
oud
caracteres na string para substituição'<tr>'+'<t$0>A'*$args[1]
- substitua cada caractere por string como<tr><t$0>A<t$0>A...
$0
é capturadogroup[0]
- o caractere no-replace
.PowerShell, 65 bytes,
scriptblock
salve-o como
new-mntable.ps1
. Script de teste:saída:
fonte