Source de syracuse.py
1:
2: # procédure qui affiche une « carte »
3: def affiche_carte (c):
4: print('point de départ :',c['départ'])
5: print('durée du vol :',c['durée'])
6: print('altitude maximale :',c['altmax'])
7: print('trajectoire :',c['trajet'])
8:
9: # transforme un entier selon les règles de Syracuse
10: def transfo (n):
11: if n%2==0: # n est pair
12: return n/2 # on divise n par deux
13: else: # n est impair
14: return 3*n+1 # fois trois et on ajoute un
15:
16: # teste la conjecture de Syracuse pour un entier n
17: def syracuse (n):
18: c = {}
19: c['départ'] = n
20: c['durée'] = 0
21: c['altmax'] = 1
22: c['trajet'] = []
23: while n != 1:
24: c['trajet'].append(n)
25: c['durée'] = c['durée'] + 1
26: if n>c['altmax']:
27: c['altmax'] = n
28: n = transfo(n)
29: c['trajet'].append(1)
30: return c
31:
32: # appels aux procédures définies ci-dessus
33:
34: #c10 = {}
35: #c10['départ'] = 10
36: #c10['durée'] = 6
37: #c10['altmax'] = 16
38: #c10['trajet'] = []
39: #affiche_carte(c10)
40:
41: affiche_carte(syracuse(10))
42:
43: