4-grille
7-POO
Carrés semi-magiques
Nous travaillons dans cet exercice sur des tableaux carrés d'entiers positifs.
Nous appelons un carré d'ordre \(n\) un tableau de \(n\) lignes et \(n\) colonnes dont chaque case contient un entier positif.
Carré semi-magique
Un carré est dit semi-magique lorsque les sommes des éléments situés sur chaque ligne, chaque
colonne sont égales.
Exemples avec trois carrés
La classe Carre
ci-après contient des méthodes qui permettent de manipuler des carrés.
La méthode __init__
permet de créer un carré sous forme d'un tableau à deux dimensions
à partir d'un p-uplet d'entiers nombres
. Nous remarquons que l'ordre du carré créé est la racine carré de la longueur du p-uplet passé en paramètre. Par exemple avec un p-uplet de taille 4, on crée un carré d'ordre 2, avec un de taille 9, un carré d'ordre 3.
La méthode affiche
permet d'afficher le carré créé.
Exemples
Python Console Session >>> nombres_3 = ( 3 , 4 , 5 , 4 , 4 , 4 , 5 , 4 , 3 )
>>> carre_3 = Carre ( nombres_3 )
>>> carre_3 . affiche ()
[3, 4, 5]
[4, 4, 4]
[5, 4, 3]
La méthode somme_ligne
prend en paramètre un entier i
et renvoie la somme des éléments de la ligne i
du carré.
Exemple
Python Console Session >>> carre_3 . somme_ligne ( 0 )
12
La méthode somme_colonne
prend en paramètre un entier j
et renvoie la somme des éléments de la colonne j
du carré.
Exemple
Python Console Session >>> carre_3_bis . somme_colonne ( 1 )
10
La méthode est_semi_magique
renvoie True
si le carré est semi magique,
False
sinon.
Exemples
Python Console Session >>> carre_2 . est_semi_magique ()
True
>>> carre_3 . est_semi_magique ()
True
>>> carre_3_bis . est_semi_magique ()
False
Question
Compléter le code ci-dessous, puis le tester sur les carrés carre_2
, carre_3
et carre_3_bis
.
.128013qnié4 p0C!ts5vb(;)AgwFah:+T2ceN,fd*67m=]3y_9u8[/1jPlo-RrSk.050I0E0l0x0d0!0m0g0D0!0x0m0m0N010l0d0h010406050m0T0M0M0x0(0Q040)0#0!0T0 0#0c0g020x0M0h0r0g0%0E190(0b0T0E0m050W16181a1c140h04051H1A1K0W1H140I0d0o0@0_0{0}0_0c0u0T0x0u0E0$0h0Q0l0y1j0g0y0d0u0y0!1:0y0l12050/0p0!0E1T0`0|011/1;1?1;0l1|1~1`0l0(1I1+0@1f0m0h0x0c0}0C01201V010H0;0E0c1n0E1`2i2k2p222s1~2v0M2x040a0g0Z0(0#0h0#0m0d1i1k0-2g0(0(0E0D2S1A2z0c1I0W1+2(2c2e2d1{0I2B1W0d0c2u2P1`1Q1S0^212=2@0c0#2{1`0h2X1I2$2(38152j1k2}2q310(190!1`0x1.2X0H0}030R0R0D320E1?300#0$0f0$0X120g0X1A0x393c133b2A3e223g3i3k3m0E3o013q3s3u3w2^3z0$2n040g0C3G3I2k3K2$2;013P0x3j1I3l0y3n3p3r3t0-3Z313#0P3D0P3+2#3J143/3N0}3=3@053_3{3V3}3Y2?3!3A0f3D0f461B483L3d1U3O0#3h3?3R3`3T3|3X3 4l413A0n3D0n4r38493c3:4d4B4h3W3~3v4H3y3A0K3D0K4N4t4a4w4c4y3Q3^3S3U4V4k3x3#0L3D0L4(3-4P3M4+3;4-4A4/4C4;4j4G4@3A0U3D0U4|2%4~4v2~514z4e4g4D4i4F4X590$0S3D0S5e3.4Q4b5j4.4f4:4E4W404Z3B0i120X0i5w5g4R525l5D5o5F4Y3#0X3C045X5N4u5P5k4T5n4=584m3B3%0X3*0W3H474}5$5z4S544U575q5-0X435Z455=3,5f5_505{5C555E4?604o5Z4q655@674*5i6a5m565p5G5W4K5Z4M6j4s5^6m3f5Q5)6q5U5r0X4#5Z4%6x4O686n6C5|5*5~6s3A0X4_5Z4{6L4)5y696P6b5}6r5V6U5b5Z5d6Z6z6#6O5(6Q6E6e4I3B5t5Z5v6:6l6=6B6@6(6R6*5r0C5J04795#6A4x746p6d5,6{0C5Y7l7d727f5B7h5T6`5H0C3%7w7o4 6?7r5S5+5 7k620C645?6y717A737C6c7t7j7v6g0C6i7K6M7e4,7g7D6S6+3$6u0C6w7X6!7N7q53756_7S3#0C6I7_7z5h7O7;7s7E6T3$6W0C6Y7-6;7/7!7P6)6F5-0C6-8f7|5%8b768d7k6}0C6 877M7}7:5R7Q817(0P7a8z8i5`6%807%5r0P5Y8I8C6$7#8w8G5-0P3%8R8L7B7 7$778Q620P7J665x895A8W8O8Y6{0P6g8/8U7~8v8c7u426u0P7,8%1L361A2{2+0I2e2:5z4W2`1R1I350E373J6k1I4W9e2A0d0I0}3r2$5W3R9l9n8-5H3C0g2F0E9t8m9v1`6j7Z010*0c120H2M0M9g6N2q0v3D9N9F0c9I04191+9S7p0}9Q3(9Z8)9H120d1o4y0l9g0g9O3O120m0b0(9/7L3K9|5$9s019o3c7^9r9ma19ua49x2w9A8_3A3%3+149~3/a0a22k42a5ac7@3A43aa2Gap7F5H62469F0*123N9(8t9#9Rai9!3;0D120j1a2XaE3:11040z9gah3aaja6al0c3#6g5Caka84n2o9yav82a%650ga=9;aA120-0HaQ5z9$9;aI8)0H0M123r2?2R3ra|50aS0qb95i0paS0m3va{b0aF01aS0G9:9=4c12310M0p2X1zbkaR120saU9|aW9faY9t9p4Jaoa79B3#4Kat9zbLad0$6u3+a?bWa@aJbf9@bibd2q0#120+b%9?044y0IaP9|bY8)b)040Nbp9T0p9+0c9{aXaJbbb,br049^9`c4bm12bcby5`b}042Ec9c3cd69bs0#bubwcibA0s0saVaQa)bI0$6Ia(aZa*cya,abbRaqcD2(3HbXa?bq01b!c6b$ck5ib^b+cS3f12290E0x0Tb{aJb^b`b=cNaS0V0Vc99Vbtbv1ycq04c/cWb-0Yc%b@120Ac~bl9V0dc9b^0Jc9cPbh0!bjc1c 04cVded312b/b;dibz040Od23:aB040H4ydr5`12c}c+9F0#9$2?dx69cf0(2k1$c^ccdn5zdacRdO50cUc:dk0(b:0Ec^0sdqdBaJdtdv0(dG6n9+d,b(dE0cd/3OdIdKdZc{0}cjdSbebgdRbFc(b*dVb.dXdme28)aSd#cubycwa33A6WcAa.7(4_bPek5rei65bE3-9 cBcx6-ejcGaw3#5benez82exa;cMa^04a`c9a~c:0H120x0H2s0D0yd`d~2qd}e9bldQdcd!bC6Meeeveg5sbK8P6{5teDe:5H6}azaJa~cLa eX220m0I1202030P0S0rf4f6f8f5f70teS0deU1 0T3daO0ef9f7fnfbfaeddnefam6U7aeye@5W5Je?cC5L9DcKe}cNd)dwd%8)9V262@d?0}dDb~fQcOe0e%d{01dUfY9VcZc#c^e)4te+bHe-5Xe/fD9wa-eE7(f/cJ3(e}bWcN0ccf352?c0e!dodNg4dycg1:fPfYebfsg4fua#6Uaf3la)bMgicEauf@6Gafercve,fv3BaygkcBgmgxgobQfz6UayeHa=fIa_3TeMaHe 4cePc6cn2G0RfOeWg7bacbd9fWddgY5ibnfUd4e(geetbGa7cx0Xa%gzeo6fgDg_6{g?fF9jble|cLc9f1f3fcfqfoh7aN0!0D0T1~0g0_0g0mgT1 0-0?0o3?0E0T0(0?2UhhgW0g0dfphzh7g.2%euf-gw0XbUg^gq60bOf?gF3BbUgIbXf~9@hkfUc)fU0M0d125MbDguhFgh3BczhJhO6Hg{hKg}czhRf}eJd*g+dzhWd;g+d^1YgXg/c2g!fYe$g%i3dfdhg(cXe6dYg-h%f,g;f.eih-fDemhNing f|h^aJ9Vhj18i22%b?blhXfLdjgSixhWd0fUi7d6e4f#cY0x1}c!c$gc12c`gP3;d.iTdpiVicc|c^d$e*ftgvh*0XeximgBi.h:h.eGfGh3eJ2X0lhrd=iD4RhUiGihi+h)5We_i:bS0Xe=ipi;e_gtiia!7^fxj9cH79i?cCjnf`it9)gLi8hD9FeNf#gRiwgU3t0!1jgbiWeZi9e#g$c^boj0g8dAjHbAf*5^jh0Rcx7lf:gBjYfCj!5Ye`8)h2hSfYh504hAfafphbhdhfhhjBhl1y0gho1~hrht1 hhjDjF1 0Yj:h9frj4gfi,7^gjhxgAbS7wjoj!gsi_hS9Tj22GiHb_hYh!04h$i*kcj6aegykgg|7vasjdkigHknjsblfJd+jOcl04d5kPcTh~kT3fi0dLiZg6jJ3:iKfYf!iW9Vdliyh0dobBhCk/gg7^g@kDh;7Tkkkia:kKfHkpiFkrkW22iC38iAj1l3k.l95zb^d1l50}k(iWk*i$c5f%iSjRc_e5kSlq0Oi#k$jPi(k=hEijgw7+jZkihMcFhOlEjrl1d(12i|i~h{lblAg:jiaeh,k`lJ4#j$kih?3Hesjw4Qk@aeillYjpiolIl:ireIlNeKgMfYjyk+gR1y0ljW1t0d0R190u0d1wk.c,i5iWljlmca04k;kbk$l,3$i/l/j!eCkHjmi^f{i`iukq0E3X18fjlccNl73Jld50melxdTiMk+mxgVgama9FjIl*8)hZh#d!lTl+kdaej8mokijcl=j!jfl0gJh_fKl8hTkRh}fTlh3;kYmQi404k#mTjKb#fXlkmLmfk,e7m|eajSmY9km!0$8zlFcHngl#nifxh@lMjtkRjv9%9FmIn03:llmJd-lbmO0ujGmfmSk/g8ltnEbAks0kc*m;l2j`mz0MmBf)nc1kml8InheAarf=m*bSnYlLiskol_lP0(i nOd(aL040w3?bhnVl/cx8RnZ82n~nkn!nfkmmun,nph`m_9VjQmFmDkVn;fMm{dMg#n2nrmDn5nyidk-igkymkne8#n 8ykGn%nikJo6f|gKnqiJjLk)oonvg8nQk49Un9blnFm=ocop22gdm_b^nMlRoNgTnTiZjT67jVn}k_gln(4oo2o0k oDn+mG5idtn.n:odaAn?n^0=lco_a=l)k?ovhIm%nilHgphO8|l@mvnpo}fU0*n?0B0(1xlA0W9i8 9d919a1A0l94py2.2)iP1~2(921GnG502X0M0R0H0x0*my0y621s1um90?o*2(1O0,1R3:0x0I0M1j2R0d1-2?dv121Gp%p)p+2S0$0 0l2an@1j2Zp-1k059i1C1Apt1N3K1H0F0#0T0?c#0(q10?0h0T0g1h0;0dbh0(hg3ldv0cq01-cO0T0;0l0$2?2oq33uc617q6qF0g2U0Z1*1,i p!1K7s1^0l0h0m0z0W0W0I0#0D0m0+1)1+1j0+4y0u0W9K0W0P0W1?bv1Eq/fjqv0cq%1^0M0!031C9@qH6xp!qZ9a1P0.0:0=0g2N2ufR0h2up;15171u1c0%0e2Oq}j|3?0l0En/0x0 0oc@1Brm1Eq9040t1h2X0g2O0{0d0pqn0l0eqK1 0(rq1jbhbxp!2{3:1X1Z1#1%q)qO1.1@261^2yaJ2D2u2w12qMq*o~et9ch08~ptlUjWa30n3Box4@s4n$pea8s82o8,bMscf`oFeLl|gOn6jAhknBnDoVd|mcmfnupJg)12jNogiEnIsrmgmiotnvk@s4kfo/7@sJk}sM3$sd8^sPo5cNj+h4f2j/h7k80rj?hek23lj`rShnhpk0rSqrhgmPhxs#fpn{sInfs63!s4ozsasfs|8Xt2oCkLlaj`ksnNo iucfq5k!okcQn3mfnxoLkQloc^lwtmnzsCtreY120OctmjsHkds4o.khsPo;mreAtCsR8l8_tJn*o`2qo|0.lQoamxs`tBbTs}41s4pdgEsbtYt4tMtYf`p7lBjis4lXsLtIcDo=5Vt;tK7?t@l%swtQjugN9%jzmNoOsqtuoWstsDsvmb04sztcfMh|iZsFf+j5lCa#s4l.t?6suqsOt@emset+eq5?jx3DcMj-sYs^ha3?j@s)hihks,j}s.hss:k31fk50gk7s!uYkasGp8j6s4mnust`0$mqoAt@eCuysPmtt7oMhVoY12tb3-tPd@r49Mk!tqu022uddCoKv4lnpEiRtplsi(v3oTlzm_kNlRttnsc(ofuhd3oitgi6oIn4dge5oruktxtWu%e.4/u*s7e.t_vHe=u;t@m,o6oFpktUlStz2(q7r}pw0o9}0-0/0;0mv!rbv%04.
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)