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.
.128013C;=wSd*-gnh.F+uerv6,é9tk5b]jl[f:431(AaRp/)omq 7!2iyc8s_PNT0050g0q0x0M0Y0D0$0U0!0D0M0$0$0d010x0Y0O010406050$0p0S0S0M0r0Z040f0R0D0p0 0R0k0U020M0S0O0c0U0N0q190r0T0p0q0$050P16181a1c140O04051H1A1K0P1H140g0Y0s0@0_0{0}0_0k0j0p0M0j0q0i0O0Z0x0l1j0U0l0Y0j0l0D1:0l0x12050/0A0D0q1T0`0|011/1;1?1;0x1|1~1`0x0r1I1+0@1f0$0O0M0k0}0X01201V010F0;0q0k1n0q1`2i2k2p222s1~2v0S2x040a0U0(0r0R0O0R0$0Y1i1k0-2g0r0r0q0!2S1A2z0k1I0P1+2(2c2e2d1{0g2B1W0Y0k2u2P1`1Q1S0^212=2@0k0R2{1`0O2X1I2$2(38152j1k2}2q310r190D1`0M1.2X0F0}030%0%0!320q1?300R0i0H0i0J120U0J1A0M393c133b2A3e223g3i3k3m0q3o013q3s3u3w2^3z0i2n040U0X3G3I2k3K2$2;013P0M3j1I3l0l3n3p3r3t0-3Z313#0I3D0I3+2#3J143/3N0}3=3@053_3{3V3}3Y2?3!3A0H3D0H461B483L3d1U3O0R3h3?3R3`3T3|3X3 4l413A0z3D0z4r38493c3:4d4B4h3W3~3v4H3y3A0t3D0t4N4t4a4w4c4y3Q3^3S3U4V4k3x3#0V3D0V4(3-4P3M4+3;4-4A4/4C4;4j4G4@3A0#3D0#4|2%4~4v2~514z4e4g4D4i4F4X590i0w3D0w5e3.4Q4b5j4.4f4:4E4W404Z3B0+120J0+5w5g4R525l5D5o5F4Y3#0J3C045X5N4u5P5k4T5n4=584m3B3%0J3*0P3H474}5$5z4S544U575q5-0J435Z455=3,5f5_505{5C555E4?604o5Z4q655@674*5i6a5m565p5G5W4K5Z4M6j4s5^6m3f5Q5)6q5U5r0J4#5Z4%6x4O686n6C5|5*5~6s3A0J4_5Z4{6L4)5y696P6b5}6r5V6U5b5Z5d6Z6z6#6O5(6Q6E6e4I3B5t5Z5v6:6l6=6B6@6(6R6*5r0X5J04795#6A4x746p6d5,6{0X5Y7l7d727f5B7h5T6`5H0X3%7w7o4 6?7r5S5+5 7k620X645?6y717A737C6c7t7j7v6g0X6i7K6M7e4,7g7D6S6+3$6u0X6w7X6!7N7q53756_7S3#0X6I7_7z5h7O7;7s7E6T3$6W0X6Y7-6;7/7!7P6)6F5-0X6-8f7|5%8b768d7k6}0X6 877M7}7:5R7Q817(0I7a8z8i5`6%807%5r0I5Y8I8C6$7#8w8G5-0I3%8R8L7B7 7$778Q620I7J665x895A8W8O8Y6{0I6g8/8U7~8v8c7u426u0I7,8%1L361A2{2+0g2e2:5z4W2`1R1I350q373J6k1I4W9e2A0Y0g0}3r2$5W3R9l9n8-5H3C0U2F0q9t8m9v1`6j7Z010y0k120F2M0S9g6N2q0e3D9N9F0k9I04191+9S7p0}9Q3(9Z8)9H120Y1o4y0x9g0U9O3O120$0T0r9/7L3K9|5$9s019o3c7^9r9ma19ua49x2w9A8_3A3%3+149~3/a0a22k42a5ac7@3A43aa2Gap7F5H62469F0y123N9(8t9#9Rai9!3;0!120b1a2XaE3:11040G9gah3aaja6al0k3#6g5Caka84n2o9yav82a%650Ua=9;aA120-0FaQ5z9$9;aI8)0F0S123r2?2R3ra|50aS0Kb95i0AaS0$3va{b0aF01aS0u9:9=4c12310S0A2X1zbkaR120QaU9|aW9faY9t9p4Jaoa79B3#4Kat9zbLad0i6u3+a?bWa@aJbf9@bibd2q0R120mb%9?044y0gaP9|bY8)b)040dbp9T0A9+0k9{aXaJbbb,br049^9`c4bm12bcby5`b}042Ec9c3cd69bs0RbubwcibA0Q0QaVaQa)bI0i6Ia(aZa*cya,abbRaqcD2(3HbXa?bq01b!c6b$ck5ib^b+cS3f12290q0M0pb{aJb^b`b=cNaS0E0Ec99Vbtbv1ycq04c/cWb-0Cc%b@120oc~bl9V0Yc9b^0hc9cPbh0Dbjc1c 04cVded312b/b;dibz040Bd23:aB040F4ydr5`12c}c+9F0R9$2?dx69cf0r2k1$c^ccdn5zdacRdO50cUc:dk0rb:0qc^0QdqdBaJdtdv0rdG6n9+d,b(dE0kd/3OdIdKdZc{0}cjdSbebgdRbFc(b*dVb.dXdme28)aSd#cubycwa33A6WcAa.7(4_bPek5rei65bE3-9 cBcx6-ejcGaw3#5benez82exa;cMa^04a`c9a~c:0F120M0F2s0!0ld`d~2qd}e9bldQdcd!bC6Meeeveg5sbK8P6{5teDe:5H6}azaJa~cLa eX220$0g1202030I0w0cf4f6f8f5f70LeS0YeU1 0p3daO0vf9f7fnfbfaeddnefam6U7aeye@5W5Je?cC5L9DcKe}cNd)dwd%8)9V262@d?0}dDb~fQcOe0e%d{01dUfY9VcZc#c^e)4te+bHe-5Xe/fD9wa-eE7(f/cJ3(e}bWcN0kcf352?c0e!dodNg4dycg1:fPfYebfsg4fua#6Uaf3la)bMgicEauf@6Gafercve,fv3BaygkcBgmgxgobQfz6UayeHa=fIa_3TeMaHe 4cePc6cn2G0%fOeWg7bacbd9fWddgY5ibnfUd4e(geetbGa7cx0Ja%gzeo6fgDg_6{g?fF9jble|cLc9f1f3fcfqfoh7aN0D0!0p1~0U0_0U0$gT1 0-0?0s3?0q0p0r0?2UhhgW0U0Yfphzh7g.2%euf-gw0JbUg^gq60bOf?gF3BbUgIbXf~9@hkfUc)fU0S0Y125MbDguhFgh3BczhJhO6Hg{hKg}czhRf}eJd*g+dzhWd;g+d^1YgXg/c2g!fYe$g%i3dfdhg(cXe6dYg-h%f,g;f.eih-fDemhNing f|h^aJ9Vhj18i22%b?blhXfLdjgSixhWd0fUi7d6e4f#cY0M1}c!c$gc12c`gP3;d.iTdpiVicc|c^d$e*ftgvh*0JeximgBi.h:h.eGfGh3eJ2X0xhrd=iD4RhUiGihi+h)5We_i:bS0Je=ipi;e_gtiia!7^fxj9cH79i?cCjnf`it9)gLi8hD9FeNf#gRiwgU3t0D1jgbiWeZi9e#g$c^boj0g8dAjHbAf*5^jh0%cx7lf:gBjYfCj!5Ye`8)h2hSfYh504hAfafphbhdhfhhjBhl1y0Uho1~hrht1 hhjDjF1 0Cj: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_e5kSlq0Bi#k$jPi(k=hEijgw7+jZkihMcFhOlEjrl1d(12i|i~h{lblAg:jiaeh,k`lJ4#j$kih?3Hesjw4Qk@aeillYjpiolIl:ireIlNeKgMfYjyk+gR1y0xjW1t0Y0%190j0Y1wk.c,i5iWljlmca04k;kbk$l,3$i/l/j!eCkHjmi^f{i`iukq0q3X18fjlccNl73Jld50melxdTiMk+mxgVgama9FjIl*8)hZh#d!lTl+kdaej8mokijcl=j!jfl0gJh_fKl8hTkRh}fTlh3;kYmQi404k#mTjKb#fXlkmLmfk,e7m|eajSmY9km!0i8zlFcHngl#nifxh@lMjtkRjv9%9FmIn03:llmJd-lbmO0jjGmfmSk/g8ltnEbAks0Wc*m;l2j`mz0SmBf)nc1kml8InheAarf=m*bSnYlLiskol_lP0ri nOd(aL040n3?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}fU0yn?0*0r1xlA0P9i8 9d919a1A0x94py2.2)iP1~2(921GnG502X0S0%0F0M0ymy0l621s1um90?o*2(1O0,1R3:0M0g0S1j2R0Y1-2?dv121Gp%p)p+2S0i0 0x2an@1j2Zp-1k059i1C1Apt1N3K1H0)0R0p0?c#0rq10?0O0p0U1h0;0Ybh0rhg3ldv0kq01-cO0p0;0x0i2?2oq33uc617q6qF0U2U0(1*1,i p!1K7s1^0x0O0$0G0P0P0g0R0!0$0m1)1+1j0m4y0j0P9K0P0I0P1?bv1Eq/fjqv0kq%1^0S0D031C9@qH6xp!qZ9a1P0.0:0=0U2N2ufR0O2up;15171u1c0N0v2Oq}j|3?0x0qn/0M0 0sc@1Brm1Eq9040L1h2X0U2O0{0Y0Aqn0x0vqK1 0rrq1jbhbxp!2{3:1X1Z1#1%q)qO1.1@261^2yaJ2D2u2w12qMq*o~et9ch08~ptlUjWa30z3Box4@s4n$pea8s82o8,bMscf`oFeLl|gOn6jAhknBnDoVd|mcmfnupJg)12jNogiEnIsrmgmiotnvk@s4kfo/7@sJk}sM3$sd8^sPo5cNj+h4f2j/h7k80cj?hek23lj`rShnhpk0rSqrhgmPhxs#fpn{sInfs63!s4ozsasfs|8Xt2oCkLlaj`ksnNo iucfq5k!okcQn3mfnxoLkQloc^lwtmnzsCtreY120BctmjsHkds4o.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:k31fk50Uk7s!uYkasGp8j6s4mnust`0imqoAt@eCuysPmtt7oMhVoY12tb3-tPd@r49Mk!tqu022uddCoKv4lnpEiRtplsi(v3oTlzm_kNlRttnsc(ofuhd3oitgi6oIn4dge5oruktxtWu%e.4/u*s7e.t_vHe=u;t@m,o6oFpktUlStz2(q7r}pw0s9}0-0/0;0$v!rbv%04.
# Tests(insensible Ă la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)