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.
.1280137*h15-js3:/SC nA!é0e.]RT2;cfaow4)(+,_u[qb=v8imFtPN69pdrgylk050$0u0W0D0T0*0i0o0B0*0D0i0i0Q010W0T0#010406050i0M0U0U0D0%0)040m0E0*0M0 0E0p0o020D0U0#0A0o0x0u190%0O0M0u0i050l16181a1c140#04051H1A1K0l1H140$0T0R0@0_0{0}0_0p0(0M0D0(0u0g0#0)0W0d1j0o0d0T0(0d0*1:0d0W12050/0P0*0u1T0`0|011/1;1?1;0W1|1~1`0W0%1I1+0@1f0i0#0D0p0}0z01201V010C0;0u0p1n0u1`2i2k2p222s1~2v0U2x040a0o0X0%0E0#0E0i0T1i1k0-2g0%0%0u0B2S1A2z0p1I0l1+2(2c2e2d1{0$2B1W0T0p2u2P1`1Q1S0^212=2@0p0E2{1`0#2X1I2$2(38152j1k2}2q310%190*1`0D1.2X0C0}030L0L0B320u1?300E0g0G0g0e120o0e1A0D393c133b2A3e223g3i3k3m0u3o013q3s3u3w2^3z0g2n040o0z3G3I2k3K2$2;013P0D3j1I3l0d3n3p3r3t0-3Z313#0j3D0j3+2#3J143/3N0}3=3@053_3{3V3}3Y2?3!3A0G3D0G461B483L3d1U3O0E3h3?3R3`3T3|3X3 4l413A0f3D0f4r38493c3:4d4B4h3W3~3v4H3y3A0Z3D0Z4N4t4a4w4c4y3Q3^3S3U4V4k3x3#0b3D0b4(3-4P3M4+3;4-4A4/4C4;4j4G4@3A0S3D0S4|2%4~4v2~514z4e4g4D4i4F4X590g0!3D0!5e3.4Q4b5j4.4f4:4E4W404Z3B0t120e0t5w5g4R525l5D5o5F4Y3#0e3C045X5N4u5P5k4T5n4=584m3B3%0e3*0l3H474}5$5z4S544U575q5-0e435Z455=3,5f5_505{5C555E4?604o5Z4q655@674*5i6a5m565p5G5W4K5Z4M6j4s5^6m3f5Q5)6q5U5r0e4#5Z4%6x4O686n6C5|5*5~6s3A0e4_5Z4{6L4)5y696P6b5}6r5V6U5b5Z5d6Z6z6#6O5(6Q6E6e4I3B5t5Z5v6:6l6=6B6@6(6R6*5r0z5J04795#6A4x746p6d5,6{0z5Y7l7d727f5B7h5T6`5H0z3%7w7o4 6?7r5S5+5 7k620z645?6y717A737C6c7t7j7v6g0z6i7K6M7e4,7g7D6S6+3$6u0z6w7X6!7N7q53756_7S3#0z6I7_7z5h7O7;7s7E6T3$6W0z6Y7-6;7/7!7P6)6F5-0z6-8f7|5%8b768d7k6}0z6 877M7}7:5R7Q817(0j7a8z8i5`6%807%5r0j5Y8I8C6$7#8w8G5-0j3%8R8L7B7 7$778Q620j7J665x895A8W8O8Y6{0j6g8/8U7~8v8c7u426u0j7,8%1L361A2{2+0$2e2:5z4W2`1R1I350u373J6k1I4W9e2A0T0$0}3r2$5W3R9l9n8-5H3C0o2F0u9t8m9v1`6j7Z010+0p120C2M0U9g6N2q0F3D9N9F0p9I04191+9S7p0}9Q3(9Z8)9H120T1o4y0W9g0o9O3O120i0O0%9/7L3K9|5$9s019o3c7^9r9ma19ua49x2w9A8_3A3%3+149~3/a0a22k42a5ac7@3A43aa2Gap7F5H62469F0+123N9(8t9#9Rai9!3;0B120n1a2XaE3:11040k9gah3aaja6al0p3#6g5Caka84n2o9yav82a%650oa=9;aA120-0CaQ5z9$9;aI8)0C0U123r2?2R3ra|50aS0Ib95i0PaS0i3va{b0aF01aS0K9:9=4c12310U0P2X1zbkaR120HaU9|aW9faY9t9p4Jaoa79B3#4Kat9zbLad0g6u3+a?bWa@aJbf9@bibd2q0E120vb%9?044y0$aP9|bY8)b)040Qbp9T0P9+0p9{aXaJbbb,br049^9`c4bm12bcby5`b}042Ec9c3cd69bs0EbubwcibA0H0HaVaQa)bI0g6Ia(aZa*cya,abbRaqcD2(3HbXa?bq01b!c6b$ck5ib^b+cS3f12290u0D0Mb{aJb^b`b=cNaS0N0Nc99Vbtbv1ycq04c/cWb-0hc%b@120Jc~bl9V0Tc9b^0cc9cPbh0*bjc1c 04cVded312b/b;dibz040wd23:aB040C4ydr5`12c}c+9F0E9$2?dx69cf0%2k1$c^ccdn5zdacRdO50cUc:dk0%b:0uc^0HdqdBaJdtdv0%dG6n9+d,b(dE0pd/3OdIdKdZc{0}cjdSbebgdRbFc(b*dVb.dXdme28)aSd#cubycwa33A6WcAa.7(4_bPek5rei65bE3-9 cBcx6-ejcGaw3#5benez82exa;cMa^04a`c9a~c:0C120D0C2s0B0dd`d~2qd}e9bldQdcd!bC6Meeeveg5sbK8P6{5teDe:5H6}azaJa~cLa eX220i0$1200f40qeS0TeU1 0M3daO0sf400eddnefam6U7aeye@5W5Je?cC5L9DcKe}cNd)dwd%8)9V262@d?0}dDb~fFcOe0e%d{01dUfN9VcZc#c^e)4te+bHe-5Xe/fs9wa-eE7(f!cJ3(e}bWcN0pcf352?c0e!dodNf_dycg1:fEfNebfhf_fja#6Uaf3la)bMg7cEauf)6Gafercve,fk3Bayg9cBgbgmgdbQfo6UayeHa=fxa_3TeMaHe 4cePc6cn2G0LfDeWf|bacbd9fLddgN5ibnfJd4e(g3etbGa7cx0ea%goeo6fgsg+6{g(fu9jble|cLc9f1f3f4aN0*0B0M1~0o0_0o0igI1 0-0?0R3?0u0M0%0?2Uh3gL0o0TffgZ2%eufYgl0ebUg*gf60bOf(gu3BbUgxbXf:9@h6fJc)fJ0U0T125MbDgjhpg63Bczhthy6Hg-hug/czhBf/eJd*gWdzhGd;gWd^1YgMg!c2gPfNe$gSh:dfdhgTcXe6dYgYhNfXg$fZeihTfsemhxi7g;f.h#aJ9Vh518h/2%b?blhHfAdjgHihhGd0fJh@d6e4fQcY0D1}c!c$g112c`gE3;d.iDdpiFh|c|c^d$e*figkhQ0eexi6gqiUhWhUeGfvg^eJ2X0Whdd=in4RhEiqi1iRhP5We_iWbS0ee=i9iXe_gii2a!7^fmi_cH79iZcCj7f,id9)gAh^hn9FeNfQgGiggJ3t0*1jg0iGeZh_e#gRc^boi-f}dAjrbAfV5^j10Lcx7lf#gqjIfrjK5Ye`8)g@hCfNg`04ffg}g h1h3jlh71y0oha1~hdhf1 h3jnjp1 0hhli;g4iS7^g8hjgpbS7wj8jKghi$hC9Ti/2Girb_hIhK04hMiQj^i?aegnj|g.7vasi}j~gwk3jcblfyd+jycl04d5kvcTh+kz3fh-dLiJf{jt3:iufNfPiG9Vdliig=dobBhmkRg57^g)kjhX7Tk0j~a:kqfwk5ipk7kC22im38iki.k,kQk=5zb^d1k.0}kKiGkMiMc5fSiCjBc_e5kyl60wiLkIjziOkUhoi3gl7+jJj~hwcFhylkjbk*d(12i)i+h(k@lgg#j2aehSkZlp4#jMj~hZ3Hesjg4QkWaei5lEj9i8lolSibeIlteKgBfNjikNgG1y0WjG1t0T0L190(0T1wkQc,h=iGk l2ca04kTj@kIlO3$iVlRjKeCknj6i#f-i%iek60u3X18fbk^cNk:3Jk_50l`lddTiwkNmdgKf l?9FjslM8)hJhLd!lzlNj_aei^m4j~i|lUjKi k)gyh$fzk;hDkxh*fIk}3;kEmwh;04kHmzjub#fMl0mrl{kOe7m#eajCmE9kmG0g8zllcHm|lHm~fmh!lsjdkxjf9%9Fmom)3:l1mpd-k@mu0(jql{mykRf}l9nkbAk80rc*mTk+j#mf0UmhfUm^1km18Im}eAarf%mMbSnElrick4lYlv0%i,nud(aL040V3?bhnBlRcx8RnF82n%n0nGm{k2manOn5h%mY9VjAmlmjkBnTfBm!dMgQm+n7mjm.neh}kPi0kem0m`8#n(8ykmnJm~kpn/f.gzn6itjvkLo4nbf}nwj/9Um=blnlmUn^o522g2mYb^nslxotgInziJjD67jFn$kYganK4on+n)k(ojnNmm5idtnQnSn_aAnVnX0=k^oYa=lLkVobhsmJm~lngehy8|lWmbn5o$fJ0+nV0y0%1xlg0l9i8 9d919a1A0W94pe2.2)iz1~2(921Gnm502X0U0L0C0D0+me0d621s1ul=0?oM2(1O0,1R3:0D0$0U1j2R0T1-2?dv121GpJpLpN2S0g0 0W2anW1j2ZpP1k059i1C1Ap91N3K1H0Y0E0M0?c#0%p*0?0#0M0o1h0;0Tbh0%h23ldv0pp)1-cO0M0;0W0g2?2op,3uc617p/ql0o2U0X1*1,i,pG1K7s1^0W0#0i0k0l0l0$0E0B0i0v1)1+1j0v4y0(0l9K0l0j0l1?bv1EqRfbqb0pqJ1^0U0*031C9@qn6xpGqF9a1P0.0:0=0o2N2ufG0#2upT15171u1c0x0s2Oq$j%3?0W0unR0D0 0Rc@1Br21Ep=040q1h2X0o2O0{0T0Pq30W0sqq1 0%r61jbhbxpG2{3:1X1Z1#1%qLqu1.1@261^2yaJ2D2u2w12qsqMo%et9cg=8~p9lAjGa30f3Bod4@r-nIo`a8r;2o8,bMr^f,oleLl#gDm/jkh6nhnjoBd|l^l{nappgU12jxn|ionos7l|l~o9nbkWr-j{oR7@spk$ss3$r_8^svn.cNjRg_f2jVg|3?jYj-3lj#ryh9hbj+ryq7h2mvhjj?smo;i?r-kisreAsZsus$m{sx8l8_s%nMoZh}j#k8nto(iecfp.kGo0cQm,l{ndorkwl4c^lct2nfsit7eY120wctl snj_r-oQj}svoTm7s)oTr`s-3zo}s:22o#0.lwn?mdn!sobTr/3!r-o_gtr@tD8Xr{tDf,o:lhj2r-lDs#6stSs(tVcDtLtrlJsc2qdtr iGl$s2mtous6taoCs9sjsbl@04sfs^fBh)iJslfWi=lia#r-lQtU5Vu5tXu80gemtqsveq5?jh3DcMjTsEjWsHh0sJh4h6sMj(sOhesQj.1fj:0oj=f4tBth0gm3u7r:uGuauJeCues)m9krk?s=oE12s@3-tu4cs`q.l60It6t%22t^dCoqu)l3pkiBt5l8iOu(ozlfmYktlxt9n8c(n{t|d3n~s|h?oom-dge5o7t tduEsYe.4/uItFe.oUube=uOtYmOn/olp0tzlytf2(p:r$pc0R9}0-0/0;0ivCq@vF04.
# Tests(insensible Ă la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)