Python 3.5, 194 181 169 152 149 146 ไบต์:
( ขอบคุณ @ Sherlock9 สำหรับ 2 ไบต์! )
def r(o,c=0):
y=[[j%i for i in range(2,100)]for j in range(o+1)]
while 1:
c+=1;z=y[-1][:c]
if z not in[f[:c]for f in y[:-1]]:break
print(z)
ทำงานได้อย่างสมบูรณ์แบบและยังค่อนข้างรวดเร็ว การคำนวณหาลำดับ100000เอาต์พุตที่เหลือน้อยที่สุด[0, 1, 0, 0, 4, 5, 0, 1, 0, 10, 4, 4]และใช้เวลาประมาณ 3 วินาทีเท่านั้น มันสามารถคำนวณลำดับของอินพุต1000000(1 ล้าน) ออกได้[0, 1, 0, 0, 4, 1, 0, 1, 0, 1, 4, 1, 8, 10, 0, 9]และใช้เวลาประมาณ 60 วินาที
คำอธิบาย
โดยทั่วไปสิ่งที่ฟังก์ชั่นนี้จะเป็นตอนแรกสร้างรายการyที่มีทั้งหมดj mod iที่jเป็นจำนวนเต็มในช่วงทุก0=>7(รวม 7) และเป็นทุกจำนวนเต็มในช่วงi 0=>100โปรแกรมจากนั้นจะเข้าสู่อนันต์whileห่วงและเปรียบเทียบจำนวนเดียวกันของเนื้อหาของแต่ละรายการย่อยภายในครั้งแรกผ่านรายการย่อยที่สองไปสุดท้ายของy( y[:-1:]) ที่มีหมายเลขเดียวกันของรายการในรายการย่อยสุดท้าย ( y[-1]) yของรายการ เมื่อรายการย่อยy[-1]คือที่แตกต่างกันกว่ารายการย่อยอื่น ๆ ห่วงเสียออกจากและถูกต้องตามลำดับที่เหลือน้อยที่สุดจะถูกส่งกลับ
ตัวอย่างเช่นถ้าอินพุตเป็น 3 yจะเป็น:
[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], [1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]]
จากนั้นเมื่อเข้าสู่ห่วงในขณะที่มันจะเปรียบเทียบแต่ละรายการย่อยในรายการที่y[:-1:]มีจำนวนรายการเดียวกันในรายการy[-1]ย่อย ยกตัวอย่างเช่นมันเป็นครั้งแรกจะเปรียบเทียบและ[[0],[1],[0]] [1]ตั้งแต่รายการย่อยสุดท้ายคือในส่วนที่เหลือของyมันจะดำเนินการต่อแล้วเปรียบเทียบและ[[0,0],[0,1],[0,2]] [1,0]เนื่องจาก[1,0]ขณะนี้ไม่ได้อยู่ในส่วนที่เหลือของy ลำดับเฉพาะนั่นคือลำดับการเตือนที่น้อยที่สุดดังนั้น[1,0]จะส่งคืนอย่างถูกต้อง