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.1280133ytbIq)4_7u:k8s(ar5.lRàv21m+ép;=cxS*i,6fdghe Pèow/Cn0-9050Q0T0e0s0M0w0q0U0I0w0s0q0q0H010e0M0F010406050q0m0C0C0s0t0d040K0X0w0m0|0X0#0U020s0C0F0G0U0x0T160t0h0m0T0q050Z13151719110F041x1E051H0Z1H1J1E110Q0M0z0;0?0^0`0S0M0R0S0w1X0S0e0 050,0f0w0T1S0@0_011W1Y1!1Y0e1*1,1(0e0f0X0Q191)0t1F0e0S0;1c0q0F0s0#0`0A011.1U010P0.0T0#1k0T1(292b2g1:2j1,2m0C2o040b0U0V0t0X0F0X0q0M1f1h0*270t0t0T0I2J1x2q0#1F0Z252V0e2322240Q2s0`1!0#2l2G1(1P1R0=1/2)0M2+0#1 1Q1(0F2O1F2T2V30122a1h2;2h2_0t160w0 0U0B2S3410332r361:383a3c0A3f2b3h2T2(013m0s3b040U0c3q2U113t3k0`3w3y0U0j3C3s343u3I3c0u3M3E3O3G3v0X393x3c0O3T3i351T3l3Y3n3z0l3%3F3*3H3,3!3z0p3:3V3=3X3Z3J0(3{3j3}3Q040B0$423)2=3~3-0B3e1y3g3U434b450B3p4g3r4i4a373@3y0B3B4o3D3(3P4t0 0B3L4x3N4j4s3 4C3S4F4q4A4J463$4M4z3W4l3/4S3;4k4B463`4X3|4Z4P0B414F1G2~1x2/2Y0Q2$3u0I1 2y0)1Q1F2}0T2 3g3M054_0*514H1:0o0 0*0P534Y2h0Y3c5e4(370P0 0f2@0-2O5j580`0~040r5s4r3l0 2_0C0f5r4-5f1:5v0i0n3T0U5N0U4T3}5a040M5d4F5P5H3H5B0X5D5F305X5k1:0X0 0H0H3M5)5t010C0M0 485G5*5u0 5L4M5O615;5z0`5S2O0e0m0t0#5:5Q4b0q2e04010$013T06616d370 2O130w0,0e6c5Y015,045/5W6o1:6f0 016k4M6m5O6D5Z040F0m0M0^2b0I0T0k160J6w5|6y5-6Z5=5@4C5M6L6x5S0Y1W1,6%645?5^044n5(6M6#040L6=3P0 6P6R0q6T6V6X703W6z026t0G6B6{6x0#5!5$0T5y3u5v5 306K6263716O6Q6S0#6U6W0s6Y6C6x6z7f3g7t3W6)6_793}6z6 7D6!7i7v74767A7C7q7r7I5R0 6/2k7M4k727w757y777B7)2h7b0R0e0G7;1:7K5`326x7o6+7s6|5S5U7`6N5C5E7l7Q5=7?7^7G3r7!7*7T7x7z785{5=80607s626|7S6r0m6t0s6v8b6?7F863v6q1v8w6u8D6z0D8D6F6h0B6I7q8r8s7h7j898J6$8A7u885%7H6|6z0%8D7S738k7/7X4h8S830 0T0/8a7~6!8p8R8S6,7R8F6s8I8Z7a8Y7g91048v8x8z988c0 8L953}8N6i8Q8;8r8t7+7U7.7W8X6A8+9q8.9t9i4b6z0Z0Z8D7K6`4h7Z8?9a0+696b9A6p9L938y3%0Z55504.9X0Z4;1x0e4?9$2!2W1~202Y0s1+9Z4;1D576?2O0C0k0P0s0o6V0S0c0 1p1r1t1v0U7p521K3h1E0a0U0!0+0U3x0R3Y2I0S2x0U0R0w0X1e1g0U0#0E6U0^2I1-2L4_152l6U0t0U2aaG1,0:0F1d0:0R0t2b0*aL7,760:2L0A0U1e2k0q0v1Gab040!1g2Z5q1q2l0e0U0y0;1-a5auar0:0s0z1g0:9|2I0U0Q2b0:0w00aiak25anapar0eat2L2O0#0Q0mb31-0C1g2m0M0T0N0U0.au001va;2a0:avax750M2Obm270#0q0|680TaJbxbJ1q9:bH0?0U1!bKaAa68-7-axbH6|17al160e0T0J0 090r0A090i5:a!aK0U0E1t1Q3xa:1-a?bUbWb,bmaL0M0Wb$bk0Ubicb2Lbo0#bq0T0v0U0g0w0Ubyco1h0T0P0Pag2FaybS2L2Zar0zbNbV0saHaU7.b%6xb)bb8yb-b/b;b?5:13b~0#c5aI0U2H1l1,b31Q6R0Mata:c8bGcXb(0tb*cNb.04b:b=b@4Fa%aa119!0+0-0/04.