Echange de valeurs

Cet exercice porte sur l'échange de valeurs dans un tableau.

Les questions peuvent être traitées de manière indépendante.

1. Échanger deux éléments d'un tableau

Écrire la procédure echange_valeurs_tableau qui prend en paramètres un tableau et deux entiers correspondant à deux indices du tableau, et qui échange les valeurs situées à ces deux indices.

Modification en place

La modification du tableau se fait en place : on ne crée pas de nouveau tableau, on modifie directement le tableau initial.

>>> entiers = [1, 2, 7, 3]
>>> echange_valeurs_tableau(entiers, 1, 2)
>>> entiers
[1, 7, 2, 3]

On garantit que les indices sont bien présents dans le tableau.

###(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

.8217.128013bàuS[,3_4l.(wnx/R)pIaPké;:horsD1vc2qmgyd]ieft =050P0S0U0w0R0l0F0V0J0l0w0F0F0W010U0R0u010406050F0e0M0M0w0E0O040f0D0l0e0;0D0p0V020w0M0u0A0V0s0S0~0E0L0e0S0F050r0{0}0 110_0u041p1w051z0r1z1B1w0_0P0R0I0)0+0-0/0C0R0N0C0l1P0C0U0@050!0c0l0S1K0,0.011O1Q1S1Q0U1Y1!1W0U0c0D0P111X0E1x0U0C0)140F0u0w0p0/0K011$1M010T0$0S0p1c0S1W2123281(2b1!2e0M2g040b0V0x0E0D0u0D0F0R17190Y1 0E0E0S0J2B1p2i0p1x0r1}2N0U1{1`1|0P2k0/1S0p2d2y1W1H1J0*1%2X0R2Z0p1@1I1W0u2G1x2L2N2^0`22192)292.0E0~0l0@0H2K2|0^2{2j2~1(30320@0K3623382L2W013d0w33040i3h2M0_3k3b0/3n3p0k3s2N2=0S2N2%2Q0P2U3l0J1@2q0X1I1x3D2@373B053L0Y3S3a1L1(0y0@0Y0T3U3v3!0/0o0@0V3*2|3l0p0T0@2H0C230N0S0j0I3o0S0e0E0F0j1/0S0w0e3;3Z2*010?040n4b2}3,3m0@47494i3l4f0h3B3:3+4d0p0@2,1H0J3~351q3T4v294r4t394j4w4y0p4A3~3g4E3i4K4q0@0t0B3B060V4#4u3=3w4l040U1i2x0E0#2G4J4G1(0D0@0W4=4(4k4x4+0w1Z484a4S2M4U4)4f0g4p4)4~4z0R4B0j4D2`4?0/4f0Q4Z4$4%4c2 4m501!4o543Y4L4H0@595w564}4N4P5g5a4k5l4{5q4@4_5L5y3c5s515v5i4|4d585I4M045d5f4R5V5M5k0@5m5w4!4$5D5!4n535)5Q5+045B5^3?5F5e4Q5Z5z045-2^5p5_014^044`5w4#5;5r4+4-0D4/0R4;5.1p3W3E1y2?1p3G1p0U3I6v2S2O1?1^2Q5t6q0r3G1v5x3l2G0M0j0T0w0y3~0C0i0@1h1j1l1n0V4Y5C1C381w0v0l0V1n0U0V0z0N412p0p6-2x0-0R510V0P00160$0R0F0S0E0V1!0(0U0e0u766Z1y382%3l1*1R1T1V6J4)2m2d2f0@2s0f0J0E0=6-0x0O1}183U3R4K2_3T6p7l4k3$043(621(3.043:5C5j3m3^043`3|3~401!43455?7M5`4h7R5W6g7%7+5*4e0@4s6d6f5R5#4O605H7/684I7@7S5c7{5%7(7;044X5n5:825S5u5@4F7,1(5Y7~5~7`5G5h8g7:5l7?667^3x8d52868j5}5b5 858k575,5P3l6a6c8t8c4 5T8f4T7S8z8p68835G5(8T4V648s37678l7.8A5J5A868V7|8o8Q8h5`65370_0r7G6r6F6H1A040G230(4B1 0Y0h751#2p0M0c2G0V0d6|2v2A1#0P0e0V2z0N2Z0V0W6+0F6-0P0a506j2V0z7Z0e0z970u0e71980V0E0z0{0l0!6-6,0V0w0T0T2H0U0z9R0e0q0V407u6E0(9f6:0e0J0C9j9l9n9p0W0m7d8_0Y0!0$0F04.
2. Échanger un élément d'un tableau avec son suivant

Écrire la procédure echange_valeur_suivante qui prend en paramètres un tableau et un entier correspondant à un indice du tableau, et qui échange les valeurs situées à cet indice et à l'indice suivant du tableau. Si l'indice n'a pas de suivant dans le tableau, ce dernier n'est pas modifié.

>>> entiers = [1, 2, 7, 3]
>>> echange_valeurs_tableau(entiers, 0)
>>> entiers
[2, 1, 7, 3]

On garantit que l'indice est bien présent dans le tableau.

###(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

.128013buS-[,3_4l(wn/R)pIaPké;:hors1vc25qmgyd]ieft =+050M0P0R0t0O0k0C0S0F0k0t0C0C0T010R0O0r010406050C0c0J0J0t0B0L040d0A0k0c0/0A0n0S020t0J0r0x0S0p0P0|0B0I0c0P0C050o0_0{0}0 0@0r041n1u051x0o1x1z1u0@0M0O0E0%0)0+0-0z0O0K0z0k1N0z0R0=050Y0b0k0P1I0*0,011M1O1Q1O0R1W1Y1U0R0b0A0M0 1V0B1v0R0z0%120C0r0t0n0-0G011!1K010Q0!0P0n1a0P1U1 21261$291Y2c0J2e040a0S0u0B0A0r0A0C0O15170W1}0B0B0P0F2z1n2g0n1v0o1{2L0R1_1^1`0M2i0-1Q0n2b2w1U1F1H0(1#2V0O2X0n1=1G1U0r2E1v2J2L2?0^20172%272,0B0|0k0=0D2I2`0?2_2h2|1$2~300=0G3421362J2U013b0t31040h3f2K0@3i390-3l3n0j3q3h2`3j3w0=0H3z1w2;1n2#2O0M2S3j0F1=2o0V1G1v2:0P2=353G3P0W3X381J1$0v0=0W0Q3G3t3(0-0m0=0S3.3B3u3k0Q0=2F0z210K0P0i0E3m0P0c0B0i0_1G210R0P3^3%2(010;040l4f2{3:3k0=1-0P0t0c4m3j4j0g3z3@3/4h0n0=2*1F0F4e1o3Y4B274j0q0y3z060S4S4A3_4o3*040O3-4J3g4U4g2}4E0n4G4I2?4%4n4h0A0=020k0R0x4z374:2}0b0=2l4v3`4j4l4#2K4|3C4q0t1X4s4u563$4}1$4N4{4L1$4=040e5k4V4h0J0O32524o4j4P5f4R4T5C583`4D044d1b0A0B0Z2E5q4(5m0=0T5O5h3v5a5c4t5w4h4j0f5Z4)4Y4+0O4H5%5i0=0N4Q5C5D5l5V5H5b1Y5Y5f5E5x0=5$5}5@4p5)4,5-0-4j5:5f4/3j5n5S6b5~4C5W5{5e2^635#67644F5+4-356c3`5n0U5T3j5t5v625r4M5/5;5=4S6h5(4r5|6m6E5.04616O5P5^6r5,6g636x6z3`6B04336D6U4i6G6Y6P0-6e4z6v4o5G5I2v5L0O5N5A1n3!3W3H710o3K1n0R3M762Q2M1;1?2O5`733K1t5g3j2E0J0i0Q0t0v420z0h0=1f1h1j1l0S5z2^1A361u0s0k0S1l0R0S0w0K452n0n7J2v0+0O5c0S0M00140!0O0C0P0B0S0)0S2:0A0F0w0M471Z0570043~4042441Y470C0i6M5e7?7V0w290n0O1Z2:0w7-0W0{2b7J5z1D3S2$4o1(1P1R1T7j3`2k2b2d0=2q0d0F0B0:7J0u0L1{163G3V5g2@3Y7?6K3)3+0P4!6T5U013=043@6*8R0n3|7@0F3 0n41434547490c4b7P6t3g8L680=558Q595_5X6l4K6/6,044y6.6+5G6W8:576n0=4O6H6J634X4Z6#6@4*66938R5n4@4_9h4C4 04518W4w8@6p6^7f6N8~6+5j9l6d0=5p9F6$5u6(6p5y9c5=8=647^8%7`8*0B7~809N9x9v5F6j5d9!919q5(969*924.9R955*6X9;6Z0=6y9J4o6%6)8_539a4Q6 3Q2L8G3J3T0@740X0Z0#04.

On considère à présent une matrice, représentée par un tableau de tableaux.
Ainsi la matrice suivante : \(\begin{matrix} 1 & 2 & 3\\ 4 & 5 & 6 \end{matrix}\)

est représentée par :

matrice = [[1, 2, 3],
           [4, 5, 6]]
3. Échanger deux lignes d'une matrice

Écrire la procédure echange_lignes_matrices qui prend en paramètres une matrice et deux entiers correspondant à deux indices du tableau, et qui échange les lignes de la matrice situées à ces deux indices.

>>> echange_lignes_matrices(matrice, 0, 1)
>>> matrice
[[4, 5, 6], [1, 2, 3]]

On garantit que les indices sont bien présents dans le tableau.

Fonction echange_valeurs_tableau

On pourra s'appuyer sur la fontion echange_valeurs_tableau déjà chargée en mémoire.

###(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

.128013bSu,_l(wn/)paPk:hors1vc2mgydi fte=050C0H0G0n0D0g0u0E0x0g0n0u0u0I010G0D0m010406050u0d0z0z0n0t0B040c0s0g0d0Z0s0j050k0*0,0.0:0(0m040|1305160k1618130(0C0D0w0R0T0V0X0r0D0A0r0g1m0r0G0$050M0b0g0H1h0U0W011l1n1p1n0G1v1x1t0G0b0s0C0:1u0t140G0r0R0?0u0m0n0j0X0y011z1j010F0O0H0j0n0z0H1t1X1Z1(1B1+1x1.1:0$0a0E0o0t0s0m0s0u0D0_0j0E0K1V0t0t0H0x280|1?0j140k1T2l0G1R1Q1S0C1^0X1p0j1-251t1e1g0S1A2v0D2x0j1N1f1t0m2e142j2l2P0)1Y292D1)2I0t0-0g0$0v2i2T0%2S1@2V1B2X2Z0$0y2%1Z2l2M0H2l2B2o0C2s2u010x1N1;142{172N2*2k2=39310K2O2T2 0p0$0K0F3a3e2+1i1B0i0$0E3l382 0j0F0$2f0r1Z0A0H0f1F2x0u0f0-2p0D0x0H0u3t2j2 0#040h3P3f2,0X0j0$0z3V3n2E013S0e3l3s3Q3X013Z042G1e3M0f2$0}2(3u3/3*3,3}3o3Y0$3?3L3D2;3{2?413(3S0l0q3l060E4i3-3W423:3y0x3A0j3C0f0w0n1x0d0t3H1I0H0n0d3$2U4m3S3U49393.4m3;3#4J3m4F4c0$3+4P4k3%2W440j3@3D3`2R4L4S044U2P4W4R4Y3=4!460f484(4l4*0l4g0|3c2_15370k352m2}0|2p2o1M1O2o0n1w50531f2)530L0N0P04.
4. Échanger deux colonnes d'une matrice

Écrire la procédure echange_colonnes_matrices qui prend en paramètres une matrice et deux entiers correspondants à deux indices de colonnes, et qui échange les colonnes de la matrice situées à ces deux indices.

>>> echange_colonnes_matrices(matrice, 0, 1)
>>> matrice
[[2, 1, 3], [5, 4, 6]]

On garantit que les indices sont bien présents dans le tableau.

Fonction echange_valeurs_tableau

On pourra s'appuyer sur la fontion echange_valeurs_tableau déjà chargée en mémoire.

###(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

.128013bSu,3_l(wn/)paPk:hors1vc2mgydi fte=050D0I0H0o0E0h0v0F0y0h0o0v0v0J010H0E0n010406050v0d0A0A0o0u0C040c0t0h0d0!0t0k050l0+0-0/0;0)0n040}1405170l1719140)0D0E0x0S0U0W0Y0s0E0B0s0h1n0s0H0%050N0b0h0I1i0V0X011m1o1q1o0H1w1y1u0H0b0t0D0;1v0u150H0s0S0@0v0n0o0k0Y0z011A1k010G0P0I0k0o0A0I1u1Y1!1)1C1,1y1/1;0%0a0F0p0u0t0n0t0v0E0`0k0F0L1W0u0u0I0y290}1@0k150l1U2m0H1S1R1T0D1_0Y1q0k1.261u1f1h0T1B2w0E2y0k1O1g1u0n2f152k2m2Q0*1Z2a2E1*2J0u0.0h0%0w2j2U0(2T1^2W1C2Y2!0%0z2(1!2*2k2v012/0o2#040f2?2l162O0}2C2p0D2t2`0y1O1=153618342S0~2)053b0L2P2U2`0q0%0L0G313o2,1j1C0j0%0F3v2+2V3y0Y0k0G0%2g0s1!0B0I0g3b0h0{2y0v0g0.2q0E0y0I0v3D2_2-0Y0$040i3%3p3)2{0%0A3.3x2F013+0e3v3C3(3G3;042H1f3!0g2%3j2@3E2`3{3}4a3:0k0%433Z3P2=48323 3_3+0m0r3v060F4v3~3/403r040G0t0u4d4o2X0%1G2y4F4y3_0t3A420|4m044x3^4H043?4S4e403+4s4S4u4w4*4!3_4g043L3N3P0x2}0I0d0u3V1J0I0o0d3@3F4p0%3-4Z4G2.4I1n4K554M1*4c4S4U514W4i45472S563*0%3|5f4,5i0k444k504b0%0m4t0}3m0I2m2N5E351g372p2r2n1N1P2p0o1x5H0l360)5U0M0O0Q04.