C'est une question de code-golf.
Étant donné les entiers s et n, la tâche consiste à sortir tous les tableaux de longueur n qui prennent des valeurs de -s à s. La seule torsion est que vous devez les sortir dans l'ordre suivant.
- Le tableau de tous les zéros de longueur n.
- Tous les tableaux de longueur n avec des éléments de -1 à 1, à l'exclusion de tout tableau que vous avez sorti auparavant.
- Tous les tableaux de longueur n avec des éléments de -2 à 2, à l'exception de tout tableau que vous avez sorti auparavant.
- Et ainsi de suite jusqu'à ce que vous arriviez à tous les tableaux de longueur n avec des éléments de -s à s, à l'exclusion de tout tableau que vous avez sorti auparavant.
Vous devez générer un tableau par ligne. Ils peuvent être séparés par des espaces ou des virgules.
Voici un code python non conforme qui génère les tableaux / listes / tuples dans le bon ordre.
import itertools
s = 3
n = 2
oldsofar = set()
newsofar = set()
for i in xrange(s):
for k in itertools.product(range(-i,i+1), repeat = n):
newsofar.add(k)
print newsofar - oldsofar
oldsofar = newsofar.copy()
print "***"
Une gloire supplémentaire (et un vote positif de ma part) pour les réponses qui n'effectuent aucune soustraction d'ensemble ou équivalent.
code-golf
array-manipulation
Martin Ender
la source
la source
Réponses:
Gelée, 9 octets
Aucune soustraction de liste n'a été utilisée dans la rédaction de ce message. Essayez-le en ligne!
Comment ça fonctionne
la source
MATL , 18 octets
La première entrée est
s
, la seconde estn
Cela fonctionne dans la version actuelle (15.0.0) de la langue.
Essayez-le en ligne!
Explication
la source
Haskell,
6160 octetsExemple d'utilisation:
2#2
->[[0,0],[-1,-1],[-1,0],[-1,1],[0,-1],[0,1],[1,-1],[1,0],[1,1],[-2,-2],[-2,-1],[-2,0],[-2,1],[-2,2],[-1,-2],[-1,2],[0,-2],[0,2],[1,-2],[1,2],[2,-2],[2,-1],[2,0],[2,1],[2,2]]
.Comment ça fonctionne:
Edit: @xnor a fait remarquer que
mapM id
estsequence
.la source
mapM id
est plus court quesequence
.Mathematica, 83 octets
Pour l'utiliser, mettez un script et entrez
n
ensuites
sur des lignes distinctes. Imprime chaque tableau comme une liste entre crochets et délimitée par des virgules (par exemple,{-1, 0, 1}
). Il fonctionne en prenant chaque liste de longueurn
avec des nombres entre[-cur..cur]
et en imprimant ceux qui incluent soit-cur
oucur
. Il répète ensuite cela pour touscur
dans[0..s]
. (Ce message contient 19 caractères!)la source
JavaScript (SpiderMonkey 30+), 134 octets
Utilise l'approche cartésienne du pouvoir et du tri, à laquelle j'ai pensé séparément, mais je recompilais SpiderMonkey à l'époque, donc je ne pouvais pas répondre à cela avant @Dennis.
la source