Problème des huit dames (1)

Aux échecs, la dame est capable de se déplacer dans toutes les directions.

Mouvement des dames Disposition valide

Le problème des huit dames consiste à placer \(8\) dames sur un échiquier classique (\(8\) lignes et \(8\) colonnes) de façon à ce qu'aucune d'entre elles ne soit menacée par une autre. Ainsi il n'y a qu'une seule dame par ligne, colonne ou diagonale. La figure ci-dessus (à droite) illustre une disposition valide.

On considère dans cet exercice des « échiquiers » de taille \(n \ge 1\) variable. On garantit que l'échiquier est bien carré. Selon la taille de l'échiquier, on pourra placer plus ou moins de dames.

Le problème considéré dans cet exercice consiste donc à vérifier qu'il y a exactement \(n\) dames dans un échiquier de \(n \times n\) cases de façon à ce qu'aucune d'entre elles ne soit menacée par une autre.

Les échiquiers seront représentés en machine par des listes de listes contenant :

  • 0 si la case correspondante est vide,
  • 1 si elle contient une dame.
Exemples de listes

La liste ci-dessous représente la disposition valide donnée plus haut.

🐍 Script Python
valide = [
    [0, 0, 0, 1, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 1, 0],
    [0, 0, 1, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 1],
    [0, 1, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 1, 0, 0, 0],
    [1, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 1, 0, 0]
]

La liste ci-dessous représente une disposition invalide dans un échiquier de taille \(n = 3\) :

🐍 Script Python
invalide = [
    [0, 0, 1],
    [1, 0, 0],
    [0, 1, 0]
]

Cette seconde disposition est invalide car deux dames sont sur une même diagonale (invalide[1][0] et invalide[2][1] toutes deux la valeurs 1).

Vous devez écrire différentes fonctions qui vont servir à compter le nombre de dames selon différents axes d'un échiquier, puis la fonction permettant de valider la disposition :

  • ligne(echiquier, i) renvoie le nombre de dames sur une ligne de l'échiquier ;

  • colonne(echiquier, j) renvoie le nombre de dames sur une colonne de l'échiquier ;

  • diagonale_haut(echiquier, i, j) et diagonale_bas(echiquier, i, j) renvoient chacune le nombre de dames sur une diagonale de l'échiquier ;

  • disposition_valide(echiquier) renvoie le booléen répondant à la question « la disposition est-elle valide ? ».

On garantit que toutes les listes de listes passées en paramètres ont bien le même nombre de lignes et de colonnes et que tous les indices sont valides (0 <= indice < n).

Exemples

On utilise les échiquiers valide et invalide définis plus haut.

Les lignes
>>> ligne(valide, 0)
1  # [0, 0, 0, 1, 0, 0, 0, 0]
>>> ligne(valide, 1)
1  # [0, 0, 0, 0, 0, 0, 1, 0]
>>> ligne(valide, 7)
1  # [0, 0, 0, 0, 0, 1, 0, 0]
Les colonnes
>>> colonne(valide, 0)
1  # [0, 0, 0, 0, 0, 0, 1, 0]
>>> colonne(valide, 1)
1  # [0, 0, 0, 0, 1, 0, 0, 0]
>>> colonne(valide, 7)
1  # [0, 0, 0, 1, 0, 0, 0, 0]
Les diagonales ↗
>>> diagonale_haut(valide, 0, 0)
0  # [0]
>>> diagonale_haut(valide, 2, 0)
0  # [0, 0, 0]
>>> diagonale_haut(valide, 7, 0)
1  # [0, 0, 0, 0, 0, 0, 1, 0]
>>> diagonale_haut(valide, 3, 4)
1  # [0, 0, 1, 0]
Les diagonales ↘
>>> diagonale_bas(valide, 0, 0)
1  # [0, 0, 1, 0, 0, 0, 0, 0]
>>> diagonale_bas(valide, 1, 0)
1  # [0, 0, 0, 0, 1, 0, 0]
>>> diagonale_bas(valide, 2, 0)
1  # [0, 0, 0, 0, 0, 1]
>>> diagonale_bas(valide, 7, 0)
0  # [0]
>>> diagonale_bas(invalide, 1, 0)
2  # [1, 1]
Disposition valide ?
>>> disposition_valide(valide)
True
>>> disposition_valide(invalide)
False
Fonction ligne

Écrire la fonction ligne qui prend en paramètres une liste echiquier et l'indice d'une ligne i et renvoie le nombre de dames dans cette ligne dans l'échiquier.

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

.128013sobcdufvg/lyq napSr1me,(P2=:twki][h)050f0w0D0q0G0l0b0o0e0l0q0b0b0B010D0G0r010406050b0g0v0v0q0t0m040s0c0l0g0#0c0p050k0,0.0:0=0*0r040~1505180k181a150*0f0G0i0T0V0X0Z0J0G0j0J0l1o0J0D0(050O0d0l0w1j0W0Y011n1p1r1p0D1x1z1v0D0d0c0f0=1w0t160D0J0T0^0b0r0q0p0Z0A011B1l010h0Q0w0p0q0v0w1v1Z1#1*1D1-1z1:1=0(0a0o0z0t0c0r0c0b0G0{0p0o0M1X0t0t0w0e2a0~1^0p160k1V2n0D1T1S1U0f1`0Z1r0p1/271v1g1i0U1C2x0G2z0p1P1h1v0r2g162l2n2R0+1!2b2F1+2K0t0/0l0(0u2k2V0)2U1_2X1D2Z2#0(0A2)1#2n2O0w2n2D2q0f2u2w010e1P1?162}192P2,2m2@3b330M2Q2V310F0(0M0h3c3g2-1k1D0E0(0o3n3a310p0h0(1H2z3v2l310%040y3D3h2.0Z0p0(2h1n0n0g0G0w0t3J3p2G013G0x3n3u3E3L013N040G3W2W3q0Z3G0K0C3n060o3`3%3K3:013j042g0D0g0t0}0 2*3|3X2Y0d0(103.3F0(3I472^3w3)3+3P0G3R3T3V4j3b3(3~3G0I4f4m0(3-4t3o3/3Y3G0H0K3^0~3e2{17390k372o2 0~2r2q1O1Q2q0q1y4N4Q1h2+4Q0N0P0R04.

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

.128013sobcdufvg/lyq napSr1me,(P2=:twki][h)050f0w0D0q0G0l0b0o0e0l0q0b0b0B010D0G0r010406050b0g0v0v0q0t0m040s0c0l0g0#0c0p050k0,0.0:0=0*0r040~1505180k181a150*0f0G0i0T0V0X0Z0J0G0j0J0l1o0J0D0(050O0d0l0w1j0W0Y011n1p1r1p0D1x1z1v0D0d0c0f0=1w0t160D0J0T0^0b0r0q0p0Z0A011B1l010h0Q0w0p0q0v0w1v1Z1#1*1D1-1z1:1=0(0a0o0z0t0c0r0c0b0G0{0p0o0M1X0t0t0w0e2a0~1^0p160k1V2n0D1T1S1U0f1`0Z1r0p1/271v1g1i0U1C2x0G2z0p1P1h1v0r2g162l2n2R0+1!2b2F1+2K0t0/0l0(0u2k2V0)2U1_2X1D2Z2#0(0A2)1#2n2O0w2n2D2q0f2u2w010e1P1?162}192P2,2m2@3b330M2Q2V310F0(0M0h3c3g2-1k1D0E0(0o3n3a310p0h0(1H2z3v2l310%040y3D3h2.0Z0p0(2h1n0n0g0G0w0t3J3p2G013G0x3n3u3E3L013N040G3W2W3q0Z3G0K0C3n060o3`3%3K3:013j042g0D0g0t0}0 2*3|3X2Y0d0(103.3F0(3I472^3w3)3+3P0G3R3T3V4j3b3(3~3G0I4f4m0(3-4t3o3/3Y3G0H0K3^0~3e2{17390k372o2 0~2r2q1O1Q2q0q1y4N4Q1h2+4Q0N0P0R04.
Fonction colonne

Écrire la fonction colonne qui prend en paramètres une liste echiquier et l'indice d'une colonne j et renvoie le nombre de dames dans cette colonne dans l'échiquier.

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

.128013sobcdufvg/lyq napSr1me,(P2=:jtwki][h)050f0w0E0q0H0l0b0o0e0l0q0b0b0B010E0H0r010406050b0g0v0v0q0t0m040s0c0l0g0$0c0p050k0-0/0;0?0+0r040 1605190k191b160+0f0H0i0U0W0Y0!0K0H0j0K0l1p0K0E0)050P0d0l0w1k0X0Z011o1q1s1q0E1y1A1w0E0d0c0f0?1x0t170E0K0U0_0b0r0q0p0!0A011C1m010h0R0w0p0q0v0w1w1!1$1+1E1.1A1;1?0)0a0o0z0t0c0r0c0b0H0|0p0o0N1Y0t0t0w0e2b0 1_0p170k1W2o0E1U1T1V0f1{0!1s0p1:281w1h1j0V1D2y0H2A0p1Q1i1w0r2h172m2o2S0,1#2c2G1,2L0t0:0l0)0u2l2W0*2V1`2Y1E2!2$0)0A2*1$2o2P0w2o2E2r0f2v2x010e1Q1@172~1a2Q2-2n2^3c340N2R2W320G0)0N0h3d3h2.1l1E0F0)0o3o3b320p0h0)340l0}2A3w2m320(040y3G3i2/0!0p0)2i1o0n0g0H0w0t3M3q2H013J0x3o3v3H3O013Q040D3Z2X3r0!3J0L0C3o060o3}3*3N3?013k042h0E0g0t0~102+3 3!2Z0d0)113;3I0)3L4a2_3x3,3.1s4i3,3J0J4s413.3:4m3c3+413J0I3)4o41430h0c3Y4A044c3=3#4q0H4G4C3#0c3t042J4U404R3R0e3T3V3X4w3#3^3{0 3f2|183a0k382p300 2s2r1P1R2r0q1z4?4_1i2,4_0O0Q0S04.

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

.128013sobcdufvg/lyq napSr1me,(P2=:jtwki][h)050f0w0E0q0H0l0b0o0e0l0q0b0b0B010E0H0r010406050b0g0v0v0q0t0m040s0c0l0g0$0c0p050k0-0/0;0?0+0r040 1605190k191b160+0f0H0i0U0W0Y0!0K0H0j0K0l1p0K0E0)050P0d0l0w1k0X0Z011o1q1s1q0E1y1A1w0E0d0c0f0?1x0t170E0K0U0_0b0r0q0p0!0A011C1m010h0R0w0p0q0v0w1w1!1$1+1E1.1A1;1?0)0a0o0z0t0c0r0c0b0H0|0p0o0N1Y0t0t0w0e2b0 1_0p170k1W2o0E1U1T1V0f1{0!1s0p1:281w1h1j0V1D2y0H2A0p1Q1i1w0r2h172m2o2S0,1#2c2G1,2L0t0:0l0)0u2l2W0*2V1`2Y1E2!2$0)0A2*1$2o2P0w2o2E2r0f2v2x010e1Q1@172~1a2Q2-2n2^3c340N2R2W320G0)0N0h3d3h2.1l1E0F0)0o3o3b320p0h0)340l0}2A3w2m320(040y3G3i2/0!0p0)2i1o0n0g0H0w0t3M3q2H013J0x3o3v3H3O013Q040D3Z2X3r0!3J0L0C3o060o3}3*3N3?013k042h0E0g0t0~102+3 3!2Z0d0)113;3I0)3L4a2_3x3,3.1s4i3,3J0J4s413.3:4m3c3+413J0I3)4o41430h0c3Y4A044c3=3#4q0H4G4C3#0c3t042J4U404R3R0e3T3V3X4w3#3^3{0 3f2|183a0k382p300 2s2r1P1R2r0q1z4?4_1i2,4_0O0Q0S04.
Fonction diagonale_haut

Écrire la fonction diagonale_haut qui prend en paramètres une liste echiquier et les coordonnées d'une case (ligne i et colonne j) et renvoie le nombre de dames dans la diagonale débutant dans la case indiquée et dirigée vers le haut à droite ↗.

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

.128013s3_8ufvIy n7aS1me(P24C:jtwi][h)6Oo;bcdg/0làqp.rL-,=+k5Rxé050M0r0z0n0B0Q0b0k0L0Q0n0b0b0Z010z0B0T010406050b0f0q0q0n0V0j040o0I0Q0f0}0I0l0k020n0q0T0J0k0%0r170V0S0f0r0b050O1416181a120T041y1F051I0O1I1K1F120M0B0h0=0@0_0{0E0B0N0E0Q1Y0E0z10050-0K0Q0r1T0^0`011X1Z1#1Z0z1+1-1)0z0K0I0M1a1*0V1G0z0E0=1d0b0T0n0l0{0u011/1V010g0/0r0l1l0r1)2a2c2h1;2k1-2n0q2p040a0k0t0V0I0T0I0b0B1g1i0+280V0V0r0L2K1y2r0l1G0O262W0z2423250M2t0{1#0l2m2H1)1Q1S0?1:2*0B2,0l201R1)0T2P1G2U2W31132b1i2=2i2`0V170Q100p2T3511342s371;393b100u3f2c3h2U2)013m0n3c040c3q2V123t3k0{3w3y0v3B3s353u3H100$3K3D3M3F3v0I3a3x100G3R3i361U3l3W3n040m3#3E3(3G3*3Y040e3K1H2 1y2:2Z0M2%3u0L202z0*1R1G2~0r303g3_420+4a3j3:010#100+0g3_3/2?010A100k4n3T4h0l0g4k0B0n0N1h3x0r0d0E0n1f4u4g4p0 040s4K3%4p0l102Q1X1u0B0r0V4Q3u4N0Y3K4t4o38100B4#3U4%4)3$3N100y4/4h4N0F0x3R0k504*4v4S100-0/1-4=4+1;0I100Z5953380K102w4`4M104P1z4b5a3G4U0L4W0f4Y4!5p3r4?4:100F4 515B4w102P140Q0-0z5f4L2i5c045e5z2V525Q1;0q0B100P5F505H4p4j040A1X585V045X4R4,044.5;5?3u5S020N0z0J5U315|3U5!5$5P5@5b4r042c0M694@044_5{5*5R10025M0J6g3U4T04560Q5:335r014N4~5;06516F655I045K0f5M0n5O6k6z5S0!633g6H54044V0B4X4Z5l2i4N0D6$3l4-6*0{4N0C6)5;6l6+6i6-6A100C5(6G6?5s5_6r4h5S0X6T3r6V2i67043e6D6G5G6z6t6j646 016R765W7k7a7c316E7f5g1;5,2P0z0f0V0l726W6K6M6O7s1y4d493`7L0O3}1y0z3 7Q2#2X1 212Z0n1,7N3}1E4f6a0{2P0q0d0g0n0#4F0E0c101q1s1u1w0k6C331L3h1F0i0Q0k1w0z0k4I0_0B0k2G897!0k0M001f0/0B0b4Z0k0B0L8a0f2,0k1 0f0?1.057K3u1?1!1$1(7(3u5,0g3W3_0O7K040U120K240W000B0M0)1.858f1.1u2c0}2k8m1-0;8V0T0@0L1r2m0z0;1-0k0Q1h0N8f8h8s1Q4B4D1-0U2C180-0l862M7k182J0E170z0r0(10090s0s0B0Y0y0F095E5{2G7A0k8r1.8 4C2n8@1=4I9f010Y0k1h8b0r1f6C1O056L3h1#047^1h9f0V870f8b1e8+8x6z9b269e9g9i9l0!0p9q4)1^2,0b9G2m281m96860@8^1Y8s9_427A0;0s1u8T837.1f0k0)0N4E2y970k0h0)0V0B8(0V0F0U1y9R129R0o9x0)8-0n8/9W0R8f2E2J9x004I9Z0f0;9aal9)6N9+049j6v1-0X0y9:5{428_0l9?aq0Oas059R0w008Y8@5!0l0B0q158Z0=7{0+0f0(ai4Ea40k4Xa~8f1h2,9W8@0h0V0.0k2`0q8Q9xaway8/ag8=8b2H2I7!0;0b2cbq3W0}9W2M0Q000)5u6Z5w4Za%a)9R0H1i2b0V989$7v0{9(9daP9haR9k9m9oaX649_0q9U8$ai4Z8?0naD0IaFa^aM9c9*bT9j0#bY6U0)0-0T1w9G0M1h0L8^7{423Wc0a#8W0;aCajalan0k0b9U8f9Y0z0jb}781;bQb=9,9l0X0#9n0!0#9p9r31bF0B3h0O9P7%bI9H0K0}8;878_0V8?1.8z141Rb%9M3h2:8A1$1^1%2}3{7~338M7k5,4l6_6c4t6=7g4y049y917;9D6_4N5o6ybO3v5t5v5xc|104(6Pd06t5`c 5Y6.d67D5^7i5qd04|7}3g7t5)7g100l0d0+bi8:971xd8dd7l5ddg3l5i04a:d54O6_da6_6R6_7qdId77j7gdF5kc;dk5ndKd2bCd4dWdA4|dM100XdZ6^d%7)6`04czdn6Fc+5J0,7A7Cdzd:0ldF1AdIc~djdA6t6Y6!5ydcd:6(d-dbe5d:74d-0#dI6:d-di5A6Q100!ejeldD0{8H8Jd~6hekez3U0I6c2^ev3vdFba0l0N0re3d-dsdu8.dw8=dI0Fd?3r128L432W482W7$3|0,0.0:04.

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

.128013s3_8ufvIy n7aS1me(P24C:jtwi][h)6Oo;bcdg/0làqp.rL-,=+k5Rxé050M0r0z0n0B0Q0b0k0L0Q0n0b0b0Z010z0B0T010406050b0f0q0q0n0V0j040o0I0Q0f0}0I0l0k020n0q0T0J0k0%0r170V0S0f0r0b050O1416181a120T041y1F051I0O1I1K1F120M0B0h0=0@0_0{0E0B0N0E0Q1Y0E0z10050-0K0Q0r1T0^0`011X1Z1#1Z0z1+1-1)0z0K0I0M1a1*0V1G0z0E0=1d0b0T0n0l0{0u011/1V010g0/0r0l1l0r1)2a2c2h1;2k1-2n0q2p040a0k0t0V0I0T0I0b0B1g1i0+280V0V0r0L2K1y2r0l1G0O262W0z2423250M2t0{1#0l2m2H1)1Q1S0?1:2*0B2,0l201R1)0T2P1G2U2W31132b1i2=2i2`0V170Q100p2T3511342s371;393b100u3f2c3h2U2)013m0n3c040c3q2V123t3k0{3w3y0v3B3s353u3H100$3K3D3M3F3v0I3a3x100G3R3i361U3l3W3n040m3#3E3(3G3*3Y040e3K1H2 1y2:2Z0M2%3u0L202z0*1R1G2~0r303g3_420+4a3j3:010#100+0g3_3/2?010A100k4n3T4h0l0g4k0B0n0N1h3x0r0d0E0n1f4u4g4p0 040s4K3%4p0l102Q1X1u0B0r0V4Q3u4N0Y3K4t4o38100B4#3U4%4)3$3N100y4/4h4N0F0x3R0k504*4v4S100-0/1-4=4+1;0I100Z5953380K102w4`4M104P1z4b5a3G4U0L4W0f4Y4!5p3r4?4:100F4 515B4w102P140Q0-0z5f4L2i5c045e5z2V525Q1;0q0B100P5F505H4p4j040A1X585V045X4R4,044.5;5?3u5S020N0z0J5U315|3U5!5$5P5@5b4r042c0M694@044_5{5*5R10025M0J6g3U4T04560Q5:335r014N4~5;06516F655I045K0f5M0n5O6k6z5S0!633g6H54044V0B4X4Z5l2i4N0D6$3l4-6*0{4N0C6)5;6l6+6i6-6A100C5(6G6?5s5_6r4h5S0X6T3r6V2i67043e6D6G5G6z6t6j646 016R765W7k7a7c316E7f5g1;5,2P0z0f0V0l726W6K6M6O7s1y4d493`7L0O3}1y0z3 7Q2#2X1 212Z0n1,7N3}1E4f6a0{2P0q0d0g0n0#4F0E0c101q1s1u1w0k6C331L3h1F0i0Q0k1w0z0k4I0_0B0k2G897!0k0M001f0/0B0b4Z0k0B0L8a0f2,0k1 0f0?1.057K3u1?1!1$1(7(3u5,0g3W3_0O7K040U120K240W000B0M0)1.858f1.1u2c0}2k8m1-0;8V0T0@0L1r2m0z0;1-0k0Q1h0N8f8h8s1Q4B4D1-0U2C180-0l862M7k182J0E170z0r0(10090s0s0B0Y0y0F095E5{2G7A0k8r1.8 4C2n8@1=4I9f010Y0k1h8b0r1f6C1O056L3h1#047^1h9f0V870f8b1e8+8x6z9b269e9g9i9l0!0p9q4)1^2,0b9G2m281m96860@8^1Y8s9_427A0;0s1u8T837.1f0k0)0N4E2y970k0h0)0V0B8(0V0F0U1y9R129R0o9x0)8-0n8/9W0R8f2E2J9x004I9Z0f0;9aal9)6N9+049j6v1-0X0y9:5{428_0l9?aq0Oas059R0w008Y8@5!0l0B0q158Z0=7{0+0f0(ai4Ea40k4Xa~8f1h2,9W8@0h0V0.0k2`0q8Q9xaway8/ag8=8b2H2I7!0;0b2cbq3W0}9W2M0Q000)5u6Z5w4Za%a)9R0H1i2b0V989$7v0{9(9daP9haR9k9m9oaX649_0q9U8$ai4Z8?0naD0IaFa^aM9c9*bT9j0#bY6U0)0-0T1w9G0M1h0L8^7{423Wc0a#8W0;aCajalan0k0b9U8f9Y0z0jb}781;bQb=9,9l0X0#9n0!0#9p9r31bF0B3h0O9P7%bI9H0K0}8;878_0V8?1.8z141Rb%9M3h2:8A1$1^1%2}3{7~338M7k5,4l6_6c4t6=7g4y049y917;9D6_4N5o6ybO3v5t5v5xc|104(6Pd06t5`c 5Y6.d67D5^7i5qd04|7}3g7t5)7g100l0d0+bi8:971xd8dd7l5ddg3l5i04a:d54O6_da6_6R6_7qdId77j7gdF5kc;dk5ndKd2bCd4dWdA4|dM100XdZ6^d%7)6`04czdn6Fc+5J0,7A7Cdzd:0ldF1AdIc~djdA6t6Y6!5ydcd:6(d-dbe5d:74d-0#dI6:d-di5A6Q100!ejeldD0{8H8Jd~6hekez3U0I6c2^ev3vdFba0l0N0re3d-dsdu8.dw8=dI0Fd?3r128L432W482W7$3|0,0.0:04.
Fonction diagonale_bas

Écrire la fonction diagonale_haut qui prend en paramètres une liste echiquier et les coordonnées d'une case (ligne i et colonne j) et renvoie le nombre de dames dans la diagonale débutant dans la case indiquée et dirigée vers le bas à droite ↘.

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

.128013s3_8ufvIy n7aS1me(P24C:jtwi]D[h)6Oo;bcdg/0làqp.rL-,=+k5Rxé050N0r0z0n0B0R0b0k0M0R0n0b0b0!010z0B0U010406050b0f0q0q0n0W0j040o0J0R0f0~0J0l0k020n0q0U0K0k0(0r180W0T0f0r0b050P1517191b130U041z1G051J0P1J1L1G130N0B0h0?0^0`0|0F0B0O0F0R1Z0F0z11050.0L0R0r1U0_0{011Y1!1$1!0z1,1.1*0z0L0J0N1b1+0W1H0z0F0?1e0b0U0n0l0|0u011:1W010g0:0r0l1m0r1*2b2d2i1=2l1.2o0q2q040a0k0t0W0J0U0J0b0B1h1j0,290W0W0r0M2L1z2s0l1H0P272X0z2524260N2u0|1$0l2n2I1*1R1T0@1;2+0B2-0l211S1*0U2Q1H2V2X32142c1j2?2j2{0W180R110p2U3612352t381=3a3c110u3g2d3i2V2*013n0n3d040c3r2W133u3l0|3x3z0v3C3t363v3I110%3L3E3N3G3w0J3b3y110H3S3j371V3m3X3o040m3$3F3)3H3+3Z040e3L1I301z2;2!0N2(3v0M212A0+1S1H2 0r313h3`430,4b3k3;010$110,0g3`3:2@010A110k4o3U4i0l0g4l0B0n0O1i3y0r0d0L0_4v4h4q10040s4K3(4q0l112R1Y1v0B0r0W4Q3v4N0Z3L4u4p39110B4#3V4%4)3%3O110y4/4i4N0G0x3S0k504*4w4S110.0:1.4=4+1=0J110!5953390L112x4`4M114P1A4c5a3H4U0M4W0f4Y4!5p3s4?4:110G4 515B4x112Q150R0.0z5f4L2j5c045e5z2W525Q1=0q0B110Q5F505H4q4k040A1Y585V045X4R4,044.5;5?3v5S025M0K5P5@3m550/0R5:325|3V0J4s042d0N624@044_5{5*5R115 0z616l5r3w65570r5l2j4N4~5;06516E6a5I045K0f5M0n5O6s5g5b110#5U696m64044V0B4X4Z6y1=4N0E6$5s5_6*014N0C6)5;6V6+6k346t6/5(6F6?6u6,6O5Y0|5S6S6h3V5!3e6|6E6~4T6j764i746T3h6G4q78043f6C7b6t5,2Q0z0f0W0l7f546I1x6K5N3$0P4e4a3{7H0P3~1z0z407M2$2Y20222!0n1-7J3~1F4g630|2Q0q0d0g0n0$4G0F0c111r1t1v1x0k6B341M3i1G0i0R0k1x0z0k0n0f0`0B0k2H867W0k0N001g0:0B0b4Z0k0B0M870f2-0k200f0@1/057G3v1@1#1%1)7!3v5,0g3X3`7F44040V130L250X000B0N0*1/818c1/1v2d0~2l8j1.0=8S0U0^0M1s2n0z0=1.0k0R1i0O8c8e8p1R4C4E1.0V2D190.0l822N6~192K0F180z0r0)11090s0s0B0Z0y0G095E5{2H7v0k8o1/8|4D2o8;014I0b010Z0k1i880r1g6B1P056K3i1$040D1x8,0l0N2Q8_84881f0=970W999b9d9f0s56670r0Y0B9n4)1_2-0b9D2n291n93820^8=1Z8p9`437v0b0V1z9O139O0o9u0*8*0n8,0W0k0S8c2F2K9u009X8*857k2j98279(9e049g9,1.0Y0y9;5{438?0l9@a70Pa9059O0w008V8;5!0l0B0q168W0?7@0,0f0)0k0h4Fa50k4Xa)0n8c1i2-ai8;0h0W0/0k2{0q8N9uadaf8,2z940=892J7W0=0b2dba3X0~ai2N0R000*5u6Z5w4ZaLaN9O0I1j2c0W958u6tav9a6M9)az9h9j9laF699`0,0b9S0N8Za)4Z8:a:9U0JanaZ9#9%bBay9g0$bH7j0*0.0U1x9D0N1i0M8=7@433Xb.aJ8T0=ak0h0*9$8#ai0b1i950f0k0z0jb+at1=bzax9*9i0#0$9kcg9m9o32bp0B3i0P9M7Zbs9E0L0~8.838?0W8:1/8w151SbO9J3i2;8x1%1_1(2~3|7`347G8C3V5,4m6-6d4u6=6t4y4A8}9x4G9A6-4N5o6_6P6+6Y6!5yc/726.114(717#6 5`c^c~4;c}6i6^5qc:c`044}6|7c6v9-7y6n5Tdg3m5i045kc!d8c-6-7dc=bnc@d7c_4|dcc#110l0d0,b28-b5dj735ddI3wdlaUc,5ndrde68dwc~5S0YdR70d14$c{dL7daB6xdoc_dWdYd65A6`5Ddzd87s0-7v7xd43V0ldl1BdP4Od%5t5v5xe16;d!d}4-6-74dY0$e16:d.ec6ReeegdL8E8Gd|6Hefeq4q6c4-d{6Uc#dla`0l0Od*e94{dQd+c~7ddCdE8+dG8/e1cl7j6~dy6C1zcS7I2X7Y3}0-660b04.

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

.128013s3_8ufvIy n7aS1me(P24C:jtwi]D[h)6Oo;bcdg/0làqp.rL-,=+k5Rxé050N0r0z0n0B0R0b0k0M0R0n0b0b0!010z0B0U010406050b0f0q0q0n0W0j040o0J0R0f0~0J0l0k020n0q0U0K0k0(0r180W0T0f0r0b050P1517191b130U041z1G051J0P1J1L1G130N0B0h0?0^0`0|0F0B0O0F0R1Z0F0z11050.0L0R0r1U0_0{011Y1!1$1!0z1,1.1*0z0L0J0N1b1+0W1H0z0F0?1e0b0U0n0l0|0u011:1W010g0:0r0l1m0r1*2b2d2i1=2l1.2o0q2q040a0k0t0W0J0U0J0b0B1h1j0,290W0W0r0M2L1z2s0l1H0P272X0z2524260N2u0|1$0l2n2I1*1R1T0@1;2+0B2-0l211S1*0U2Q1H2V2X32142c1j2?2j2{0W180R110p2U3612352t381=3a3c110u3g2d3i2V2*013n0n3d040c3r2W133u3l0|3x3z0v3C3t363v3I110%3L3E3N3G3w0J3b3y110H3S3j371V3m3X3o040m3$3F3)3H3+3Z040e3L1I301z2;2!0N2(3v0M212A0+1S1H2 0r313h3`430,4b3k3;010$110,0g3`3:2@010A110k4o3U4i0l0g4l0B0n0O1i3y0r0d0L0_4v4h4q10040s4K3(4q0l112R1Y1v0B0r0W4Q3v4N0Z3L4u4p39110B4#3V4%4)3%3O110y4/4i4N0G0x3S0k504*4w4S110.0:1.4=4+1=0J110!5953390L112x4`4M114P1A4c5a3H4U0M4W0f4Y4!5p3s4?4:110G4 515B4x112Q150R0.0z5f4L2j5c045e5z2W525Q1=0q0B110Q5F505H4q4k040A1Y585V045X4R4,044.5;5?3v5S025M0K5P5@3m550/0R5:325|3V0J4s042d0N624@044_5{5*5R115 0z616l5r3w65570r5l2j4N4~5;06516E6a5I045K0f5M0n5O6s5g5b110#5U696m64044V0B4X4Z6y1=4N0E6$5s5_6*014N0C6)5;6V6+6k346t6/5(6F6?6u6,6O5Y0|5S6S6h3V5!3e6|6E6~4T6j764i746T3h6G4q78043f6C7b6t5,2Q0z0f0W0l7f546I1x6K5N3$0P4e4a3{7H0P3~1z0z407M2$2Y20222!0n1-7J3~1F4g630|2Q0q0d0g0n0$4G0F0c111r1t1v1x0k6B341M3i1G0i0R0k1x0z0k0n0f0`0B0k2H867W0k0N001g0:0B0b4Z0k0B0M870f2-0k200f0@1/057G3v1@1#1%1)7!3v5,0g3X3`7F44040V130L250X000B0N0*1/818c1/1v2d0~2l8j1.0=8S0U0^0M1s2n0z0=1.0k0R1i0O8c8e8p1R4C4E1.0V2D190.0l822N6~192K0F180z0r0)11090s0s0B0Z0y0G095E5{2H7v0k8o1/8|4D2o8;014I0b010Z0k1i880r1g6B1P056K3i1$040D1x8,0l0N2Q8_84881f0=970W999b9d9f0s56670r0Y0B9n4)1_2-0b9D2n291n93820^8=1Z8p9`437v0b0V1z9O139O0o9u0*8*0n8,0W0k0S8c2F2K9u009X8*857k2j98279(9e049g9,1.0Y0y9;5{438?0l9@a70Pa9059O0w008V8;5!0l0B0q168W0?7@0,0f0)0k0h4Fa50k4Xa)0n8c1i2-ai8;0h0W0/0k2{0q8N9uadaf8,2z940=892J7W0=0b2dba3X0~ai2N0R000*5u6Z5w4ZaLaN9O0I1j2c0W958u6tav9a6M9)az9h9j9laF699`0,0b9S0N8Za)4Z8:a:9U0JanaZ9#9%bBay9g0$bH7j0*0.0U1x9D0N1i0M8=7@433Xb.aJ8T0=ak0h0*9$8#ai0b1i950f0k0z0jb+at1=bzax9*9i0#0$9kcg9m9o32bp0B3i0P9M7Zbs9E0L0~8.838?0W8:1/8w151SbO9J3i2;8x1%1_1(2~3|7`347G8C3V5,4m6-6d4u6=6t4y4A8}9x4G9A6-4N5o6_6P6+6Y6!5yc/726.114(717#6 5`c^c~4;c}6i6^5qc:c`044}6|7c6v9-7y6n5Tdg3m5i045kc!d8c-6-7dc=bnc@d7c_4|dcc#110l0d0,b28-b5dj735ddI3wdlaUc,5ndrde68dwc~5S0YdR70d14$c{dL7daB6xdoc_dWdYd65A6`5Ddzd87s0-7v7xd43V0ldl1BdP4Od%5t5v5xe16;d!d}4-6-74dY0$e16:d.ec6ReeegdL8E8Gd|6Hefeq4q6c4-d{6Uc#dla`0l0Od*e94{dQd+c~7ddCdE8+dG8/e1cl7j6~dy6C1zcS7I2X7Y3}0-660b04.
Fonction disposition_valide

Écrire la fonction disposition_valide qui prend en paramètre une liste echiquier et renvoie le booléen répondant à la question « la disposition satisfait-elle le problème des \(N\) dames ? ».

Toutes les fonctions précédentes ont été importées, dans leur version corrigée, dans les éditeurs ci-dessous. Vous pouvez directement les utiliser.

Aide (1)

On pourra (mais ce n'est pas une obligation) effectuer les vérifications illustrées par les figures suivantes :

Lignes Colonnes

Diagonales NE Diagonale SE

Aide (2)

Ne pas oublier que le nombre total de dames doit être de \(N\) également.

Cela peut être vérifié en ajoutant une nouvelle partie à l'implantation, ou bien il est possible de faire cette vérification en utilisant des conditions appropriées dans le code utilisant les 4 fonctions : ligne, colonne, diagonale_haut et diagonale_bas.

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

.128013s3_8èufvIy n7aêS1me(P24C:jtwiD[hE)6Oo;bcdg/T0làqAp!.rLF-,=Nzk95Rxé050P0t0B0o0D0U0b0l0O0U0o0b0b0*010B0D0Y010406050b0g0s0s0o0#0k040q0L0U0g160L0m0l020o0s0Y0M0l0:0t1g0#0W0g0t0b050R1d1f1h1j1b0Y041H1O051R0R1R1T1O1b0P0D0i0~1012140G0D0Q0G0U1+0G0B19050_0N0U0t1$1113011*1,1.1,0B1@1_1=0B0N0L0P1j1?0#1P0B0G0~1m0b0Y0o0m140w011{1(010h0{0t0m1u0t1=2j2l2q1}2t1_2w0s2y040a0l0v0#0L0Y0L0b0D1p1r0@2h0#0#0t0O2T1H2A0m1P0R2f2)0B2d2c2e0P2C141.0m2v2Q1=1Z1#0 1|2?0D2^0m291!1=0Y2Y1P2%2)3a1c2k1r2~2r330#1g0U190l0r2$3e1a3d2B3g1}3i3k3m0w3p2l3r2%2=013w0o3l040l0c3A2(1b3D3u143G3I0l0x3M3C3e3E3S3m0/3W3O3Y3Q3F0L3j3H3m0J3%3s3f1%3v3,3x3J0n3;3P3@3R3_3.3J0e3}3)3 3+3-3T0.453t473!040r0T4c3?2 483`0r3o1I3q3(4d4l4f0r3z4q3B4s4k3h413I0r3L4y3N3=3Z4D190r3V4H3X4t4C494M3$4P4A4K4T4g3:4W4J3*4v3|4$3~4u4L4g444+464-4Z0r4b4;4R3^4Z0w4i4`4B4|3`0w4p3a4X4(4.0w4x564%4e594G5c4,4S534O5h4=5j420w4V5m4{404}4#5s515u534*3c1U381H2|2,0P2:3E0O292I0?1!1P370t393q3W055L0@5T5t010-190@0h5V5i1}0C3m5*5n3v0h5%0D2j2Q2S0D1q0d0i3H0D0@5/5!18040u625y3F192Z1*1D0D0t0#673E640I0z3%0l6n0l5d4u190m3W6p5+140L190*6u6q3h0N192F6h3*64664P6C3v6a0O6c0g6e6g6L6w016j3%066o6v5:140O0r19030l0$1F0l212^0}0^6/6.5L0U1q6;6m6o6M145$040h3,6B6V0m190-756$010L5-04317a5!0m6E040#2l0Q0t6H476J7q6r046t6U7b6j6l4W6!6!6 5#190D5)4P6#7i6F1+2^7t2r7s7x7L046b0D6d6f7P1}640)7h687704797S686X7J7E6y040Z6A7/6V0s0D4M7Z14647A567C827K68712Y0B0g0#7w3a843E0-0O190%3H0b7p7B837E717H7%3Z196_6{8l3c6V7R8x7b7)7V7X6T8A63197$7^8B787}6W190I8r3*7;7?8R477`7|7,6i19804r837C8o1987898b3q8d3*8f8h8j8w4r6Z6~6V6(6*6,6.1Z0o0Q1q3H6.1~0o1o016}6n8*72748K7T0D8V4l7d7G8.3B8:4e7k7m0m7o8N8z5U7_7{4g9v8I9j3h6s9B046k9b8)6V8p7I8c7E7)91932w1_0d0G980B9G6K8G7(6O6Q6S9G8J9O767G9*9D1}8X044 9#8!9H9:6x19020Q0B0M9{019=559x7y8#9J8(9d8,8aa28=048i0|8^4z7D9L19738F8/9P190Aa29l7f9n2(9p4u9r7naj2(7E9w3B7Ea49/9g9$7vau190(a2aJ8Z6I8P8$ak8nam7f9Naq9-049R949U9W1o9Z8N8C6P7W6R7YaT7r9CaL8saNa{8SaPaR9za5aH8ya`9,8L04ata^4l7.b75!7;9~a0b18Y9^aU04aW3N8(al7b860^8-ae8gag8@6Ybr5!8}046+6-0}a)9T960N119a8m9caZaoa27)9ia~47av7gbVaA8+aCa.bb2r9=9@a68H049+a$b8ax3J7:b0bZb)b29G9IbO9Kbs7Ga#9oara(0D92a*0t0dbL1Gb(7!199!b,aM8Da?apb4a7b.bS9.cd7~b6b:5!b*b|aO04bha1b_9;b{cr8Obna9aYc07lbuadcC70bxah8k9J9dbRcO69b9au7ebYbe7(aB9taD5Z7-cf8NaSbla_cocW7)b=az2r7;aQcWc/ch9_b}81cJ5!9Mcpc5c7bJca11b%c:7ucj9)cF7#bj9?aKc$a|badd7Q8PcycAdjb3aEb5cHb~aaaZacc^8ocQbz4W8`bPcKdCbw190S0#1E3;0R5X5S1Q5E0R5G1H0B5IdZ2.2*282a2,0o1^dUdX5P1Nc+3E2Y0s0d0h0o0-c90G0c191z1B1D6.bo2)1X1S040j0U0l0Y0t1o0l0p2-1`310B0=2Y122l0B0l2Vd@1he30#0l1D0098ec0#0D0;er1`e30Ue30}2Oem0o2T0}311o2u0b0)0l0{0l1Feq2P120Dd-er000=0i2S6f0~6f0_316.2Y0P1q0P2l0O902l0}1_2h2V2V100l730m2!5{1r5W5Mc55^2R2T5}5 61dSfb0!1Q3r1O0H1r0t0h0h0^eUeW0k0l0oeF0l330s0N2Y0g8k0}2R7`10eCeleTfy0i2Z0l0J0l0b2-0g2!89900g0l0B0ked0l7Ae72|3E1 1-1/1;5Q5E5C3cdT3J8{cKcVdma 040!g2cZ9mbSc(9udhc-cF7;g2flg99He5dIb d4c1cygd9Gghbqf|gkcL88cNf 47afcRc*1bfj5YdVd.5Gd;0q0D6/001qeceeeq0o0i0L0DewfT28fX1_eP0@0m16eJeUgMedef3H3,0}2Y0Q2N0gedew0B0L1o6.gY2h0m1ZeOeX1r0g2^fUee1_eU2v6/c6g#6@g.0=1d0U0_0B0}gQfR0@eK0YeM0Bee0#0}fa2V3*f/211:2z7bav9f5Cf`gee71O0vg_ewe{10fvebd`efh37H3_5@e-g|hv5S9s7o0ugd8QgC5S0!0l0y1qe{8aephderc69S95fOg)hL7m2Sf$0#0f0}0N6e1r0iem7H6Sh?bIh`h?0Y1n0}5L89hr0bh,0S6b0ma=1A2v0BeUhNfzh48k0#eq0V0leCh90O1heX0Ug|0b1qeqao0O0=2Hhc5~1.hn0l0ueWh4g*eZ110lfxgQgSewiffGe(h31`e_2HfU89e.iI1F0(0O0D0IeU1g5@i@fzenhr2W2Y2!i-1r2PekfA0i1E6/0L0Qiq0!1bfE040K1r0L0N16isfy6`htf*fm1Y1!f.1/hzf=1Sf@5U6Lf`bB85anhEcuaMbUgw9kc!dD76g7c*aFgadpcD19b+cmb-b/c3a%b=jXggcIdJgs8qc?5?d8959V9Xdcc 4(9%a=dgjZcsc=jQ9E7fdljN3Ecwgfh)k51}bg9 cBke14c~j%c,dyd2gqabcMjTbsdFaicTbQjMj*b8dok98SjSg6b#c)j|kmkacEk2cGj)ayc4j,dxd18%d3jKa!d6ica+j{gfcgkKj~7Ua;8Ek8kA7Tktbfb^kja3kMj}c;kPb?a%kCk)c;kdkDbW9}khdugoj/gjkXdLcWgydG56gi7EbDbF90h^c80}01cbbNkpc_1}71f~l37ujPlxc`kFc?jVkJdw7bkbkNdij?a}lJaVl99dj=k@9Qlmd9cblFd=k*dfa@lNk4lA6Nk7gfk|ltkk9zj$lGb-l2k/68kgbic}k_l0bca8dzkW8e8+ksdMbykwb~cUkzkQk~g4awkG7lb$k%c.l|l;knl,kRb|gpm18;gllLk!c9lWmicFa:9(l#k`l~l%l@kLj#k.mbkBcxcWl_kil(l.bkmDdqkokVkqdBm4ldkvcS4$h*e6dWgGe8bG6pf`h#0t0u0TeU0mh)jIiKhc0=6diSis0}iBhZmgc)0um^1Hf`h8eqf38k0ge 1Zfsem2ve{ex6RiCeY1`e+jsiUn3m:0u0r0)n7m(hHfn1kgJgMeR1.8km.fbnunyjI2Pi?g|0x0lgW0 1Fg(1rfze@f60li.eV1v10g#eNf80l1~0L0sjg0f2^01eUeA37eDfAd`gT1`f3i7eC2tiF2Ti=ewg|0wecig0lg:2liUmvbHeeeE73j0f+3rne3r1.1Pf`mvj`1o0ul!0#fveU0Tm_fbfPfR7E1h2S0G1ghr0;1909iW0*0m0(0r09l?aE0Rop1bopn3osa,0Bovk,ckm@oReU0AoB5YoD0Ol-01oG2foJ0toL04oN0A0*0ToT5VoW0Doop5o!lUj_cbo(mBoxeVozo/5So;o?o^oIeNo{oMoOp1oU2)oX05oZorp99Upbowozo-ph3Jhlo=oFfMpmoKppo prp3pu0RongHgJ0UgLnW0Oe{0Yj4e{bHhfgQep926.gMjpjrhcg,jvnc1meRgM1d1!ep1`oljy2}47hyf;36jFaHjHfb9d5(8N7e6pmz5=fce!5`5|iS60jWdxk(mla|owmpkxb;cy7@lS7k6GmykNmAk0mCl}mUpslhkyclmK7T7+k@bXk;c%kHg8l$qolY4e9Fkcmq82lQc2qLknqVgidAb86:qmcnqVc4qrl+d6qNmTce9`mN198Ul{mSaXmXhC7emak}b88u0m7OqAq`3Rj k-q@lLq_qFq{pso?8TqwmQk^r1bpgqrnr5qKr77To#k$qUa/rfckmJryaMrjqpbmmn9ymIkcdsl6r09Am0q#6VhDrxo?lTj^k#a-rcrkrek+pdrGrZqYkNc{mjrsqWmErMb8rJr@qGrQl`k@klrtr3bfrwkZpymwdbr(rKqXr+qDrxj-r_qMr-aIl/mMqOl5r rqs11arurv19r6r.d7h_pzs9rCmzrEk1rdkOdjl:r|q{shrIsmrqmOl7rUo?7zl9jJm2gtbvm!8?m7lskrguqQ8ebxdOdQm%f`gE2)m+1O0+0Lhrewe3p~05pSpvp50X2t2U1`2~o1iae dTeUpV311Znk2VnSe eYnnfC0s0=nI5Y7+n90~iGnk0m00tji+fIhpi{2te3iQeqh3eVg~0DnkfQiztJ3H0lg_0l0G3,0D0,iL3Hh,0ytwfV0li g#2vh=fJifirhcn#m i?5L1veCnHe_0mhu6Vplo`o|oN0F0T0M0m0Fp24Pgepuop0Ee}6@t$0pi;0N1otbfz5LtIo4tj0=0OfMi/uciU2k2Yg#0Gi26.0uiD1riBgRgTpjtG88t,0l0Z0Ifyt3fAnNuFewupeC2Y0~9We3fy0Yedeb2Vf5f7p_i?n#q.h@nhuwhru8p5oYp56-f01`tyob0=0mi8uZuw2;f36`jhuZu}d`i{e iBp`0i2Yu?p604fpt3hPeXt#0D1v3,0_hces1Aeu1Es{jenf0=280Qp+fAe{231`u)o4iZfUezo0e-n/310}e*qlhciB0Qniew0ui hkfQo=tGg*e(9Wi4880@nVvMh9iKizh15L2Y0IvhgBs dX0^0`0|04.

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

.128013s3_8èufvIy n7aêS1me(P24C:jtwiD[hE)6Oo;bcdg/T0làqAp!.rLF-,=Nzk95Rxé050P0t0B0o0D0U0b0l0O0U0o0b0b0*010B0D0Y010406050b0g0s0s0o0#0k040q0L0U0g160L0m0l020o0s0Y0M0l0:0t1g0#0W0g0t0b050R1d1f1h1j1b0Y041H1O051R0R1R1T1O1b0P0D0i0~1012140G0D0Q0G0U1+0G0B19050_0N0U0t1$1113011*1,1.1,0B1@1_1=0B0N0L0P1j1?0#1P0B0G0~1m0b0Y0o0m140w011{1(010h0{0t0m1u0t1=2j2l2q1}2t1_2w0s2y040a0l0v0#0L0Y0L0b0D1p1r0@2h0#0#0t0O2T1H2A0m1P0R2f2)0B2d2c2e0P2C141.0m2v2Q1=1Z1#0 1|2?0D2^0m291!1=0Y2Y1P2%2)3a1c2k1r2~2r330#1g0U190l0r2$3e1a3d2B3g1}3i3k3m0w3p2l3r2%2=013w0o3l040l0c3A2(1b3D3u143G3I0l0x3M3C3e3E3S3m0/3W3O3Y3Q3F0L3j3H3m0J3%3s3f1%3v3,3x3J0n3;3P3@3R3_3.3J0e3}3)3 3+3-3T0.453t473!040r0T4c3?2 483`0r3o1I3q3(4d4l4f0r3z4q3B4s4k3h413I0r3L4y3N3=3Z4D190r3V4H3X4t4C494M3$4P4A4K4T4g3:4W4J3*4v3|4$3~4u4L4g444+464-4Z0r4b4;4R3^4Z0w4i4`4B4|3`0w4p3a4X4(4.0w4x564%4e594G5c4,4S534O5h4=5j420w4V5m4{404}4#5s515u534*3c1U381H2|2,0P2:3E0O292I0?1!1P370t393q3W055L0@5T5t010-190@0h5V5i1}0C3m5*5n3v0h5%0D2j2Q2S0D1q0d0i3H0D0@5/5!18040u625y3F192Z1*1D0D0t0#673E640I0z3%0l6n0l5d4u190m3W6p5+140L190*6u6q3h0N192F6h3*64664P6C3v6a0O6c0g6e6g6L6w016j3%066o6v5:140O0r19030l0$1F0l212^0}0^6/6.5L0U1q6;6m6o6M145$040h3,6B6V0m190-756$010L5-04317a5!0m6E040#2l0Q0t6H476J7q6r046t6U7b6j6l4W6!6!6 5#190D5)4P6#7i6F1+2^7t2r7s7x7L046b0D6d6f7P1}640)7h687704797S686X7J7E6y040Z6A7/6V0s0D4M7Z14647A567C827K68712Y0B0g0#7w3a843E0-0O190%3H0b7p7B837E717H7%3Z196_6{8l3c6V7R8x7b7)7V7X6T8A63197$7^8B787}6W190I8r3*7;7?8R477`7|7,6i19804r837C8o1987898b3q8d3*8f8h8j8w4r6Z6~6V6(6*6,6.1Z0o0Q1q3H6.1~0o1o016}6n8*72748K7T0D8V4l7d7G8.3B8:4e7k7m0m7o8N8z5U7_7{4g9v8I9j3h6s9B046k9b8)6V8p7I8c7E7)91932w1_0d0G980B9G6K8G7(6O6Q6S9G8J9O767G9*9D1}8X044 9#8!9H9:6x19020Q0B0M9{019=559x7y8#9J8(9d8,8aa28=048i0|8^4z7D9L19738F8/9P190Aa29l7f9n2(9p4u9r7naj2(7E9w3B7Ea49/9g9$7vau190(a2aJ8Z6I8P8$ak8nam7f9Naq9-049R949U9W1o9Z8N8C6P7W6R7YaT7r9CaL8saNa{8SaPaR9za5aH8ya`9,8L04ata^4l7.b75!7;9~a0b18Y9^aU04aW3N8(al7b860^8-ae8gag8@6Ybr5!8}046+6-0}a)9T960N119a8m9caZaoa27)9ia~47av7gbVaA8+aCa.bb2r9=9@a68H049+a$b8ax3J7:b0bZb)b29G9IbO9Kbs7Ga#9oara(0D92a*0t0dbL1Gb(7!199!b,aM8Da?apb4a7b.bS9.cd7~b6b:5!b*b|aO04bha1b_9;b{cr8Obna9aYc07lbuadcC70bxah8k9J9dbRcO69b9au7ebYbe7(aB9taD5Z7-cf8NaSbla_cocW7)b=az2r7;aQcWc/ch9_b}81cJ5!9Mcpc5c7bJca11b%c:7ucj9)cF7#bj9?aKc$a|badd7Q8PcycAdjb3aEb5cHb~aaaZacc^8ocQbz4W8`bPcKdCbw190S0#1E3;0R5X5S1Q5E0R5G1H0B5IdZ2.2*282a2,0o1^dUdX5P1Nc+3E2Y0s0d0h0o0-c90G0c191z1B1D6.bo2)1X1S040j0U0l0Y0t1o0l0p2-1`310B0=2Y122l0B0l2Vd@1he30#0l1D0098ec0#0D0;er1`e30Ue30}2Oem0o2T0}311o2u0b0)0l0{0l1Feq2P120Dd-er000=0i2S6f0~6f0_316.2Y0P1q0P2l0O902l0}1_2h2V2V100l730m2!5{1r5W5Mc55^2R2T5}5 61dSfb0!1Q3r1O0H1r0t0h0h0^eUeW0k0l0oeF0l330s0N2Y0g8k0}2R7`10eCeleTfy0i2Z0l0J0l0b2-0g2!89900g0l0B0ked0l7Ae72|3E1 1-1/1;5Q5E5C3cdT3J8{cKcVdma 040!g2cZ9mbSc(9udhc-cF7;g2flg99He5dIb d4c1cygd9Gghbqf|gkcL88cNf 47afcRc*1bfj5YdVd.5Gd;0q0D6/001qeceeeq0o0i0L0DewfT28fX1_eP0@0m16eJeUgMedef3H3,0}2Y0Q2N0gedew0B0L1o6.gY2h0m1ZeOeX1r0g2^fUee1_eU2v6/c6g#6@g.0=1d0U0_0B0}gQfR0@eK0YeM0Bee0#0}fa2V3*f/211:2z7bav9f5Cf`gee71O0vg_ewe{10fvebd`efh37H3_5@e-g|hv5S9s7o0ugd8QgC5S0!0l0y1qe{8aephderc69S95fOg)hL7m2Sf$0#0f0}0N6e1r0iem7H6Sh?bIh`h?0Y1n0}5L89hr0bh,0S6b0ma=1A2v0BeUhNfzh48k0#eq0V0leCh90O1heX0Ug|0b1qeqao0O0=2Hhc5~1.hn0l0ueWh4g*eZ110lfxgQgSewiffGe(h31`e_2HfU89e.iI1F0(0O0D0IeU1g5@i@fzenhr2W2Y2!i-1r2PekfA0i1E6/0L0Qiq0!1bfE040K1r0L0N16isfy6`htf*fm1Y1!f.1/hzf=1Sf@5U6Lf`bB85anhEcuaMbUgw9kc!dD76g7c*aFgadpcD19b+cmb-b/c3a%b=jXggcIdJgs8qc?5?d8959V9Xdcc 4(9%a=dgjZcsc=jQ9E7fdljN3Ecwgfh)k51}bg9 cBke14c~j%c,dyd2gqabcMjTbsdFaicTbQjMj*b8dok98SjSg6b#c)j|kmkacEk2cGj)ayc4j,dxd18%d3jKa!d6ica+j{gfcgkKj~7Ua;8Ek8kA7Tktbfb^kja3kMj}c;kPb?a%kCk)c;kdkDbW9}khdugoj/gjkXdLcWgydG56gi7EbDbF90h^c80}01cbbNkpc_1}71f~l37ujPlxc`kFc?jVkJdw7bkbkNdij?a}lJaVl99dj=k@9Qlmd9cblFd=k*dfa@lNk4lA6Nk7gfk|ltkk9zj$lGb-l2k/68kgbic}k_l0bca8dzkW8e8+ksdMbykwb~cUkzkQk~g4awkG7lb$k%c.l|l;knl,kRb|gpm18;gllLk!c9lWmicFa:9(l#k`l~l%l@kLj#k.mbkBcxcWl_kil(l.bkmDdqkokVkqdBm4ldkvcS4$h*e6dWgGe8bG6pf`h#0t0u0TeU0mh)jIiKhc0=6diSis0}iBhZmgc)0um^1Hf`h8eqf38k0ge 1Zfsem2ve{ex6RiCeY1`e+jsiUn3m:0u0r0)n7m(hHfn1kgJgMeR1.8km.fbnunyjI2Pi?g|0x0lgW0 1Fg(1rfze@f60li.eV1v10g#eNf80l1~0L0sjg0f2^01eUeA37eDfAd`gT1`f3i7eC2tiF2Ti=ewg|0wecig0lg:2liUmvbHeeeE73j0f+3rne3r1.1Pf`mvj`1o0ul!0#fveU0Tm_fbfPfR7E1h2S0G1ghr0;1909iW0*0m0(0r09l?aE0Rop1bopn3osa,0Bovk,ckm@oReU0AoB5YoD0Ol-01oG2foJ0toL04oN0A0*0ToT5VoW0Doop5o!lUj_cbo(mBoxeVozo/5So;o?o^oIeNo{oMoOp1oU2)oX05oZorp99Upbowozo-ph3Jhlo=oFfMpmoKppo prp3pu0RongHgJ0UgLnW0Oe{0Yj4e{bHhfgQep926.gMjpjrhcg,jvnc1meRgM1d1!ep1`oljy2}47hyf;36jFaHjHfb9d5(8N7e6pmz5=fce!5`5|iS60jWdxk(mla|owmpkxb;cy7@lS7k6GmykNmAk0mCl}mUpslhkyclmK7T7+k@bXk;c%kHg8l$qolY4e9Fkcmq82lQc2qLknqVgidAb86:qmcnqVc4qrl+d6qNmTce9`mN198Ul{mSaXmXhC7emak}b88u0m7OqAq`3Rj k-q@lLq_qFq{pso?8TqwmQk^r1bpgqrnr5qKr77To#k$qUa/rfckmJryaMrjqpbmmn9ymIkcdsl6r09Am0q#6VhDrxo?lTj^k#a-rcrkrek+pdrGrZqYkNc{mjrsqWmErMb8rJr@qGrQl`k@klrtr3bfrwkZpymwdbr(rKqXr+qDrxj-r_qMr-aIl/mMqOl5r rqs11arurv19r6r.d7h_pzs9rCmzrEk1rdkOdjl:r|q{shrIsmrqmOl7rUo?7zl9jJm2gtbvm!8?m7lskrguqQ8ebxdOdQm%f`gE2)m+1O0+0Lhrewe3p~05pSpvp50X2t2U1`2~o1iae dTeUpV311Znk2VnSe eYnnfC0s0=nI5Y7+n90~iGnk0m00tji+fIhpi{2te3iQeqh3eVg~0DnkfQiztJ3H0lg_0l0G3,0D0,iL3Hh,0ytwfV0li g#2vh=fJifirhcn#m i?5L1veCnHe_0mhu6Vplo`o|oN0F0T0M0m0Fp24Pgepuop0Ee}6@t$0pi;0N1otbfz5LtIo4tj0=0OfMi/uciU2k2Yg#0Gi26.0uiD1riBgRgTpjtG88t,0l0Z0Ifyt3fAnNuFewupeC2Y0~9We3fy0Yedeb2Vf5f7p_i?n#q.h@nhuwhru8p5oYp56-f01`tyob0=0mi8uZuw2;f36`jhuZu}d`i{e iBp`0i2Yu?p604fpt3hPeXt#0D1v3,0_hces1Aeu1Es{jenf0=280Qp+fAe{231`u)o4iZfUezo0e-n/310}e*qlhciB0Qniew0ui hkfQo=tGg*e(9Wi4880@nVvMh9iKizh15L2Y0IvhgBs dX0^0`0|04.