Đây là một câu hỏi mã-golf.
Cho các số nguyên s và n, nhiệm vụ là xuất ra tất cả các mảng có độ dài n lấy các giá trị từ -s đến s. Nút thắt duy nhất là bạn phải xuất chúng theo thứ tự sau.
- Các mảng số không có độ dài n.
- Tất cả các mảng có độ dài n với các phần tử từ -1 đến 1 không bao gồm bất kỳ mảng nào bạn đã xuất ra trước đó.
- Tất cả các mảng có độ dài n với các phần tử từ -2 đến 2 không bao gồm bất kỳ mảng nào bạn đã xuất ra trước đó.
- Và cứ như vậy cho đến khi bạn nhận được tất cả các mảng có độ dài n với các phần tử từ -s đến s không bao gồm bất kỳ mảng nào bạn đã xuất ra trước đó.
Bạn nên xuất một mảng trên mỗi dòng. Chúng có thể là không gian hoặc dấu phẩy được phân tách.
Dưới đây là một số mã python không tuân thủ xuất ra các mảng / danh sách / bộ dữ liệu theo đúng thứ tự.
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 "***"
Vinh quang thêm (và một upvote từ tôi) cho câu trả lời thực hiện không có phép trừ hoặc tương đương.