Dies ist eine Code-Golf-Frage.
Bei gegebenen ganzen Zahlen s und n besteht die Aufgabe darin, alle Arrays der Länge n auszugeben, die Werte von -s bis s annehmen. Die einzige Wendung ist, dass Sie sie in der folgenden Reihenfolge ausgeben müssen.
- Das All-Zero-Array der Länge n.
- Alle Arrays der Länge n mit Elementen von -1 bis 1, ausgenommen alle zuvor ausgegebenen Arrays.
- Alle Arrays der Länge n mit Elementen von -2 bis 2, ausgenommen alle zuvor ausgegebenen Arrays.
- Und so weiter, bis Sie zu allen Arrays der Länge n mit Elementen von -s bis s gelangen, mit Ausnahme aller zuvor ausgegebenen Arrays.
Sie sollten ein Array pro Zeile ausgeben. Sie können durch Leerzeichen oder Kommas getrennt sein.
Hier ist ein nicht konformer Python-Code, der die Arrays / Listen / Tupel in der richtigen Reihenfolge ausgibt.
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 "***"
Zusätzlicher Ruhm (und eine positive Bewertung von mir) für Antworten, die keine festgelegte Subtraktion oder Äquivalente ausführen.