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

.128013.8217:pbvà(4i2Dedmx3;s= 1ow_lSInatf)h]R,qcrg.[éyPku/050n0m0E0D0j0z0s0u0M0z0D0s0s0t010E0j0d010406050s0V0o0o0D0N0S040A0w0z0V0;0w0C0u020D0o0d0r0u0J0m0~0N0L0V0m0s050W0{0}0 110_0d041p1w051z0W1z1B1w0_0n0j0f0)0+0-0/0H0j0O0H0z1P0H0E0@050!0e0z0m1K0,0.011O1Q1S1Q0E1Y1!1W0E0e0w0n111X0N1x0E0H0)140s0d0D0C0/0k011$1M010F0$0m0C1c0m1W2123281(2b1!2e0o2g040a0u0T0N0w0d0w0s0j17190Y1 0N0N0m0M2B1p2i0C1x0W1}2N0E1{1`1|0n2k0/1S0C2d2y1W1H1J0*1%2X0j2Z0C1@1I1W0d2G1x2L2N2^0`22192)292.0N0~0z0@0v2K2|0^2{2j2~1(30320@0k3623382L2W013d0D33040q3h2M0_3k3b0/3n3p0i3s2N2=0m2N2%2Q0n2U3l0M1@2q0X1I1x3D2@373B053L0Y3S3a1L1(0U0@0Y0F3U3v3!0/0x0@0u3*2|3l0C0F0@2H0H230O0m0y0f3o0m0V0N0s0y1/0m0D0V3;3Z2*010?040h4b2}3,3m0@47494i3l4f0K3B3:3+4d0C0@2,1H0M3~351q3T4v294r4t394j4w4y0C4A3~3g4E3i4K4q0@0G0c3B060u4#4u3=3w4l040E1i2x0N0#2G4J4G1(0w0@0t4=4(4k4x4+0D1Z484a4S2M4U4)4f0Q4p4)4~4z0j4B0y4D2`4?0/4f0I4Z4$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-0w4/0j4;5.1p3W3E1y2?1p3G1p0E3I6v2S2O1?1^2Q5t6q0W3G1v5x3l2G0o0y0F0D0U3~0H0q0@1h1j1l1n0u4Y5C1C381w0B0z0u1n0E0u0R0O412p0C6-2x0-0j510u0n00160$0j0s0m0N0u1!0(0E0V0d766Z1y382%3l1*1R1T1V6J4)2m2d2f0@2s0A0M0N0=6-0T0S1}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_0W7G6r6F6H1A040l230(4B1 0Y0K751#2p0o0e2G0u0g6|2v2A1#0n0V0u2z0O2Z0u0t6+0s6-0n0b506j2V0R7Z0V0R970d0V71980u0N0R0{0z0!6-6,0u0D0F0F2H0E0R9R0V0p0u407u6E0(9f6:0V0M0H9j9l9n9p0t0P7d8_0Y0!0$0s04.
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

.128013:pbv(4i2+edm3;s= 1o5w_lSInatf-)h]R,qcrg[éyPku/050l0k0C0B0h0x0p0r0L0x0B0p0p0q010C0h0c010406050p0T0m0m0B0M0Q040y0t0x0T0/0t0A0r020B0m0c0o0r0I0k0|0M0K0T0k0p050U0_0{0}0 0@0c041n1u051x0U1x1z1u0@0l0h0e0%0)0+0-0G0h0N0G0x1N0G0C0=050Y0d0x0k1I0*0,011M1O1Q1O0C1W1Y1U0C0d0t0l0 1V0M1v0C0G0%120p0c0B0A0-0i011!1K010D0!0k0A1a0k1U1 21261$291Y2c0m2e040a0r0R0M0t0c0t0p0h15170W1}0M0M0k0L2z1n2g0A1v0U1{2L0C1_1^1`0l2i0-1Q0A2b2w1U1F1H0(1#2V0h2X0A1=1G1U0c2E1v2J2L2?0^20172%272,0M0|0x0=0s2I2`0?2_2h2|1$2~300=0i3421362J2U013b0B31040n3f2K0@3i390-3l3n0g3q3h2`3j3w0=0u3z1w2;1n2#2O0l2S3j0L1=2o0V1G1v2:0k2=353G3P0W3X381J1$0S0=0W0D3G3t3(0-0v0=0r3.3B3u3k0D0=2F0G210N0k0w0e3m0k0T0M0w0_1G210C0k3^3%2(010;040f4f2{3:3k0=1-0k0B0T4m3j4j0J3z3@3/4h0A0=2*1F0L4e1o3Y4B274j0F0b3z060r4S4A3_4o3*040h3-4J3g4U4g2}4E0A4G4I2?4%4n4h0t0=020x0C0o4z374:2}0d0=2l4v3`4j4l4#2K4|3C4q0B1X4s4u563$4}1$4N4{4L1$4=040E5k4V4h0m0h32524o4j4P5f4R4T5C583`4D044d1b0t0M0Z2E5q4(5m0=0q5O5h3v5a5c4t5w4h4j0O5Z4)4Y4+0h4H5%5i0=0H4Q5C5D5l5V5H5b1Y5Y5f5E5x0=5$5}5@4p5)4,5-0-4j5:5f4/3j5n5S6b5~4C5W5{5e2^635#67644F5+4-356c3`5n0j5T3j5t5v625r4M5/5;5=4S6h5(4r5|6m6E5.04616O5P5^6r5,6g636x6z3`6B04336D6U4i6G6Y6P0-6e4z6v4o5G5I2v5L0h5N5A1n3!3W3H710U3K1n0C3M762Q2M1;1?2O5`733K1t5g3j2E0m0w0D0B0S420G0n0=1f1h1j1l0r5z2^1A361u0z0x0r1l0C0r0P0N452n0A7J2v0+0h5c0r0l00140!0h0p0k0M0r0)0r2:0t0L0P0l471Z0570043~4042441Y470p0w6M5e7?7V0P290A0h1Z2:0P7-0W0{2b7J5z1D3S2$4o1(1P1R1T7j3`2k2b2d0=2q0y0L0M0:7J0R0Q1{163G3V5g2@3Y7?6K3)3+0k4!6T5U013=043@6*8R0A3|7@0L3 0A41434547490T4b7P6t3g8L680=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*0M7~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

.128013:pv(ui2edms=1 ow_lSnatf)h,crgyPkb/050j0i0w0v0g0s0l0o0B0s0v0l0l0m010w0g0c010406050l0f0k0k0v0C0E040t0p0s0f0Z0p0u050I0*0,0.0:0(0c040|1305160I1618130(0j0g0d0R0T0V0X0z0g0D0z0s1m0z0w0$050M0H0s0i1h0U0W011l1n1p1n0w1v1x1t0w0H0p0j0:1u0C140w0z0R0?0l0c0v0u0X0h011z1j010x0O0i0u0v0k0i1t1X1Z1(1B1+1x1.1:0$0a0o0F0C0p0c0p0l0g0_0u0o0K1V0C0C0i0B280|1?0u140I1T2l0w1R1Q1S0j1^0X1p0u1-251t1e1g0S1A2v0g2x0u1N1f1t0c2e142j2l2P0)1Y292D1)2I0C0-0s0$0n2i2T0%2S1@2V1B2X2Z0$0h2%1Z2l2M0i2l2B2o0j2s2u010B1N1;142{172N2*2k2=39310K2O2T2 0G0$0K0x3a3e2+1i1B0q0$0o3l382 0u0x0$2f0z1Z0D0i0r1F2x0l0r0-2p0g0B0i0l3t2j2 0#040e3P3f2,0X0u0$0k3V3n2E013S0A3l3s3Q3X013Z042G1e3M0r2$0}2(3u3/3*3,3}3o3Y0$3?3L3D2;3{2?413(3S0y0b3l060o4i3-3W423:3y0B3A0u3C0r0d0v1x0f0C3H1I0i0v0f3$2U4m3S3U49393.4m3;3#4J3m4F4c0$3+4P4k3%2W440u3@3D3`2R4L4S044U2P4W4R4Y3=4!460r484(4l4*0y4g0|3c2_15370I352m2}0|2p2o1M1O2o0v1w50531f2)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

.128013:pv(ui2edm3s=1 ow_lSnatf)h,crgyPkb/050j0i0x0w0g0t0m0p0C0t0w0m0m0n010x0g0c010406050m0f0k0k0w0D0F040u0q0t0f0!0q0v050J0+0-0/0;0)0c040}1405170J1719140)0j0g0d0S0U0W0Y0A0g0E0A0t1n0A0x0%050N0I0t0i1i0V0X011m1o1q1o0x1w1y1u0x0I0q0j0;1v0D150x0A0S0@0m0c0w0v0Y0h011A1k010y0P0i0v0w0k0i1u1Y1!1)1C1,1y1/1;0%0a0p0G0D0q0c0q0m0g0`0v0p0L1W0D0D0i0C290}1@0v150J1U2m0x1S1R1T0j1_0Y1q0v1.261u1f1h0T1B2w0g2y0v1O1g1u0c2f152k2m2Q0*1Z2a2E1*2J0D0.0t0%0o2j2U0(2T1^2W1C2Y2!0%0h2(1!2*2k2v012/0w2#040l2?2l162O0}2C2p0j2t2`0C1O1=153618342S0~2)053b0L2P2U2`0H0%0L0y313o2,1j1C0r0%0p3v2+2V3y0Y0v0y0%2g0A1!0E0i0s3b0t0{2y0m0s0.2q0g0C0i0m3D2_2-0Y0$040e3%3p3)2{0%0k3.3x2F013+0B3v3C3(3G3;042H1f3!0s2%3j2@3E2`3{3}4a3:0v0%433Z3P2=48323 3_3+0z0b3v060p4v3~3/403r040y0q0D4d4o2X0%1G2y4F4y3_0q3A420|4m044x3^4H043?4S4e403+4s4S4u4w4*4!3_4g043L3N3P0d2}0i0f0D3V1J0i0w0f3@3F4p0%3-4Z4G2.4I1n4K554M1*4c4S4U514W4i45472S563*0%3|5f4,5i0v444k504b0%0z4t0}3m0i2m2N5E351g372p2r2n1N1P2p0w1x5H0J360)5U0M0O0Q04.