Obviamente, esse desafio seria trivial com funções e bibliotecas separadas, portanto elas não são permitidas.
Seu código deve estar em conformidade com uma especificação ECMAscript (qualquer especificação serve), portanto, nenhuma resposta específica do navegador.
A matriz deve estar acessível após ser instanciada.
Tenho uma resposta que vou reter por enquanto.
Nota: esse desafio é específico para o javascript porque é notoriamente inconveniente criar matrizes multidimensionais em javascript.
code-golf
javascript
array-manipulation
Shmiddty
fonte
fonte
[10]
[[10]]
?Respostas:
Javascript ES6, 30
ES6 em ação :)
fonte
Javascript, 34 bytes
Como aparentemente não há problema em tornar as linhas iguais por referência, acho que não há problema em confiar nesse fato. Isso nos ajuda a eliminar um loop for criando a tabela ao mesmo tempo que suas linhas. Então, aqui está o meu novo concorrente.
Como
r[0]
eb[0]
são substituídos durante o loop, eles podem conter lixo. Isso nos dá outro slot de execução gratuito para raspar algumas vírgulas. Infelizmente,r=b=[]
não vai fazer, desde então eles são iguais por-ref.Além disso, ele escala bem (99x99 ainda é 34 bytes), não requer ES5 (as novas funções têm nomes terrivelmente longos, de qualquer maneira) e, como bônus, é ilegível :-)
fonte
c=[b=[i=10]];while(i--)b[i]=c,c[i]=1
. Deveria saber!!!ECMAScript 6 - 33 Caracteres
Produz uma matriz 10x10 de "1" s.
Isso abusa do fato de a string "1111111111" ter todas as propriedades necessárias para serem tratadas como se fosse uma matriz, para que você possa usar o operador de propagação
...
para transformá-la em uma matriz de caracteres e mapeá-la para uma cópia da matriz com cada elemento referenciando o "original".Ou com apenas um nome de variável (para 35 caracteres):
Ou para confusão extra (mas com 45 caracteres)
ou (43 caracteres)
fonte
...
operador!44 bytes
Versão anterior:
fonte
^
de!=
45 caracteres
Cada elemento aponta para a mesma matriz, mas a especificação não menciona nada contra isso!
fonte
x=
no inícioJavascript, 51
Ou se todos os índices puderem apontar para a mesma matriz:
Javascript, 41
fonte
a[0][1] = 5; console.log(a[1][1])
).JavaScript,
4544 bytesMelhor que eu tenho até agora. (Ainda tentando).
Mais curto (obrigado mellamokb!)
fonte
for
quase sempre é preferível aowhile
golfe. A declaração básica tem o mesmo comprimento (while()
vsfor(;;)
), masfor
oferece mais flexibilidade. Nesse caso, você pode colocarx=[]
o inicializador dofor
e salvar um caractere.Javascript, 47
Como minha solução original foi derrotada, agora a publicarei.
Infelizmente,
0x3FF.toString(2)
não é tão eficiente quanto listar a string, o que não é tão eficiente quanto declarar estaticamente a matriz.Você pode cortar um caractere dessa maneira ( 46 ):
Você pode salvar mais 2 caracteres assim: ( 44 )
Outra solução de 44 bytes usando o fechamento da expressão da função JS 1.8 (somente FF atm):
fonte
i
ema
como isto:a=[i=10]
JavaScript, 57 bytes
Antes de jogar golfe:
Nota: Isso precisa do ES5, portanto, não espere muito do IE.
fonte
eval('a=['+(b=Array(11)).join('['+b.join("1,")+'],')+']')
. Além de ter citações diferentes e meu tendo o interior eval variável, estes são exatamente o mesmoa=eval("["+Array(11).join("[1,1,1,1,1,1,1,1,1,1],")+"]")
tem 5654
Isso já foi superado, mas aqui está a minha solução:
fonte
x=
antesx().map
(ouy=
etc) para torná-lo acessível, certo?39 bytes
Usando compreensão de matriz no ECMAScript 7:
fonte
[1,1,1,1,1,1,1,1,1,1]
porArray(10).fill(1)
barbear 4 caracteres.56 caracteres
Resposta bastante longa, mas será melhor para 100x100 etc.
fonte
Javascript, 36 caracteres (ECMA 6)
Testado no meu navegador (Firefox no Ubuntu) e no interpretador Javascript da Codecademy
fonte
ES6, 54
Não é o mais curto, mas pensei em seguir uma abordagem diferente do que já está aqui.
fonte
a
já existia essa versão parecia ter funcionado. A versão atualizada deve funcionar no FF e no nó com os sinalizadores --harmony.61 por diversão
fonte
Javascript -
646359 caracteresUm caractere salvo, ocultando o iterador na matriz.Salvo alguns caracteres com sugestões de Jans.
Versão legível:
Sim, não é a solução mais curta, mas outra abordagem sem usar
[1,1,1,1,1,1,1,1,1,1]
matrizes prontas .fonte
i-->0
parai--
. Embora o operador "downto" seja bom, não é realmente necessário.==0
também pode ser raspado em dois bits. Além disso, deixe de foravar
. Embora normalmente seja útil, quatro bytes inúteis são inaceitáveis aqui.Javascript 69 caracteres (por enquanto)
fonte
JavaScript 73
fonte
r=[10],
não faz nada quando você substitui imediatamenter[0]
. Você não precisa declarars
e poderia fazer,"1111111111".split("")
mas isso é 22 caracteres, enquanto[1,1,1,1,1,1,1,1,1,1]
apenas 21 caracteres.Javascript ES6, 53
Mas os da matriz são cadeias :)
fonte
Javscript ES6, 53
fonte
JavaScript (ES6), 35 bytes
fonte
f=>Array(10).fill(Array(10).fill(1))
(definindo uma função anônima) por 36 bytes.