Aller au contenu

Permutations des éléments d'une liste⚓︎

L'ordre des éléments d'une liste est important. Mais parfois, on veut pouvoir utiliser un autre ordre. Par exemple [1, 2, 3] et [2, 1, 3] contiennent les mêmes éléments dans des ordres différents. On dit que ce sont des permutations l'une de l'autre.

Voici toutes les permutations de [1, 2, 3] :

  • [1, 2, 3]
  • [1, 3, 2]
  • [2, 1, 3]
  • [2, 3, 1]
  • [3, 1, 2]
  • [3, 2, 1]

L'objectif de cet exercice est de faire une fonction permutations qui prend une liste et renvoie la liste de toutes les permutations de cette liste. Il faut que tous les éléments de la liste soit différents les uns des autres.

Pour cela, on utilise la fonction récursive permut_rec qui prend deux listes liste et pris et qui renvoie la liste de toutes les permutations de liste qui commencent par pris. Les éléments de pris doivent être des éléments de liste sans répétition.

À la fin de l'appel prem_rec(liste, pris) il faut que pris ait retrouvé son état initial, même s'il est modifié pendant l'appel.

Compléter le code :

Exemples
>>> perm_rec([1, 2, 3], [1])
[[1, 2, 3], [1, 3, 2]]
>>> perm_rec(['a', 'v', 'i', 'o', 'n'], ['n', 'i', 'v'])
[['n', 'i', 'v', 'a', 'o'], ['n', 'i', 'v', 'o', 'a']]
>>> perm_rec([7, 4, 5, 3, 8], [3, 4])
[[3, 4, 7, 5, 8], [3, 4, 7, 8, 5], [3, 4, 5, 7, 8], [3, 4, 5, 8, 7], [3, 4, 8, 7, 5], [3, 4, 8, 5, 7]]
>>> perm_rec([6, 1, 4], [])
[[6, 1, 4], [6, 4, 1], [1, 6, 4], [1, 4, 6], [4, 6, 1], [4, 1, 6]]
🐍 Console Python
>>> permutations([1, 2, 3])
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
>>> permutations([])
[[]]
>>> permutations([6, 1, 4])
[[6, 1, 4], [6, 4, 1], [1, 6, 4], [1, 4, 6], [4, 6, 1], [4, 1, 6]]
###(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
.128013s3o_8bcdufvg/0ly n7apS.r1me,(P2=4:twki9][5h)6050i0B0J0u0M0p0b0r0h0p0u0b0b0G010J0M0v010406050b0j0A0A0u0y0q040w0d0p0j0.0d0s050n0^0`0|0~0?0v04171e051h0n1h1j1e0?0i0M0l0$0(0*0,0R0M0m0R0p1x0R0J0;050X0g0p0B1s0)0+011w1y1A1y0J1G1I1E0J0g0d0i0~1F0y1f0J0R0$110b0v0u0s0,0F011K1u010k0Z0B0s0u0A0B1E1,1.1?1M1_1I1|1~0;0a0r0E0y0d0v0d0b0M140s0r0V1*0y0y0B0h2j17210s1f0n1(2w0J1$1#1%0i230,1A0s1{2g1E1p1r0%1L2G0M2I0s1Y1q1E0v2p1f2u2w2!0@1-2k2O1@2T0y0{0p0;0r0z2t2(0=2%222*1M2,2.2:0F2?1.2^2u2F012}0u2/040r0c312v0?342{0,37390r0H3d332(353j2:0Q3n3f3p3h360d2-382:0T3u2_2)1t2|3z2~3a0t3E3g3H3i3J3B3a0f3N3w3P3y3A3k0N3V2`3X3r040z0o3$3G2P3Y3K0z2=182@3v3%3/3)0z303@323_3.2+3R390z3c3 3e3F3q440;0z3m483o3`433Z4d3t4g414b4k3*3D4n4a3x3|3M4t3O3{4c3*3U4y3W4A4q0z3#4E4i3I4q0F3,4K424M3K0F3?2!4o4v4B0F3~4W4u3(4Z474$4z4j4T4f4+4F4-3S0F4m4:4L3Q4N4s2$1k2Y172M2z0i2D350h1Y1 1f521i504~2$570V2Z4;1M0L0;0V0k3n4%3/0K2:5p4,2|0k0;0v0B2-0e2p0h5u5j0,0:040D5F4`360;1A0b0J0B5L4R5H0;0C3n0r5q2+5y0y0M0b5T355I0S0I3u0r5:5Z5v0,5l040M5o4g5=5G360g5O1{5*3x5I5K4g5!2|5$5(633X5,5Y680,0d0;0G0G6f5?5 6116676n656c3{5O5(5R6u1@5,5.4n5;6E5}5M5^2p0J0j0y6q2!6G5U015I0P6z69042X6b6r5~6i040x6U3i0;570v0q6(6R0;0D0S0O5/5;6g015^0B0!5S6Z5M5I6C4W6F6^6n0s6w5Q0B0e5z2-130u2j5)5|6_6#6l7i6s0;0P6?6D746P355^0k3z6m5~77046|0B1~0s0J7y5M0d5s5_6N2@7t4v786y6 6Q716@7s755~5^5`7H6Q7A7C7E7G7m6!7K2T7*6O7j7K2R7#3q6a7h2$7n04723^7W7W6_7A6X7`2@7j0;6%7S7^040u0v5z0s0i6.6t8a7P7B1I7)8i0;0S7V806E6_7v7x7+5M835A0A137@3x7J0;7?8y7$5y8B5C2q8p5J6.7A5P7R7{5~5I5X8J8b848P5-8s8t74827Q7a7c8C0X7g6.6#898V8z0;8d8f8h8k6d6:8R8L7d7/867|8r7r8)7X8_6W5%8532876$916W2e8P6;8(9a6Q6I0W6L7M327O3(8,7b8B7e8;4n4X3X5^5n6.7K5Z8~3{5x6W9z8:0M159e2v6_8j8^8K048T6~9W5+8q7~408u6n9q6K6M8E9w9N5B5D9l9i9Z8P8Y7:7|7p974W9D3/0h0z0;030r5R5Q9S0=a11@5^1L5A949u8+9;0A8N5E9K6A6:6Tao1M0A0M4d9`9/3/au0;4#958W5Way1@aA044*aD700;0O9{7N9U7o6.aI4VaL7TaN9 aQ6n7k7l9|aE040Par9#3xaUax8Za.av04aC9f7|aPai6naIaKa_a)aOaG1M6SaTa?aVb0aM04a{2v9vaza?a 9Ta`b30,aIa^bib17q4_9p8`0*agbk5Nakam9la,aW350ba404000u00a:a(5MbE0;000lbJas5VbbbwbNbG0MbRa-8 bUa;3XbW000dbZbC64aFb%3/b)0sb,b9aX04b2b:apa*6.b=b@bobabc3a6_b)bYbKa!5~b)bQ8P0OaZa|6!6ja%cabaa+b bF00b?c9chbMcpc8bS6/b$bL6Qccc15ic3bVcpbIcsbdc6cpb+cec4beb}bBb^bDcpcrcx8XcGbOcwb!3/cYb|1McCcJc56nb)cNcXb/cAcUbOcIc;b`bq3^8vbt0bbvc)6)by9?c`0DcSc26QaI4xc$b}cP6_aI4/b-b#dfa}a?4^djc%c=cldabgc,cQata?4Dddb4aNdla)d8cEdt0;bhdG9$czds35dhcecgcKa#cjbw6SdFdgduc`dD5MdPd!bwdbdvdY0;docTb.dMctdH04dzdpb}b{c?d:dXdmdId+d 04did/dkd)a?dcd_dBd;dS5~aId^e5dqecc-eedncOdVaScxa~e1el0;e4d9dLd#d?d.ewd:eydOe8esd$dyend2cyd~etaJeGd?evdKeCe7d-ePeE0;egeBe6eKd*c`d{dNd}b6e0d(e$a?eRaRejdwbleIe.d|3Xe%dAbTeDa=eVe(f0b#eMeHe-e~cyf4bfeueWf1d@fee|eme`e*fi0;e9ehd`c|40c~8cbu0yahed9b8.bzd6f6d?4}eae eU3*fhfce3eJe{ei9~bwa$eoa*fDeX04fFfpebfbaHb7fKf$fdf3fTfVfffYe!eif#dxf*f9c(fOf)fJf+eKb5eqf%fkd=fWf/eSe#f`f?fMf}g8bTf-fmf|f^drg3ffe;bje/0;g5e=e)gjf5e,gaghe?d,fXf(g9b8f:d`f=gdgugla)gF01a/g2fyfEcefr3eac5kc d1gcbx8.9A9Q0saae=d7gugCg6f;fIbng,defIdJgqdRek7IdUf~7ogefLg+e=gKbmgAe^f8fGcygrgOdLg~f{h0gmgXergNg_d?g/gqgKf f9h3hie@gLg1gwh2dZgwh9hjhbguhlhfflfLg?hEgsg fNhFcRguhHgJfIhehQgna@hLhJhNg0h6fZfHhUhDhThghuh75I0OgR4hbsfud0fwbw8A937fg#g%7|d7cffRg{gXdWh.3-7ugVh@eKh_8/h{9RbAgugphIhaffhScFhUgIbai0eKfSg|fUigh4htawhrgyiob_hzhshoh7aIihh)hMg9iBexhRhWijgthZggh,giiQfLiIimh*f@iUb`hnephph+h#fafIiMeThUiYiCi(b~iSi/g7iKh5gzize2ili?f,gHiwgMhvfIi=dLi54t0n5g0B2w2Xjf511q532z2B2x1X1Z2z0u1Hji0n520?jv0W0Y0!04.