Ini adalah pertanyaan kode-golf.
Diberikan bilangan bulat s dan n tugasnya adalah untuk mengeluarkan semua larik panjang n yang mengambil nilai dari -s ke s. Satu-satunya twist adalah bahwa Anda harus menampilkannya dalam urutan berikut.
- Seluruh nol array panjang n.
- Semua array panjang n dengan elemen dari -1 hingga 1 tidak termasuk array yang telah Anda hasilkan sebelumnya.
- Semua array panjang n dengan elemen dari -2 hingga 2 tidak termasuk array yang telah Anda hasilkan sebelumnya.
- Dan seterusnya sampai Anda mendapatkan semua array dengan panjang n dengan elemen dari -s ke s tidak termasuk array yang telah Anda hasilkan sebelumnya.
Anda harus menampilkan satu array per baris. Mereka bisa terpisah ruang atau koma.
Berikut adalah beberapa kode python yang tidak patuh yang menampilkan array / daftar / tupel dalam urutan yang benar.
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 "***"
Kemuliaan ekstra (dan upvote dari saya) untuk jawaban yang tidak melakukan pengurangan set atau setara.