Python 3.5, 194 181 169 152 149 146 byte:
( Terima kasih kepada @ Sherlock9 untuk 2 byte! )
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)
Bekerja dengan sempurna, dan juga cukup cepat. Menghitung urutan sisa 100000output minimal[0, 1, 0, 0, 4, 5, 0, 1, 0, 10, 4, 4] dan hanya membutuhkan waktu sekitar 3 detik. Bahkan bisa menghitung urutan untuk input 1000000(1 juta), output [0, 1, 0, 0, 4, 1, 0, 1, 0, 1, 4, 1, 8, 10, 0, 9], dan butuh sekitar 60 detik.
Penjelasan
Pada dasarnya apa fungsi ini adalah pertama-tama membuat daftar,, ydengan semua di j mod imana jsetiap bilangan bulat dalam kisaran 0=>7(termasuk 7) dan isetiap bilangan bulat dalam kisaran 0=>100. Program kemudian masuk ke whileloop tak terbatas dan membandingkan jumlah konten yang sama dari masing-masing sublist dalam sublist pertama hingga kedua dari terakhir y( y[:-1:]) dengan jumlah item yang sama di sublist terakhir ( y[-1]) daftar y. Ketika sublist y[-1]adalah berbeda daripada sublist lain, loop rusak dari, dan benar minimal urutan sisanya dikembalikan.
Misalnya, jika inputnya 3, yakan menjadi:
[[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]]
Kemudian, ketika masuk ke loop sementara, ia membandingkan setiap sublist dalam daftar y[:-1:]dengan jumlah item yang sama dalam sublist y[-1]. Sebagai contoh, pertama-tama akan membandingkan [[0],[1],[0]]dan [1]. Karena sublist terakhir ada di sisa y, itu akan melanjutkan dan kemudian membandingkan [[0,0],[0,1],[0,2]]dan [1,0]. Karena [1,0]sekarang BUKAN dalam sisa y dalam urutan tertentu , itu adalah urutan pengingat minimal, dan karena itu, [1,0]akan dikembalikan dengan benar.