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.
code-golf
array-manipulation
Martin Ender
sumber
sumber
Jawaban:
Jelly, 9 byte
Tidak ada pengurangan daftar yang digunakan dalam pembuatan posting ini. Cobalah online!
Bagaimana itu bekerja
sumber
MATL , 18 byte
Input pertama adalah
s
, kedua adalahn
Ini berfungsi dalam versi bahasa saat ini (15.0.0) .
Cobalah online!
Penjelasan
sumber
Haskell,
6160 byteContoh penggunaan:
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]]
.Bagaimana itu bekerja:
Edit: @xnor keluar menunjuk bahwa
mapM id
adalahsequence
.sumber
mapM id
lebih pendek darisequence
.Mathematica, 83 byte
Untuk menggunakan, masukkan skrip dan masukan
n
kemudians
pada baris yang terpisah. Mencetak setiap larik sebagai daftar yang dikurung kurawal, dibatasi koma (misalnya,{-1, 0, 1}
). Ini bekerja dengan mengambil setiap daftar panjangn
dengan angka di antara[-cur..cur]
, dan dan mencetak yang termasuk salah satu-cur
ataucur
. Kemudian mengulangi ini untuk semuacur
di[0..s]
. (Posting ini berisi 19 `karakter!)sumber
JavaScript (SpiderMonkey 30+), 134 byte
Menggunakan pendekatan cartesian-power-and-sort, yang saya pikirkan secara terpisah, tetapi saya sedang mengkompilasi ulang SpiderMonkey pada saat itu sehingga saya tidak dapat menjawab ini sebelum @ Dennis.
sumber