Mot parfait

On affecte à chaque lettre de l'alphabet un code selon le tableau ci-dessous :

'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I'
\(1\) \(2\) \(3\) \(4\) \(5\) \(6\) \(7\) \(8\) \(9\)
'J' 'K' 'L' 'M' 'N' 'O' 'P' 'Q' 'R'
\(10\) \(11\) \(12\) \(13\) \(14\) \(15\) \(16\) \(17\) \(18\)
'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z'
\(19\) \(20\) \(21\) \(22\) \(23\) \(24\) \(25\) \(26\)

Cette table de correspondance est stockée dans un dictionnaire DICO où les clés sont les lettres de l’alphabet et les valeurs les codes correspondants.

Pour un mot donné (une chaine de caractères non vide uniquement composée de lettres majuscules), on détermine :

  • d'une part son code alphabétique concaténé, obtenu par la juxtaposition du texte des codes de chacun de ses caractères, et lu comme un unique entier,
  • et d'autre part, son code additionné, qui est la somme des codes de chacun de ses caractères.

On dit que ce mot est « parfait » si le code additionné divise le code concaténé.

Exemples

  1. Pour le mot "PAUL", les codes sont \(16, 1, 21, 12\).

    • Le code concaténé est la chaine 1612112, soit l'entier \(1\,612\,112\).
    • Son code additionné est l'entier \(16 + 1 + 21 + 12\) qui donne \(50\).
    • \(50\) ne divise pas l'entier \(1\,612\,112\) ; par conséquent, le mot "PAUL" n'est pas parfait.
  2. Pour le mot "ALAIN", les codes sont \(1, 12, 1, 9, 14\).

    • Le code concaténé est la chaine 1121914, soit l'entier \(1\,121\,914\).
    • Le code additionné est l'entier \(37\), car \(1 + 12 + 1 + 9 + 14 = 37\).
    • \(37\) divise l'entier \(1\,121\,914\) ; par conséquent, le mot "ALAIN" est parfait.

Compléter la fonction est_parfait ci-dessous qui prend comme argument une chaine de caractères mot (en lettres majuscules) et qui renvoie le code alphabétique concaténé, le code additionné de mot, ainsi qu'un booléen qui indique si mot est parfait ou pas.

Exemples
>>> est_parfait("PAUL")
(50, 1612112, False)
>>> est_parfait("ALAIN")
(37, 1121914, True)
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 5/5
.128013nur9w6cs _1pk(d[3tv0o%2î=il:è,j7e8fSb4/-O+gy5]mIPh)aCD050p0H0s0!0A0B0i0j0h0B0!0i0i0z010s0A0m010406050i0c0V0V0!0d0S040K0v0B0c0`0v0b050N111315170 0m04051n1g1q0N1n0 0p0A0t0/0;0?0^0;0b0R0c0!0R0H0O0m0S0s0Y1e0j0Y0A0R0Y0B1S0Y0s0}050*0L0B0H1z0=0@011R1T1V1T0s1#1%1Z0s0d1o1N0/1a0i0m0!0b0^0x011)1B010J0,0H0b0!0V0H1Z1~20251+281%2b2d0}0a0j0X0d0v0m0v0i0A1d0b0j0(1|0d0d0H0h2y1g2g0b1o0N1N2L1^1`1_1!0p2i1C0A0b2a2v1Z1w1y0:1*2V2X0b0v2#1Z0m2E1o2J2L2=101 2z2%262+0d140B1Z0!1Q2E0J0^030k0k0h2,0H1V2*0v0O0l3g0}0j0l1g0!2?2_0~2^2h2{1+2}2 31330H350137393b3d2Y3g0O23040j0x3m3o203q2J2U013v0!301o320Y3436383a0(3F2+3H0r3j0r3N2I3p0 3R3t0^3U3W053Y3!3B3$3E2W3G3h0M3j0M3/1h3;3r2`1A3u0v2~3V3x3Z3z3#3D3(413*3h0T3j0T472=3=2_3S3_4h3}3C3%3c4n3f3h0g3j0g4t493?4c3^4e3w3X3y3A4B403e3H0G3j0G4K3P4v3s4N3T4P4g4R4i4T3 4m4W3h0I3j0I4#2K4%4b2(4*4f3`3|4j3~4l4D4=0O0e3j0e4`3Q4w3@4 4Q3{4S4k4C3)4F3g0u0}0l0u5c1r2:1g2#2O0p1`2T5f4C2!1x1o2/0H2;3p3:3P054C5J2h0A0p0^382J3H0l3x5R5T555m5W242m0H5!5l4E5%2L3n4a3S0n0}0(0J5L2K5;5f0f3j5`5P4}2|0J0}0H0i0s0k1 0d0J0+0s605|4)0|040o6f4M4~0b0}0V0v6e485M6m266i0Z0C600 6t5{3R5Z015U2_3H3J5i6F4:56423I5(2c5*6G5#5-3h6K0N3n0j6#0j6g4~0h5X04030j6q0s0j666:0c2X0/0Y0!0y6^2B0h150!2G0D2E0.0o2a0j1%1;746.0!0F0c0i0h0c1%0i0Z6A6l4w6M0k5V3h3,4R7p5,573,0j5)5+4V6P7t3N6$6%6v3u0}4C3D0b6 0s2a0H607H5e4)0v0}0z7S6(260i3J01017m6C610j7p7r0O447u5S6U7w6P447z6S7B4;7_1Z6Z3K6$7!7J047L0!0p1w2y2X7Z7I0^7W047Y7+7T4(4~0V0A0}5s7+6B2@6E7?6H203H4q7=7}6O4o0O4q7{2d8B5$4p806!838e015?040J4e8d7U6n7K8U8l260v5~042W8Y62856/7n8Z1+6i6z8r8-2z7.6I4G5Y8v6V574H8G6T6N8J0O4H5/827G6#843^7K3b7M7O7Q8)3S8g8i2=8k8*9b869d3a7N0!7P8c8j9a018g0Q9h5f0b0L0}670d8?3S6i6k7+9x6o040$0W0#0P9I5f6i0q9U4)9O0h9Y4~6i0U7l8=9M8u5!7/4Y8A7@7C8D4Y908I6W0O9:7F98998O9!9d888a0A1e9v9l9x9j9B9Z9c0(0ka42xa60ba83p9m9i0}9A9wa10}9Q9S9$6w0}9X9,8V2|8XaA8.0^9(7*8t7o8|7/4@9;929{4@9_9=7~8DaN9~a0aB857L9r9fal3Pan5fabaraZ3^9E8%0b6saJaF019Kawa!9q1ea%7RaE9na_0}9*4u9I8^8x3h59aO8}6P59aSaP57bbaXa*ad046/0k6=69156c2xac4~a,a9as9pafa$9t9ga-a^8g0wbvaCbA0Hag89aia7b0bya.9y7X9kam9x8n8paI5K9-6U7/5r8{9`57b*bgbd8Db*967G9x8Q2E0s0c0d1fbFb2a2afah8bbRb$bT6i0EbJa|bBa~bDa(6Dc70}c9b 4x6p6rbp67br6b6db#5M0N5O5u5I5w5F1g0s5zcB2R2M0!1$cy0N5x6B0(0*0,0i04.