︠83006bb1-9e0a-438a-bc22-a857f771a48bi︠ %md # Une implémentation de ce que j'ai trouvé sur le site du LaCim Une rechercher sur Goole pour "collatz conjecture sage" mène directement à un document fort intéressant... ︡057f3a59-10bf-40b2-b2fa-76f4d58587a7︡{"done":true,"md":"# Une implémentation de ce que j'ai trouvé sur le site du LaCim\n\nUne rechercher sur Goole pour \"collatz conjecture sage\" mène directement à un document fort intéressant..."} ︠26041b04-9ad2-4ec7-84ad-75b5b6757b8ei︠ %md La définition de la fonction ︡8358d97e-e2cb-4901-858b-b01248676c54︡{"done":true,"md":"La définition de la fonction"} ︠ef039f0e-3fe2-45f4-a216-43a18b8f41b1s︠ def collatz(n): if n % 2 == 0: return n/2 else: return 3*n+1 ︡3d8e2398-77d0-4f1e-a175-aa89867eaf80︡{"done":true}︡ ︠d1bf6b9f-f83c-4d8f-9903-e7bb2264ad49i︠ %md Quelques calculs, pas d'itération pour le moment. ︡7ec3ba3e-b5c5-4c0b-95be-d462c0cfe5bb︡{"done":true,"md":"Quelques calculs, pas d'itération pour le moment."} ︠e20efac1-e3de-4aed-8ae1-5a59aa543b8as︠ [collatz(i) for i in range(1,100)] ︡7eb26b76-8246-4d34-a836-baa97af45b6b︡{"stdout":"[4, 1, 10, 2, 16, 3, 22, 4, 28, 5, 34, 6, 40, 7, 46, 8, 52, 9, 58, 10, 64, 11, 70, 12, 76, 13, 82, 14, 88, 15, 94, 16, 100, 17, 106, 18, 112, 19, 118, 20, 124, 21, 130, 22, 136, 23, 142, 24, 148, 25, 154, 26, 160, 27, 166, 28, 172, 29, 178, 30, 184, 31, 190, 32, 196, 33, 202, 34, 208, 35, 214, 36, 220, 37, 226, 38, 232, 39, 238, 40, 244, 41, 250, 42, 256, 43, 262, 44, 268, 45, 274, 46, 280, 47, 286, 48, 292, 49, 298]\n"}︡{"done":true}︡ ︠bef291b6-8e81-49a2-9d4a-2a1ba06de65ei︠ %md On peut itérer maintenant. Aussitôt qu'on tombe sur 1, c'est fini. ︡67607521-13c8-40de-906e-a8b766d0728c︡{"done":true,"md":"On peut itérer maintenant. Aussitôt qu'on tombe sur 1, c'est fini."} ︠b36c64c9-7ba0-4e06-9ffc-1320578d4398s︠ def collatz_sequence(n): L = [n] x = n while x != 1: x = collatz(x) L.append(x) return(L) ︡21882700-e3ba-4eae-97c1-aef0f020d7c1︡{"done":true}︡ ︠f3f3a5c9-ce8a-4537-964c-07c8df5ddad3i︠ %md Deux petits exemples ︡5df0dd45-686e-40bb-96ab-ff0b3a2ed7b2︡{"done":true,"md":"Deux petits exemples"} ︠57c693cf-1b70-488c-a356-2e4cc997a2f4s︠ collatz_sequence(11) ︡8d622493-19e5-4773-aa3b-4f06c51fa553︡{"stdout":"[11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]\n"}︡{"done":true}︡ ︠b3d08771-7433-434d-b95e-c6f30354264cs︠ max(collatz_sequence(27)) ︡b757f27b-ff77-4165-9ff2-a56a11a9c423︡{"stdout":"9232\n"}︡{"done":true}︡ ︠4f80367f-e6cf-45c8-9c8d-d291bcceca1di︠ %md On peut faire un graphique avec ︡a730c5c2-8de4-4c92-9904-669c0a98856a︡{"done":true,"md":"On peut faire un graphique avec"} ︠29f79796-89f0-40d3-a071-056cb98b81fcs︠ line([(i, x) for (i,x) in enumerate(collatz_sequence(27))]) ︡1d0e9a7f-dcbb-45f6-9ac8-922769952b56︡{"file":{"filename":"/projects/5f7308b9-2961-476d-840c-ab53b74c25d8/.sage/temp/compute5-us/15538/tmp_iqeAi9.svg","show":true,"text":null,"uuid":"7b03ba4e-948c-4bd7-8549-705ca9e5b6b9"},"once":false}︡{"html":"
"}︡{"done":true}︡ ︠86c854e4-4690-499d-9937-dec8197ddcdbi︠ %md Et mieux, un truc interactif ︡81173553-d4de-470d-9836-77ae07b0a831︡{"done":true,"md":"Et mieux, un truc interactif"} ︠92df4556-8056-456b-a184-1b38bcd46894s︠ @interact def f(n=27): line([(i, x) for (i,x) in enumerate(collatz_sequence(n))]).show() ︡668c987b-bca6-428c-8592-23df5fecf848︡{"interact":{"controls":[{"control_type":"input-box","default":27,"label":"n","nrows":1,"readonly":false,"submit_button":null,"type":null,"var":"n","width":null}],"flicker":false,"id":"dafa5861-b6f5-4be2-bda9-0402c6003e67","layout":[[["n",12,null]],[["",12,null]]],"style":"None"}}︡{"done":true}︡ ︠cbcecf58-780f-4312-aa84-33328a3e4485i︠ %md Et on peut s'intéresser au nombre de tours que ça prend avant d'arriver à 1. ︡daecc986-5da2-402a-8ee8-9f42079c6165︡{"done":true,"md":"Et on peut s'intéresser au nombre de tours que ça prend avant d'arriver à 1."} ︠6df760d9-57d8-4850-9afd-0e9f58b1985bs︠ def stopping_time(n): st = 0 x = n while x != 1: st += 1 x=collatz(x) return st ︡82cdac89-5d18-41f6-84d6-446f70112f7f︡{"done":true}︡ ︠515aec02-5e92-48ed-a365-64ffd2db52e9s︠ stopping_time(27) ︡3357cd10-9a13-4638-838a-6db6ea6b52fd︡{"stdout":"111\n"}︡{"done":true}︡ ︠5132b943-e41c-409c-8d47-2eaf32a8ad13s︠ bar_chart([stopping_time(i) for i in range(1,1001)]) ︡92770a02-2d85-46b4-aac1-8be2bd011f8a︡{"file":{"filename":"/projects/5f7308b9-2961-476d-840c-ab53b74c25d8/.sage/temp/compute5-us/26478/tmp_NZ9DAg.svg","show":true,"text":null,"uuid":"d6821984-f4a1-4480-b72b-0e6cf654cf30"},"once":false}︡{"html":""}︡{"done":true}︡ ︠2a31d97e-33d8-4c54-9896-48b43ecab126︠