パイソン3.5、194 181 169 152 149 146バイト。
(2バイトの@ Sherlock9に感謝!)
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(100万)、出力のシーケンスを計算することもでき[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:])の最初から2番目のサブリスト内の各サブリストの同じ数のコンテンツをy[-1]、listの最後のサブリスト()の同じ数のアイテムと比較します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]]
次に、whileループに入ると、listの各サブリストをsublist y[:-1:]の同じ数のアイテムと比較しますy[-1]。たとえば、最初にとを比較[[0],[1],[0]]し[1]ます。最後のサブリストが残りにあるyので、それは続けて、それから比較して[[0,0],[0,1],[0,2]]、[1,0]。以来[1,0]の残りの部分で、今ではありませんy 、特定の順序で、それは、最小限のリマインダー配列であり、そのため、[1,0]正しく返されます。