Це питання з кодовим гольфом.
З урахуванням цілих чисел s та n завдання полягає у виведенні всіх масивів довжиною n, які приймають значення від -s до s. Єдиний поворот полягає в тому, що ви повинні вивести їх у наступному порядку.
- Усі нульові масиви довжиною n.
- Усі масиви довжиною n з елементами від -1 до 1, виключаючи будь-який масив, який ви вивели раніше.
- Усі масиви довжиною n з елементами від -2 до 2, виключаючи будь-який масив, який ви вивели раніше.
- І так далі, поки ви не отримаєте всі масиви довжиною n з елементами від -s до s, виключаючи будь-який масив, який ви вивели раніше.
Ви повинні вивести один масив на рядок. Вони можуть бути розділені пробілом або комами.
Ось кілька невідповідних кодів python, який виводить масиви / списки / кортежі в потрібному порядку.
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 "***"
Додаткова слава (і відгук від мене) за відповіді, які не виконують заданих віднімань або еквівалентів.