Conversion gloutonne

Algorithme glouton

Pour convertir en base \(2\) un entier écrit en base \(10\), nous pouvons utiliser la méthode des soustractions successives, qui un algorithme glouton.

Cet algorithme est identique à celui du rendu de monnaie, en considérant les puissances de \(2\) successives comme valeurs des pièces.

Par exemple, pour obtenir la représentation binaire de \(43\), on peut utiliser les valeurs \(32\), \(16\), \(8\), \(4\), \(2\) et \(1\), classées par ordre décroissant. On se limite à \(32\) car la puissance suivante, \(64\), est strictement supérieure à \(43\).

On procède alors ainsi :

  • Pour \(43\) on peut prendre \(32\) , il reste \(11\),
  • Pour \(11\) on ne peut pas prendre \(16\) (en effet \(16>11\)),
  • Pour \(11\) on peut prendre \(8\), il reste \(3\),
  • Pour \(3\) on ne peut pas prendre \(4\),
  • Pour \(3\) on peut prendre \(2\), il reste \(1\),
  • Pour \(1\) on peut prendre \(1\), il reste \(0\).

On obtient la représentation binaire en observant les différentes étapes : s'il est possible de prendre une puissance, on note un 1, si c'est impossible, on note un 0.

Puissance de 2 Possible ? Bit correspondant
\(32\) Oui 1
\(16\) Non 0
\(8\) Oui 1
\(4\) Non 0
\(2\) Oui 1
\(1\) Oui 1

Dans la pratique, pour convertir « à la main » \(43\) en binaire, cela revient réaliser le tableau suivant :

\(32\) \(16\) \(8\) \(4\) \(2\) \(1\)
1 0 1 0 1 1

On en déduit que \(43\) en décimal s'écrit 101011 en binaire.

Travail à faire

Une fonction binaire a été écrite qui prend en paramètre un entier positif ou nul écrit en base \(10\), et renvoie la chaîne de caractères la plus courte possible (sans zéros inutiles) représentant son écriture binaire.

Cependant, cette fonction contient des erreurs.

Corriger la fonction pour quelle puisse passer les tests.

Exemples
>>> binaire(43)
'101011'
>>> binaire(32)
'100000'
>>> binaire(0)
'0'
>>> binaire(54321)
'1101010000110001'
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10
.128073.128013à3è4.nx/R8p)I0hC*v7c256g9f=buS-,_l(waPké;:ors1qmydi te+050Z0%0$0M0!0J0U0#0v0J0M0U0U0C010$0!0m010406050U0E0X0X0M0T0Y040F0S0J0E0|0S0h0#020M0X0m0Q0#0k0%160T0W0E0%0U050j13151719110m041x1E051H0j1H1J1E110Z0!0t0;0?0^0`0q0!0z0q0J1X0q0$0 050,0D0J0%1S0@0_011W1Y1!1Y0$1*1,1(0$0D0S0Z191)0T1F0$0q0;1c0U0m0M0h0`0w011.1U010B0.0%0h1k0%1(292b2g1:2j1,2m0X2o040b0#0N0T0S0m0S0U0!1f1h0*270T0T0%0v2J1x2q0h1F0j252V0$2322240Z2s0`1!0h2l2G1(1P1R0=1/2)0!2+0h1 1Q1(0m2O1F2T2V30122a1h2;2h2_0T160J0 0#0V2S3410332r361:383a3c0w3f2b3h2T2(013m0M3b040#0d3q2U113t3k0`3w3y0#0f3C3s343u3I3c0x3M3E3O3G3v0S393x3c0y3T3i351T3l3Y3n3z0u3%3F3*3H3,3!3z0l3:3V3=3X3Z3J0A3{3j3}3Q040V0p423)2=3~3-0V3e1y3g3U434b450V3p4g3r4i4a373@3y0V3B4o3D3(3P4t0 0V3L4x3N4j4s3 4C3S4F4q4A4J463$4M4z3W4l3/4S3;4k4B463`4X3|4Z4P0V414F1G2~1x2/2Y0Z2$3u0v1 2y0)1Q1F2}0%2 3g3M054_0*514H1:0O0 0*0B534Y2h0L3c5e4(370B0 0D2@0-2O5j580`0~040K5s4r3l0 2_0X0D5r4-5f1:5v0n0R3T0#5N0#4T3}5a040!5d4F5P5H3H5B0S5D5F305X5k1:0S0 0C0C3M5)5t010X0!0 485G5*5u0 5L4M5O615;5z0`5S2O0$0E0T0h5:5Q4b0U2e04010p013T06616d370 2O130J0,0$6c5Y015,045/5W6o1:6f0 016k4M6m5O6D5Z040m0E0!0^2b0v0%0I160i6w5|6y5-6Z5=5@4C5M6L6x5S0L1W1,6%645?5^044n5(6M6#040s6=3P0 6P6R0U6T6V6X703W6z026t0Q6B6{6x0h5!5$0%5y3u5v5 306K6263716O6Q6S0h6U6W0M6Y6C6x6z7f3g7t3W6)6_793}6z6 7D6!7i7v74767A7C7q7r7I5R0 6/2k7M4k727w757y777B7)2h7b0z0$0Q7;1:7K5`326x7o6+7s6|5S5U7`6N5C5E7l7Q5=7?7^7G3r7!7*7T7x7z785{5=80607s626|7S6r0E6t0M6v8b6?7F863v6q1v8w6u8D6z0(8D6F6h0V6I7q8r8s7h7j898J6$8A7u885%7H6|6z0G8D7S738k7/7X4h8S830 0%0/8a7~6!8p8R8S6,7R8F6s8I8Z7a8Y7g91048v8x8z988c0 8L953}8N6i8Q8;8r8t7+7U7.7W8X6A8+9q8.9t9i4b6z0j0j8D7K6`4h7Z8?9a0+696b9A6p9L938y3%0j55504.9X0j4;1x0$4?9$2!2W1~202Y0M1+9Z4;1D576?2O0X0I0B0M0O6V0q0d0 1p1r1t1v0#7p521K3h1E0a0#0r0+0#3x0z3Y2I0q2x0#0z0J0S1e1g0#0h0P6U0^2I1-2L4_152l6U0T0#2aaG1,0:0m1d0:0z0T2b0*aL7,760:2L0w0#1e2k0U0g1Gab040r1g2Z5q1q2l0$0#0c0;1-a5auar0:0M0t1g0:9|2I0#0Z2b0:0J00aiak25anapar0$at2L2O0h0Z0Eb31-0X1g2m0!0%0H0#0.au001va;2a0:avax750!2Obm270h0U0|680%aJbxbJ1q9:bH0?0#1!bKaAa68-7-axbH6|17al160$0%0i0 090K0w090n5:a!aK0#0P1t1Q3xa:1-a?bUbWb,bmaL0!0eb$bk0#bicb2Lbo0hbq0%0g0#0o0J0#byco1h0%0B0Bag2FaybS2L2Zar0tbNbV0MaHaU7.b%6xb)bb8yb-b/b;b?5:13b~0hc5aI0#2H1l1,b31Q6R0!ata:c8bGcXb(0Tb*cNb.04b:b=b@4Fa%aa119!0+0-0/04.