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
.
.128013g[ r;)/(loF4,6b=a+5utP7e-h0TmnCki:SĂ©Nq.y1cd32!8_wvpf*9RA]js050R0y0v0r0H0j0+0d0Q0j0r0+0+0q010v0H0Z010406050+0u0D0D0r0e0O040J0k0j0u0 0k0E0d020r0D0Z0f0d0%0y190e0M0u0y0+050h16181a1c140Z04051H1A1K0h1H140R0H0Y0@0_0{0}0_0E0b0u0r0b0y0z0Z0O0v0A1j0d0A0H0b0A0j1:0A0v12050/0p0j0y1T0`0|011/1;1?1;0v1|1~1`0v0e1I1+0@1f0+0Z0r0E0}0T01201V010!0;0y0E1n0y1`2i2k2p222s1~2v0D2x040a0d0w0e0k0Z0k0+0H1i1k0-2g0e0e0y0Q2S1A2z0E1I0h1+2(2c2e2d1{0R2B1W0H0E2u2P1`1Q1S0^212=2@0E0k2{1`0Z2X1I2$2(38152j1k2}2q310e190j1`0r1.2X0!0}030W0W0Q320y1?300k0z0m0z0P120d0P1A0r393c133b2A3e223g3i3k3m0y3o013q3s3u3w2^3z0z2n040d0T3G3I2k3K2$2;013P0r3j1I3l0A3n3p3r3t0-3Z313#0S3D0S3+2#3J143/3N0}3=3@053_3{3V3}3Y2?3!3A0m3D0m461B483L3d1U3O0k3h3?3R3`3T3|3X3 4l413A0t3D0t4r38493c3:4d4B4h3W3~3v4H3y3A0o3D0o4N4t4a4w4c4y3Q3^3S3U4V4k3x3#0x3D0x4(3-4P3M4+3;4-4A4/4C4;4j4G4@3A0V3D0V4|2%4~4v2~514z4e4g4D4i4F4X590z0$3D0$5e3.4Q4b5j4.4f4:4E4W404Z3B0B120P0B5w5g4R525l5D5o5F4Y3#0P3C045X5N4u5P5k4T5n4=584m3B3%0P3*0h3H474}5$5z4S544U575q5-0P435Z455=3,5f5_505{5C555E4?604o5Z4q655@674*5i6a5m565p5G5W4K5Z4M6j4s5^6m3f5Q5)6q5U5r0P4#5Z4%6x4O686n6C5|5*5~6s3A0P4_5Z4{6L4)5y696P6b5}6r5V6U5b5Z5d6Z6z6#6O5(6Q6E6e4I3B5t5Z5v6:6l6=6B6@6(6R6*5r0T5J04795#6A4x746p6d5,6{0T5Y7l7d727f5B7h5T6`5H0T3%7w7o4 6?7r5S5+5 7k620T645?6y717A737C6c7t7j7v6g0T6i7K6M7e4,7g7D6S6+3$6u0T6w7X6!7N7q53756_7S3#0T6I7_7z5h7O7;7s7E6T3$6W0T6Y7-6;7/7!7P6)6F5-0T6-8f7|5%8b768d7k6}0T6 877M7}7:5R7Q817(0S7a8z8i5`6%807%5r0S5Y8I8C6$7#8w8G5-0S3%8R8L7B7 7$778Q620S7J665x895A8W8O8Y6{0S6g8/8U7~8v8c7u426u0S7,8%1L361A2{2+0R2e2:5z4W2`1R1I350y373J6k1I4W9e2A0H0R0}3r2$5W3R9l9n8-5H3C0d2F0y9t8m9v1`6j7Z010G0E120!2M0D9g0d6N3f9I04191+9N9P229H120H1o4y0v9V9F9R0+0M0e9%7L3K9/5$9s019o3c7^9r9m9@9u9`9x2w9A8_3A3%3+149;3/9?9^2k429{a27@3A43a02Gaf7F5H62469F0G123N9(7p4c0Q120F1a2X9g9W0}11040I9ga73aa99|ab0E3#6g5Caa9~4n2o9yal82aQ650da#9Oaq120-0!au8)0!0D123r2?2R3raC9FaF0ia^av010paF0+3va+a8a}aF0na,8t4c12310D0p2X1zb48)aF0gaH9/aJ9faL9t9p4Jae9}9B3#4Kaj9zbua30z6u3+a$bFa%a}a 12b10jb3aKa}0k120Na|8)9R4y0RaB9/bH8)bQ040qb84R0p9Z0E9.bObi12a{bhb93;bK9,b.bob5b;bTb@0Eb+042Eb 3:a`c55`bb0kbdbfc850bj0g0gaIc5aSbr0z6IaRaMaTcnaVa1bAagcs2(3HbGa$aDa~b0b2ce5ib$bSb?4R12290y0r0ub)5zb$b(bZcCaF0c0ccG3fcacc1yc!22cXc)ba040*cR50b$0sc:6n9Zc,01b$0#c`bJ04bLbNb|b#bRc`bV0ebX0yc`aF0)c@2qar040!4yde3O12c/cV9F0k0Xb,dk4cc20e2k1$dbb~cK5zc d1c`cId612bWbYb/b@bjdddoa}dgdi0edtb^040HdUdqdsdPbUdvdxdadBcfdAdL3:dDcFd*cHd5d;c#04dJd)d-5zdNcjcKcl9_3A6WcpaX7(4_bye65re465bn3-9=cqcm6-e5cvam3#5be9el82eja!cBa(04a*dU0E0!120r0!2s0Q0Ad{d3dMd,eId.cEbMdz04bkd d-e1ac3A6}ek8P6{5tepeZ5HeX9Ea}dr3(cA9Od@220+0R1202030S0$0fe^e`e|e_e{0(eD0HeF1 0u3daA0Ke}e{fbe e~eSeLeUaO6U7aeYcr5Lctakeq7(focye-cAcCdRdjd#c012262@dYe,2?dUd/eOe:0}dGfLdVcNcPePbl6Me0ehe23B5Yfmbv6U9waWfr6GfZete.eua}c112352?b{efa_eKf^f/fC1:fEfObjfgf{9kfWeV5.bte%5W2ne$fna5edckg5fj3Bao3laSf#gjfpbzg96Uaof,b!b@dgexfA4ReAd0cb2G0WfDeHg3eJ04b=d|50fJd2gIc612b7gzc9dWePeRbmggbqfX0PaQglcqgng%gpea6f9D5?9Fe,f-c`e=e@f0fefcg{az0j0Q0u1~0d0_0d0+gD1 0-0?0Y3?0y0u0e0?2Uh5gG0d0Hfdhng{g22%egg#g60PbDg)g.6{hvg-f)60bDgubFcC9*h8dY12cU38gv3:0D0H125MgZfVhtgi6Hg8fn4#gcg+cohFf.8)fydTgU69dmfFd!hNhHd%1YgHhrf_gKc~eNgPh{bPd?gMc^d_d8dKeLd}12gYfUeTgh5We4hxhChze8f(gr3Becczf-h*fBgC18h`3(cCcTeybKhJh.d=04c?iD2qgOdFi3i9h/04fQcQg012cZfO9RdXiR040)iTi4d^dni#c*12dOidfhif6,hZg+eoimfnesiqfwev2X0vhf0EiAiu2Ghq9j1kfi5WeXiiin0Pe#i?g+e)3Heei1g4hW7^flj9cr79hBinjpfuhGevgyh?9)gBh7iv3X0j1jf i(aEf`jib@iJiXgTjxf|c.gXfT4thV9}cm7li:bBjXh$jZf+g;e+3De.g^e?04hoe~fdg h1h3h5jA2G0dha0dhc1~hfhh1 h53tjD0E2@0d0*j/g}ffhUiejka4a5jngn7wjqjogei_bGhHiBivhKb%dUhQhSj3hsjVfX7IjYcwkCj#kEgtkojudQ9JfzjObUc_iH22dZdWi kRdu12dwh_ePgLiM5ijLjGc{iLgQgVd`jRkybpkAg67VkDema44okGk`3$aZkJj+9)krj2kWk+kul6hIksl6c=fIh iK04cJk*9RiPePi!k%d^iWk*dclnk-iNi%loi)iYk;4Qj6a4hwhlg*jZbxjdlHg:fvkpi{0.i~j0j_iwjhj4lFkf3$cokijZh#lJkEh(jgg!k?gi85k_82l.k}l:iplMfxa)3TeygB1y0v0Wb1hQ0W190b0H1wiwcWjIlVdClfiXicjTkel,7^ejl!kEi=cujri^lMkKkPj10y3X18f7iwhOcShLlebKd:k*fNljl4mvgGk#c`kw04hTlriblAjjmia4j8lWij7vjcmojojfmris3:h,j0lq3JmAc;fGkVkOc0h^dyiXk$luk(mdmGk,jJcLi6d9k:kdi-lX8zl/8y5Jl=nclLirm*5zdg0Hi0ix9Fk)lxfMn1mbiNlSgFf~m8h|m|n2gVm.m}2qg1lc120UhMm/kqmumw0DmyfSmTj5i.0z8Inb8Hf%m$gnnWjtnhlNkL04i|lQl60Gax040l3?b1nSmYaN42khn_cr8Rkln#knm)a#l_dhkNnLl3jQlcm=eym_nyb}h}fOnpnEkSnsnMk/mejS5^jUn`ahgkn}n#ail%k~8#ngn(o5nlmDd0mFnql7lioJlagEk4jEofb:ohmIoamReQktnJlRh8nOnQiXoq67osm0fX8/nX8Qk|oz82o.n%n(ni50dgn,0em?o8dQn:n=0=mzo_0dlUkzotnVlEgmbB8|o0pehEl1o4lOi}o~dUn/120C0e1xky0h9i8 9d919a1A0v94pB2.2)0r1}py0h921Gnt5i2X0D0W0!0r0Gmv0A621s1um70?o)2(1O0,1R3:0r0R0D1j2R0H1-2?di121Gp+p-p/2S0z0 0v2an;1j2Zp;1k059i1C1Apw1N3K1H0L0k0u0?cP0eq50?0Z0u0d1h0;0Hb10eh43ldi0Eq41-a~0u0;0v0z2?2oq73ud017qaqJj{1 0w1*1,kVp(1K7s1^0v0Z0+0I0hpK0k0Q0+0N1)1+1j0N4y0b0h9K0h0S0h1?be1Eq=f7qz0Eq*1^0D0j031CbKqL6xp(pK9a1P0.0:0=0d2N2ufM0Z2up^15171u1c0%0K2Or01y0d3?0v0yo~0r0 0Yc(1Brp1Eqd040(1h2X0d2O0{0H0pqr0v0KqO0d0ert1jb1bgp(2{3:1X1Z1#1%q,qS1.1@261^2ya}2D2u2w12qQq-o ef9cj48~pwk=n`0t3Bo/41s7nZfqg9sb2o8,bvsffuo5jwp0bUjzo#mLm{h~mEfKoWjNsnitnDnBd+eQp$p8s5o,acs7n|pd7@sJpgsM3$sg8^sPo2cCg?cBfOg_j.g{ka0fj=h2k23llSqOhbhdk0rWhjnxhls$fdn^j6s7ovsLems|sOs nVsR8l8_t0o^m:i5lSktnK3-t93fc2q9ssoim oJmHoMcMpH1~fRiXltsBi5sApNnFi*cin7gQs{3zs93ys7o;n!t6tF8XsitFt8o5o}r 2%tfdlmus`ifs7pclGsPlItKt%t47?t2pi9:mhs6cxf!tLl$t)t2h#sht@lLsll{l9spjBoPk6oRgJnAty22ojtvtz04sxtenMlwokjHsDtYjks7ihowtLilt_6suot+7it2l@sVj*o4sYj-s^g~3?j?s*h6h8s-j}s/hgs;3lu4k7k9s#uVkci,tDtZ0zmkuqsPmnsd9~s7eot|u(oCpkjPtbnHl8m@b*r79Mm{tuu90}ubu oKdHiOtqcOiQoWu~nMtxm9iYvao9uiuclyi+sym+kMh-u_nCh;kUodkYd(mMtksunmiyomo9oooW0g0)tBuYn2tEmXs~uu5st1vNe#u.t2m(msgwkYlPpnl9mJpuqbs1pz0Y9:0-0/0;0+v+rev.04.
# Tests
(insensible Ă la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)