Évidemment, ce défi serait trivial avec des fonctions et des bibliothèques distinctes, donc elles ne sont pas autorisées.
Votre code doit être conforme à une spécification ECMAscript (n'importe quelle spécification fera l'affaire), donc aucune réponse spécifique au navigateur.
Le tableau doit être accessible après son instanciation.
J'ai une réponse que je vais retenir pour l'instant.
Remarque: ce défi est spécifique au javascript car il est notoirement peu pratique de créer des tableaux multidimensionnels en javascript.
code-golf
javascript
array-manipulation
Shmiddty
la source
la source
[10]
[[10]]
?Réponses:
Javascript ES6, 30
ES6 en action :)
la source
Javascript, 34 octets
Puisqu'il est apparemment OK de rendre les lignes égales par référence, je suppose qu'il est apparemment OK de s'appuyer sur ce fait. Cela nous aide à raser une boucle for en construisant la table en même temps que ses lignes. Alors, voici mon nouveau candidat.
Depuis
r[0]
etb[0]
sont écrasés pendant la boucle, ils peuvent contenir des ordures. Cela nous donne un autre créneau d'exécution gratuit pour raser certaines virgules. Malheureusement,r=b=[]
cela ne suffira pas, car ils sont égaux par référence.De plus, il évolue bien (99x99 est toujours 34 octets), ne nécessite pas ES5 (les nouvelles fonctions ont des noms terriblement longs, de toute façon), et en bonus, il est illisible :-)
la source
c=[b=[i=10]];while(i--)b[i]=c,c[i]=1
. Aurait dû savoir!!!ECMAScript 6 - 33 caractères
Produit un tableau 10x10 de "1".
Cela abuse du fait que la chaîne "1111111111" possède toutes les propriétés requises pour être traitée comme s'il s'agissait d'un tableau. Vous pouvez donc utiliser l'opérateur d'étalement
...
pour le transformer en un tableau de caractères, puis le mapper sur une copie du tableau avec chaque élément faisant référence à "l'original".Ou avec un seul nom de variable (pour 35 caractères):
Ou pour plus de confusion (mais à 45 caractères)
ou (43 caractères)
la source
...
opérateur!44 octets
La version précédente:
la source
^
pour!=
45 caractères
Chaque élément pointe vers le même tableau, mais la spécification ne mentionne rien contre cela!
la source
x=
au débutJavascript, 51
Ou si tous les indices sont autorisés à pointer vers le même tableau:
Javascript, 41
la source
a[0][1] = 5; console.log(a[1][1])
).JavaScript,
4544 octetsLe meilleur que j'ai jusqu'à présent. (En train d'essayer).
Plus court (merci mellamokb!)
la source
for
c'est presque toujours préférable auwhile
golf. L'instruction de base est de la même longueur (while()
vsfor(;;)
), maisfor
vous donne plus de flexibilité. Dans ce cas, vous pouvez mettrex=[]
l'initialiseur dufor
et enregistrer un caractère.Javascript, 47
Puisque ma solution d'origine a été battue, je vais maintenant la publier.
Malheureusement,
0x3FF.toString(2)
n'est pas aussi efficace que de simplement lister la chaîne, ce qui n'est pas aussi efficace que de simplement déclarer statiquement le tableau.Vous pouvez raser un personnage de cette façon ( 46 ):
Vous pouvez enregistrer 2 caractères supplémentaires comme ceci: ( 44 )
Une autre solution de 44 octets utilisant des fermetures d'expression de fonction JS 1.8 (FF uniquement atm):
la source
i
dans laa
manière suivante:a=[i=10]
JavaScript, 57 octets
Avant de jouer au golf:
Remarque: Cela nécessite ES5, alors n'attendez pas grand-chose d'IE.
la source
eval('a=['+(b=Array(11)).join('['+b.join("1,")+'],')+']')
. En plus d'avoir des guillemets différents et que j'ai la variable dans eval, ce sont exactement les mêmesa=eval("["+Array(11).join("[1,1,1,1,1,1,1,1,1,1],")+"]")
a 56 ans54
Cela a déjà été battu, mais voici ma solution:
la source
x=
avantx().map
(ouy=
, etc.) pour le rendre accessible, non?39 octets
Utilisation de la compréhension des tableaux dans ECMAScript 7:
la source
[1,1,1,1,1,1,1,1,1,1]
parArray(10).fill(1)
rasage 4 caractères.56 caractères
Réponse plutôt longue, mais sera meilleure pour 100x100 etc.
la source
Javascript, 36 caractères (ECMA 6)
Testé dans mon navigateur (Firefox sur Ubuntu) et dans l'interpréteur Javascript Codecademy
la source
ES6, 54
Ce n'est pas le plus court, mais j'ai pensé que j'opterais pour une approche différente de ce qui est déjà là.
la source
a
déjà existait cette version semblait avoir fonctionné. La version mise à jour devrait fonctionner dans FF et node avec les drapeaux --harmony.61 pour le plaisir
la source
Javascript -
646359 caractèresUn caractère enregistré en masquant l'itérateur dans le tableau.Enregistré quelques caractères avec des suggestions de Jans.
Version lisible:
Oui, ce n'est pas la solution la plus courte, mais une autre approche sans utiliser de
[1,1,1,1,1,1,1,1,1,1]
tableaux prêts à l'emploi .la source
i-->0
pari--
. Bien que l'opérateur "downto" soit sympa, ce n'est pas vraiment nécessaire.==0
pourrait également être rasé de deux bits. Aussi, laissez de côtévar
. Bien que normalement utiles, quatre octets inutiles sont tout simplement inacceptables ici.Javascript 69 caractères (pour l'instant)
la source
JavaScript 73
la source
r=[10],
ne fait rien car vous écrasez immédiatementr[0]
. Vous n'avez pas besoin de déclarers
et pourriez simplement le faire,"1111111111".split("")
mais cela fait 22 caractères alors qu'il[1,1,1,1,1,1,1,1,1,1]
n'y a que 21 caractères.Javascript ES6, 53
Mais ceux du tableau sont des chaînes :)
la source
Javscript ES6, 53
la source
JavaScript (ES6), 35 octets
la source
f=>Array(10).fill(Array(10).fill(1))
(définir une fonction anonyme) pour 36 octets.