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
🐍 Console Python >>> 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
🐍 Console Python >>> 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
🐍 Console Python >>> carre_3_bis . somme_colonne ( 1 )
10
La méthode est_semi_magique
renvoie True
si le carré est semi magique,
False
sinon.
Exemples
🐍 Console Python >>> 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
.
.128013f6S=d-Npg2m!RCj 8P5)kuA_sh0:Fq4yr./oTbc1w937ve[l,*+ti]né;a(050f0U0!0*0#0W0z0q0N0W0*0z0z0e010!0#0i010406050z0w0l0l0*0H0G040d0K0W0w0 0K0%0q020*0l0i0)0q0n0U190H0E0w0U0z050J16181a1c140i04051H1A1K0J1H140f0#0T0@0_0{0}0A0#0j0A0W1Y0A0!12050/0M0W0U1T0`0|011X1Z1#1Z0!1+1-1)0!0H1I0!0A0@1f0z0i0*0%0}0k011/1V010b0;0U0%1n0U1)25272c1;2f1-2i0l2k040a0q0s0H0K0i0K0z0#1i1k0-230H0H0U0N2F1A2m0%1I0J212R1~201 1*0f2o0}1#0%2h2C1)1Q1S0^1:2#0#2%0%0K2+1)0i2K1I2P2R2|15261k2-2d2=0H190W120q0O2O30132 2n321;3436380k3b273d2P2!013i0*37040q0R3m2Q143p3g0}3s3u0q0F3y3o303q3E380t3I3A3K3C3r0K353t380c3P3e311U3h3U3j3v0S3Z3B3$3D3(3W3v0r3,3R3.3T3V3F0Q3@3f3_3M040O0B3~3#2.3`3)0O3a1B3c3Q3 47410O3l4c3n4e46333:3u0O3x4k3z3!3L4p120O3H4t3J4f4o3{4y3O4B4m4w4F423Y4I4v3S4h3+4O3-4g4x423?4T3^4V4L0O3}4Z4D3%4L0k444)4n4+3)0k4b2|4J4Q4W0k4j4^4P404{4s4~4U4E4=4A534!553;0k4H584*3/4,4N5e4:5g4=4S5j4K4=4Y5o4`4,4(5s504L0R4.5w4#3)0R4@4d4 5C3;0R4}5G544;5J525M595O3u0R575R5f485J5d3c1L2`1A2+2U0f202Z3S0N2?2u0,1R1I2_0U2{5$4B055:0-5{5Y0v0%120b2z0l3I5H2d0P38695N3D640419216e5S0}6c3v6l626h0#1o3U0!3I0q6a3h120z0E0H6w4I4_3_0v123g6q5k016o6y5}6f3r0N120o1a2K6M3q11040C3P0q6)6y6S6J040-0b6Z3S6P6;3_0b0l120y0y2:2E6|6@476#0+712d0M6#0z0U0W6:6R6m016#0X6x6z3D122=0l0M2K1z7d5Y6#0u6%4I6*7x6+7e776B7a7c2~6S0K120I756A043U0f6Y4B7z5Y7H040e7i6S0%0M122:6F7F7e737K7k046C6E7*7f12747r6N7Y122r7/7)7?3L7l0K7n7p7{120u856(7y6)7j017B7,7D7/7T7J7}4Q121{0U0*0w7W7e7T7V7Q8a6#0V0V7/6h7m7o1y83048x8i40120p8p7S120Z8K7@7!8f120Y7/8c797b8R048h7%5Y6h7N7P8#6N6#0$8O3q6-0b3U8.8j048J8t7G6o2:8?407Z040H270j0U8D7=8*3q8V8e8G478g8y128(959c2d7t8-8`7e8:8=9n8$8Q9r6N0K8|0%8~4g90920%94968U789b983S9e9j7L9h8D0u9m4^067x8a6-6/7/6?9M3D0b120*0b2f0N0A9i9J3_7|9.479a8X9!7:047u453q6P886Q9;2d0z0f1202030R0Q0)a6a8aaa7a90x9)0#9+1.0w316X0(aba9apadac87889V659q2|7R8P041^2%9z2d9w7!9y9u999H9@a11;9LaO7+8l8n8D7v4^9 7y8a7^042_7#9F9^6haD9-5$6S7t3P9T6*aw6.0U7Ea.7e9ZaR3r9$7,802t0ya,a)a~9?a`3n8u127haK8@0#9PaW5X6N9~av9^a3a5aeasaqbq6W0W0N0w1-0q0_0q0zb21.0-0?0T3t0U0w0H0?2HbAa,0q0#arbSbqauaZ7X6BbDaFaP128saz8a0l0#125A4daYa@8;0Hb!7+8_b(8{aIb?3r9B93a-baa/7;9G7CaNa{8L8Z9f7M0H7Oc02Qbb9`bi4laY9UbXb118ce6p7Gb$b|6hbCcob|7T8Nbe3_b88Y8!c7aBaT8o9^8vcabgcJ120$8Fa~6hb^cF6!cObVcl9o122K0!bKaJb_7ecubZ6GcY62129X9^a}cU4Qb0cvb35:0W1jaEcN0497c@cBaMb9cfc204bdc)9s8^bh9|6=389 7/bo04bTacarbubwbybAc`bE1y0qbH1-bKbM1.bAc|c~1.0pdmbsat7wdicmdtcxcscA47b*b,cXa?6,axb=dQ339tdb9v9xctb~9Dcpcgd2c17Ad5cDca9Od09{dKckaA7~cn2tdO7UctbYcwdZb#04czd$aLc5d6619v7IcacH8DcQd34gd#ek9kcOejd/dccTer8+cWd`bWcZ910.c%e2d~cp06a=89dWa^ec8ac?eu3Lb01y0!0y79b*0y190j0#1wd,d8d.d7d:ebdeexc.aBdt0y5:18alcpd|9KdPe93ScC9^aQen7Le/b5d0e%ed3qdS04b-eO3Sa:e,dVezb;eDcMe{3_aH048}e53Dd*9Ef4c48dc6fbflefa*9gcc8)f00}7tci3zd{eIez0#ece^d4e*e~fzcRe3b3f3a~9:fE3remfx7284e00mb%3cfOeleEe:b2e?aVdUd{a@c#eCfp010v6U040D3t79f@f-2d9pdYfkf.et2Qg5aPd(f|a#9CfsfXc39^e}a~e f$d!cbcde+aXfJa@fMb|gnfZgpe(dce/dD0%c gkd1cagbf6fcf(f|7Tf*eDgFf;gIfZ6#fH13fJeyc/eAc$0Hc(f,9Vf g10=e@g#0qeHg$6N6-f`g*b|f~120L0H1x3Z0J5 5`5%h60J5*1A0!5,hb2X2S0*1,h85*1GgN3_2K0l0y0b0*0v0U0y0A0R121s1ue!0?gZ1L3d2+3q0*0f0l1j2E0#1jbQ0%8;121GhHhJhL2F0g0 0!1|g01j2MhN1k5~5;7,171Ah52R1O1J040h0K0w0?8n0Hh)0?0i0w0q1h0;0#790Hbz0*0q8;0%h(hO8b0w0;0!0g2:2bh+601Ch/h,0q2H0s0G211jhEhl05i90A2K0b1W1`0i0z0C0Jh90K0N0z0I0iiu0A1j0I3U0j0J660J0R0J1#7o1EiWalid0%iN1%0l0W031C6Bh.0J0*h;3dh95@1P0.0:0=0q2A2h0}j26h3A171u1c0n0(2Bi+dv3t0!0Ug*0*0 0T8C1Bj81E3d1H0x1h2K0q2B0{0#0Mi40!0(ir1.0Hjc1j797qh=hG3S1?1!1$1(hm472q2h2j122w0d0Nh}0i0!2xiQiw5}5_ed2}5$h:a@c;a~eNgD7@c_bDb41YgWgq1;fYj 0}gAk29_dag,cmfjgX84gZ6H47bla0fZdkdHbr0)dpbxdBi9dtjEbGbIdzjEi8bzj}1.bRbqkkbVa!fUe@8a8rd)i=68ftgmd;fRc9fA04ehd0eqj^d}kak58,0ukEeJg{g+3ngd7+dN6Gj;a_9Y6da*j`cof:c}gHe#7(glb7kPgJk7k+kFddd^kdeMdh89bna4dlkClfackndrkqbDksdwkubLkwdC1fdE0qdGlgdIa9k%c*kGe0f+l47X90iof4kWjS76l1gBfSfZ6hkUgJlJl5kZkXgO04cPgL8D9Rk8fgayl%dclVcq8qgfg933frk}7sk fZk4lWfykRfTgsfDk!840$k$exf_eBg|gglB4Oh4h,h72Rhk5)i~0;0zi`0-0/mj04.
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)