24 lines
809 B
Plaintext
24 lines
809 B
Plaintext
1) Avec la représentation du cours d'une file par une liste [3, *,
|
|
*, A, B, C] où l[0] est l'indice du premier élément de la file,
|
|
les opérations enfile et défile ont des complexités en $O(1)$. La
|
|
fonction peek consiste à renvoyer l[l[0]] si l[0] > 0, et None sinon.
|
|
2)
|
|
#+begin_src python
|
|
def hamming(n):
|
|
f2, f3, f5 = nouvelle_file(), nouvelle_file(), nouvelle_file()
|
|
l = [1]
|
|
enfile(f2, 2);enfile(f3, 3);enfile(f5, 5)
|
|
while True:
|
|
k2, k3, k5 = peek(f2), peek(f3), peek(f5)
|
|
m = min(k2, k3, k5)
|
|
if k2 == m: defile(f2)
|
|
if k3 == m: defile(f3)
|
|
if k5 == m: defile(f5)
|
|
enfile(f2, 2*m); enfile(f3, 3*m); enfile(f5, 5*m)
|
|
if m<n:
|
|
l)append(m)
|
|
else:
|
|
break
|
|
return l
|
|
#+end_src
|
|
|