นี่คือคำถามที่รหัสกอล์ฟ
รับจำนวนเต็ม s และ n งานคือการส่งออกอาร์เรย์ทั้งหมดของความยาว n ซึ่งรับค่าจาก -s ถึง s บิดเท่านั้นคือคุณต้องส่งออกตามลำดับต่อไปนี้
- อาร์เรย์ศูนย์ทั้งหมดของความยาว n
- อาร์เรย์ที่มีความยาว n ทั้งหมดที่มีองค์ประกอบตั้งแต่ -1 ถึง 1 ไม่รวมอาร์เรย์ใด ๆ ที่คุณเคยแสดงผลมาก่อน
- อาร์เรย์ที่มีความยาวทั้งหมด n พร้อมองค์ประกอบตั้งแต่ -2 ถึง 2 ไม่รวมอาร์เรย์ใด ๆ ที่คุณได้แสดงผลมาก่อน
- และต่อไปจนกว่าคุณจะไปยังอาร์เรย์ที่มีความยาว n ทั้งหมดด้วยองค์ประกอบตั้งแต่ -s ถึง s โดยไม่รวมถึงอาร์เรย์ใด ๆ ที่คุณได้แสดงผลมาก่อน
คุณควรส่งออกหนึ่งอาร์เรย์ต่อบรรทัด สามารถเว้นวรรคหรือคั่นด้วยเครื่องหมายจุลภาค
นี่คือบางส่วนของรหัสหลามที่ไม่ปฏิบัติตามที่ส่งออกอาร์เรย์ / รายการ / สิ่งอันดับในลำดับที่ถูกต้อง
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 "***"
สง่าราศีพิเศษ (และ upvote จากฉัน) สำหรับคำตอบที่ไม่มีการลบการตั้งค่าหรือเทียบเท่า