Copies/Example/Sol/Ex 9

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