From 75239aa50b11f22a04737c5ed8fb49497dd410d6 Mon Sep 17 00:00:00 2001 From: branco-g Date: Tue, 15 Oct 2024 11:34:40 +0200 Subject: [PATCH 1/7] premiere fonctionnalite --- pendu.c | 64 +++++++++++++++++++++++++++++++++++++++++++++--------- pendu.exe | Bin 0 -> 147629 bytes 2 files changed, 54 insertions(+), 10 deletions(-) create mode 100644 pendu.exe diff --git a/pendu.c b/pendu.c index 1b0cfd6..5e6eb93 100644 --- a/pendu.c +++ b/pendu.c @@ -35,16 +35,54 @@ void display_hangman(int tries) { } } +void choose_words(int max_length, char *final_word) { + int total_length = 0; + int chosen[MAX_WORDS] = {0}; // Pour suivre les mots déjà choisis + int attemps = 0; + int max_attemps = 2 * MAX_WORDS; + + while (total_length < max_length && attemps < max_attemps) { + int index = rand() % MAX_WORDS; + + // Si ce mot est déjà choisi ou dépasse la longueur maximale, on l'ignore + if (chosen[index] || total_length + strlen(words[index]) + (total_length > 0 ? 1 : 0) > max_length) { + attemps++; + continue; + } + + // Si c'est le premier mot, on le copie directement, sinon on ajoute un espace et le mot + if (total_length > 0) { + strcat(final_word, " "); // Ajouter un espace entre les mots + } + strcat(final_word, words[index]); + + total_length += strlen(words[index]) + (total_length > 0 ? 1 : 0); // Inclure l'espace si ce n'est pas le premier mot + chosen[index] = 1; // Marquer ce mot comme choisi + } +} + int main() { srand(time(NULL)); - const char *word = words[rand() % MAX_WORDS]; - int word_length = strlen(word); + + // Demander la taille maximale pour le mot + int max_length; + printf("Choisissez la taille maximale du mot à deviner : "); + scanf("%d", &max_length); + + // Créer la chaîne finale à deviner, basée sur la taille choisie + char final_word[256] = ""; // Un buffer assez grand pour contenir plusieurs mots + + // Choisir un ou plusieurs mots pour constituer le mot final + choose_words(max_length, final_word); + + int word_length = strlen(final_word); char guessed[word_length]; int tries = 0; int guessed_correctly = 0; + // Initialiser la chaîne des lettres devinées avec des '_' for (int i = 0; i < word_length; i++) { - guessed[i] = '_'; + guessed[i] = (final_word[i] == ' ') ? ' ' : '_'; // Conserver les espaces dans guessed } guessed[word_length] = '\0'; @@ -56,25 +94,31 @@ int main() { scanf(" %c", &guess); int found = 0; + // Vérifier si la lettre devinée est dans le mot final for (int i = 0; i < word_length; i++) { - if (word[i] == guess) { - if (guessed[i] == '_') { - guessed[i] = guess; - guessed_correctly++; - } + if (final_word[i] == guess && guessed[i] == '_') { + guessed[i] = guess; found = 1; } } + // Le comptage des lettres correctes doit exclure les espaces + guessed_correctly = 0; + for (int i = 0; i < word_length; i++) { + if (guessed[i] != '_' && final_word[i] != ' ') { + guessed_correctly++; + } + } + if (!found) { tries++; } } if (guessed_correctly == word_length) { - printf("Félicitations ! Vous avez deviné le mot : %s\n", word); + printf("Félicitations ! Vous avez deviné le mot : %s\n", final_word); } else { - printf("Désolé, vous avez perdu. Le mot était : %s\n", word); + printf("Désolé, vous avez perdu. Le mot était : %s\n", final_word); display_hangman(MAX_TRIES); } diff --git a/pendu.exe b/pendu.exe new file mode 100644 index 0000000000000000000000000000000000000000..06e50f7479a968760779a8730a8e8e0ce52648e5 GIT binary patch literal 147629 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≺3m$s)16OejlW0kub|20nN-O@u8JK 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 literal 0 HcmV?d00001 -- 2.47.0 From 0457b82c4aa1d8b04d26170866c2f27aea0b756b Mon Sep 17 00:00:00 2001 From: branco-g Date: Tue, 15 Oct 2024 12:01:47 +0200 Subject: [PATCH 2/7] gitingore --- .gitignore | 1 + pendu.exe | Bin 147629 -> 147629 bytes 2 files changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..adb36c8 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.exe \ No newline at end of file diff --git a/pendu.exe b/pendu.exe index 06e50f7479a968760779a8730a8e8e0ce52648e5..6ab74a9f4f44aa7671e5422a4b99e58b266eea15 100644 GIT binary patch delta 27 jcmZ46$ho$Wb3z9bxAnv>KPL6O##^no7`NVHx@->sllKcP delta 27 jcmZ46$ho$Wb3zAGv)RNhKc@Majkj8FF>bxZblDyNp?eGy -- 2.47.0 From 912354e062cea1a400333a25f594bb8c792f4b34 Mon Sep 17 00:00:00 2001 From: branco-g Date: Thu, 24 Oct 2024 15:57:21 +0200 Subject: [PATCH 3/7] =?UTF-8?q?r=C3=A9duire=20taille=20du=20main?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pendu.c | 111 +++++++++++++++++++++++++++++++----------------------- pendu.exe | Bin 147629 -> 147153 bytes 2 files changed, 63 insertions(+), 48 deletions(-) diff --git a/pendu.c b/pendu.c index 5e6eb93..8a6bf59 100644 --- a/pendu.c +++ b/pendu.c @@ -35,90 +35,105 @@ void display_hangman(int tries) { } } -void choose_words(int max_length, char *final_word) { +void choose_words(char *chosen_word, int max_length) { int total_length = 0; - int chosen[MAX_WORDS] = {0}; // Pour suivre les mots déjà choisis - int attemps = 0; - int max_attemps = 2 * MAX_WORDS; + int used[MAX_WORDS] = {0}; // Array to mark used words + int word_index; - while (total_length < max_length && attemps < max_attemps) { - int index = rand() % MAX_WORDS; - - // Si ce mot est déjà choisi ou dépasse la longueur maximale, on l'ignore - if (chosen[index] || total_length + strlen(words[index]) + (total_length > 0 ? 1 : 0) > max_length) { - attemps++; - continue; + chosen_word[0] = '\0'; // Initialize empty string + + while (total_length < max_length) { + word_index = rand() % MAX_WORDS; + + // Ensure we do not exceed max_length or reuse a word + if (!used[word_index] && total_length + strlen(words[word_index]) + (total_length > 0 ? 1 : 0) <= max_length) { + // Add a space if this isn't the first word + if (total_length > 0) { + strcat(chosen_word, " "); + total_length++; // Account for the space + } + + strcat(chosen_word, words[word_index]); // Add the word to the chosen word + total_length += strlen(words[word_index]); + used[word_index] = 1; // Mark the word as used + + // If we're already at the exact length, break + if (total_length == max_length) { + break; + } } - // Si c'est le premier mot, on le copie directement, sinon on ajoute un espace et le mot - if (total_length > 0) { - strcat(final_word, " "); // Ajouter un espace entre les mots + // Break if no more suitable words can be found + int all_used = 1; + for (int i = 0; i < MAX_WORDS; i++) { + if (!used[i] && total_length + strlen(words[i]) + 1 <= max_length) { + all_used = 0; + break; + } } - strcat(final_word, words[index]); - - total_length += strlen(words[index]) + (total_length > 0 ? 1 : 0); // Inclure l'espace si ce n'est pas le premier mot - chosen[index] = 1; // Marquer ce mot comme choisi + if (all_used) break; } } int main() { srand(time(NULL)); - // Demander la taille maximale pour le mot - int max_length; - printf("Choisissez la taille maximale du mot à deviner : "); - scanf("%d", &max_length); + int max_word_length; + printf("Choisissez la taille maximum du mot à deviner : "); + scanf("%d", &max_word_length); - // Créer la chaîne finale à deviner, basée sur la taille choisie - char final_word[256] = ""; // Un buffer assez grand pour contenir plusieurs mots + char chosen_word[max_word_length]; // String to store the chosen combination of words + choose_words(chosen_word, max_word_length); - // Choisir un ou plusieurs mots pour constituer le mot final - choose_words(max_length, final_word); - - int word_length = strlen(final_word); - char guessed[word_length]; + int word_length = strlen(chosen_word); + char guessed[word_length + 1]; // +1 for the null terminator int tries = 0; int guessed_correctly = 0; + int letters_to_guess = 0; // Total letters to guess (excluding spaces) - // Initialiser la chaîne des lettres devinées avec des '_' + // Initialize the guessed array and count the total number of letters to guess for (int i = 0; i < word_length; i++) { - guessed[i] = (final_word[i] == ' ') ? ' ' : '_'; // Conserver les espaces dans guessed + if (chosen_word[i] == ' ') { + guessed[i] = ' '; // Spaces are pre-revealed + } else { + guessed[i] = '_'; + letters_to_guess++; // Only count non-space characters + } } guessed[word_length] = '\0'; - while (tries < MAX_TRIES && guessed_correctly < word_length) { + while (tries < MAX_TRIES && guessed_correctly < letters_to_guess) { printf("\nMot à deviner : %s\n", guessed); display_hangman(tries); char guess; printf("Entrez une lettre : "); scanf(" %c", &guess); int found = 0; + int already_revealed = 0; - // Vérifier si la lettre devinée est dans le mot final + // Check if the guessed letter is in the word for (int i = 0; i < word_length; i++) { - if (final_word[i] == guess && guessed[i] == '_') { - guessed[i] = guess; - found = 1; + if (chosen_word[i] == guess) { + if (guessed[i] == '_') { + guessed[i] = guess; + guessed_correctly++; + found = 1; + } else { + already_revealed = 1; // The letter is already revealed + } } } - // Le comptage des lettres correctes doit exclure les espaces - guessed_correctly = 0; - for (int i = 0; i < word_length; i++) { - if (guessed[i] != '_' && final_word[i] != ' ') { - guessed_correctly++; - } - } - - if (!found) { + // Only increment tries if the letter was not found and not already revealed + if (!found && !already_revealed) { tries++; } } - if (guessed_correctly == word_length) { - printf("Félicitations ! Vous avez deviné le mot : %s\n", final_word); + if (guessed_correctly == letters_to_guess) { + printf("Félicitations ! Vous avez deviné le mot : %s\n", chosen_word); } else { - printf("Désolé, vous avez perdu. Le mot était : %s\n", final_word); + printf("Désolé, vous avez perdu. Le mot était : %s\n", chosen_word); display_hangman(MAX_TRIES); } diff --git a/pendu.exe b/pendu.exe index 6ab74a9f4f44aa7671e5422a4b99e58b266eea15..97ad6fad91c48cee400fdb423ae66b1b3502ea27 100644 GIT binary patch delta 19916 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%0A&5RK@@m>&@iI-TmE6|AA27VM2IjX1 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 Date: Fri, 25 Oct 2024 15:39:23 +0200 Subject: [PATCH 4/7] main - 50 lignes --- .gitignore | 1 - pendu.c | 136 +++++++++++++++++++++++------------------------------ pendu.exe | Bin 147153 -> 147181 bytes 3 files changed, 59 insertions(+), 78 deletions(-) delete mode 100644 .gitignore diff --git a/.gitignore b/.gitignore deleted file mode 100644 index adb36c8..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.exe \ No newline at end of file diff --git a/pendu.c b/pendu.c index 8a6bf59..1fd6a81 100644 --- a/pendu.c +++ b/pendu.c @@ -3,26 +3,18 @@ #include #include +// Define constants for the maximum number of words and tries #define MAX_WORDS 14 #define MAX_TRIES 6 +// Array of words used in the game const char *words[MAX_WORDS] = { - "programmation", - "ordinateur", - "langage", - "jeu", - "algorithmique", - "fontainebleau", - "koala", - "anticonstitutionnellement", - "code", - "canard", - "gyroscope", - "periclitation", - "susurrer", - "eclesiastique" + "programmation", "ordinateur", "langage", "jeu", "algorithmique", + "fontainebleau", "koala", "anticonstitutionnellement", "code", + "canard", "gyroscope", "periclitation", "susurrer", "eclesiastique" }; +// Function to display the hangman figure based on the number of tries void display_hangman(int tries) { switch (tries) { case 0: printf(" ----\n | |\n |\n |\n |\n |\n--------\n"); break; @@ -35,83 +27,53 @@ void display_hangman(int tries) { } } +// Function to randomly choose words and concatenate them to create a puzzle word void choose_words(char *chosen_word, int max_length) { - int total_length = 0; - int used[MAX_WORDS] = {0}; // Array to mark used words - int word_index; - - chosen_word[0] = '\0'; // Initialize empty string + int total_length = 0, used[MAX_WORDS] = {0}, word_index; + chosen_word[0] = '\0'; + // Select words until the maximum word length is reached or exceeded while (total_length < max_length) { word_index = rand() % MAX_WORDS; - - // Ensure we do not exceed max_length or reuse a word if (!used[word_index] && total_length + strlen(words[word_index]) + (total_length > 0 ? 1 : 0) <= max_length) { - // Add a space if this isn't the first word - if (total_length > 0) { - strcat(chosen_word, " "); - total_length++; // Account for the space - } - - strcat(chosen_word, words[word_index]); // Add the word to the chosen word + if (total_length > 0) { strcat(chosen_word, " "); total_length++; } + strcat(chosen_word, words[word_index]); total_length += strlen(words[word_index]); - used[word_index] = 1; // Mark the word as used - - // If we're already at the exact length, break - if (total_length == max_length) { - break; - } + used[word_index] = 1; + if (total_length == max_length) break; } - // Break if no more suitable words can be found + // Check if all words that could fit are used int all_used = 1; for (int i = 0; i < MAX_WORDS; i++) { - if (!used[i] && total_length + strlen(words[i]) + 1 <= max_length) { - all_used = 0; - break; - } + if (!used[i] && total_length + strlen(words[i]) + 1 <= max_length) { all_used = 0; break; } } if (all_used) break; } } -int main() { - srand(time(NULL)); +// Function to play the hangman game +void play_game(const char *chosen_word, int word_length, int letters_to_guess) { + char guessed[word_length + 1]; + int tries = 0, guessed_correctly = 0; - int max_word_length; - printf("Choisissez la taille maximum du mot à deviner : "); - scanf("%d", &max_word_length); - - char chosen_word[max_word_length]; // String to store the chosen combination of words - choose_words(chosen_word, max_word_length); - - int word_length = strlen(chosen_word); - char guessed[word_length + 1]; // +1 for the null terminator - int tries = 0; - int guessed_correctly = 0; - int letters_to_guess = 0; // Total letters to guess (excluding spaces) - - // Initialize the guessed array and count the total number of letters to guess - for (int i = 0; i < word_length; i++) { - if (chosen_word[i] == ' ') { - guessed[i] = ' '; // Spaces are pre-revealed - } else { - guessed[i] = '_'; - letters_to_guess++; // Only count non-space characters - } - } + // Initialize guessed word display with underscores + for (int i = 0; i < word_length; i++) guessed[i] = (chosen_word[i] == ' ') ? ' ' : '_'; guessed[word_length] = '\0'; + // Main game loop, stops if max tries are reached or the word is guessed while (tries < MAX_TRIES && guessed_correctly < letters_to_guess) { - printf("\nMot à deviner : %s\n", guessed); + printf("\nWord to guess: %s\n", guessed); display_hangman(tries); + + // Get a letter guess from the player char guess; - printf("Entrez une lettre : "); + printf("Enter a letter: "); scanf(" %c", &guess); - int found = 0; - int already_revealed = 0; + + int found = 0, already_revealed = 0; - // Check if the guessed letter is in the word + // Check if the letter is in the word and update guessed word display for (int i = 0; i < word_length; i++) { if (chosen_word[i] == guess) { if (guessed[i] == '_') { @@ -119,23 +81,43 @@ int main() { guessed_correctly++; found = 1; } else { - already_revealed = 1; // The letter is already revealed + already_revealed = 1; } } } - // Only increment tries if the letter was not found and not already revealed - if (!found && !already_revealed) { - tries++; - } + // Increment tries if the letter was not found and not already revealed + if (!found && !already_revealed) tries++; } - if (guessed_correctly == letters_to_guess) { - printf("Félicitations ! Vous avez deviné le mot : %s\n", chosen_word); - } else { - printf("Désolé, vous avez perdu. Le mot était : %s\n", chosen_word); + // Display win or lose message based on game outcome + if (guessed_correctly == letters_to_guess) + printf("Congratulations! You've guessed the word: %s\n", chosen_word); + else { + printf("Sorry, you've lost. The word was: %s\n", chosen_word); display_hangman(MAX_TRIES); } +} +// Main function to start the game +int main() { + srand(time(NULL)); + int max_word_length; + + // Prompt user for maximum word length for the puzzle + printf("Enter the maximum word length to guess: "); + scanf("%d", &max_word_length); + + // Select a word within the specified length + char chosen_word[max_word_length]; + choose_words(chosen_word, max_word_length); + + // Calculate total letters to guess (excluding spaces) + int word_length = strlen(chosen_word), letters_to_guess = 0; + for (int i = 0; i < word_length; i++) + if (chosen_word[i] != ' ') letters_to_guess++; + + // Start the game with the chosen word + play_game(chosen_word, word_length, letters_to_guess); return 0; } diff --git a/pendu.exe b/pendu.exe index 97ad6fad91c48cee400fdb423ae66b1b3502ea27..1bfaaed9514947b13ce74402d277cb71b6aef7b0 100644 GIT binary patch delta 18270 zcmbVz30PId|M!`5IhT9cSK0Sf1-$NPX1I{ot#A!jHo*-60ZUE26xJ_74IFLM%&`2G zRvLLt)Ld|1D#dbN3M&(p6w6Y}|7s zD&8`!Ogf7UP1i3>Wv)?E;qz0ViOS}t@$wbXh4Kh4eNGO?jwAPm?!KvU4U zNrJHSWn#{1Ht)ZoGnYMTSWGhvkz(J(?x^P|rg14X|8I>{JGtn^i5SD$_Uf^f6zlji1}3Uk@f zo4_IkDH>VJ?lA4?{ z#I8P+It?3?YF?TfnPM&*9$Gdgc3@eu$y`=%E<0GB99vq8gw>f#Zy`Nn>dmXnrM0f+ z{S9{J{q=SY?K}}d`$OiX10zGtWyu%ldS`FTZBu#jeJ)d;9BL+YuG@t^p>ynah6?ad z+L?yRTt4Ok=UMfJlUSO3pMZWUId;J@1&=kaI$|dZHxJ94$rsFJ2M||L2PIhpV6r^< zG19i_F-CZ)RG@Zr;Jz$PK5tR@^HunehaenHZh|gUjY`$PtJ@>WlN;K)>E^mU`F!Gm zIo%aE8qBL)x7&$*(&hxYZXbTW6_kB`NT8E&E%wmLiPGc-#L@6nvL$xGN2Lp!ggFkS z3mb(wcBRRWN$JAJlEtY!`QcN^Cf6nHo12>zdXBH0BssuC?Uewhz~S4WHvEc;4+Fka z4@(VO|K?NsN`-l8wqe4ggJVXSOB>C60FxRR5iFQfeC&3DRcN^DB?!pXF;vLaepMHN zF60VqJhfL<^c{De+Irh?H~nk4{lU;?xEsnbA$SsD;0*UkribruDCb6#e?FT0nEP-v z`5~`v`yqu5h+EBTXt9!-@241g&3&Bs zV+`%%(bsGHC|E1|>a{;zm-%2$A-IjB=rWHH*g5Mx;yq$`_tMdPsSWe>ZT9{sn}&FX ziFZfR{+{vU50B)+Lk)w=E}F|mxix$D$>ved+1~6eg2I-lgW<9R4O6fuao0Nkc{7ZA zQ7*j+(ef7zVA&Wg2*b(;`uaBX1(&((60l-=+_MwuMjv^G5f>WZ6&?N+6q(C|&hV=J zp`+5}5j;=a#=uDI9MX3qXqMMtl0r9ooekfT0ymDkE-T^+%e!~X5`@l|%}Wzy;vN)7hL)WeT=o!-JmBaFjxKdBrM-QE#Ou$| zaX!7pP0!JlK7+)n2>QKGH!{TP={uf8bsCOP%C0qgyI{+Kx6Q*)y>_{{hq*kyqYOR$ zcrsn?*W0yjvLL)Lman4Fa_N&{^s--9%QA46CE|_H>^&3RaC0J;FS}9OY9n<``lvE@=9F8LJ_@6x%}TzV*W!enLIVUG1uR5W}0$|{|Wy#3no;+W3g z-gY#Xo!~P&0Q0__(53zX-uLmoYNG?zrTs(c9{={P>xS~7bzQs{Nk1wrp?~;?cbO$) z#aA2pAknwaF#C%keQ1R!eq*JM8 z?>{EevVabTn?v~9_3}jeWx!^<+@}Y=NsRPXB#^sC6I!Oc-W zVq4<;->UTiwce`M@2mB4xxRV%=jP_t0fU_Sq|jHQLumV`d6Yz3NC{fcTkvX6;_ud$ zr{Z7j`hT@e9ku)gvz7K-wXTa(+HUbmU7+$;sd$sxE>UXwd`vH6iQ1QLt&Dj|q)&G+ z(Si=?)X<@OWwPsjaK-Z%lf)nVc zpi@xiqwD}(fVv1}H|P@7pP|%(u14J%r{80slTZ&pIRiQcwHYVj3!FyHPsL5?I9jBG zIF5239d)R?1Pg+Y0b$f1gb9KZ=xWq=P$EG$p?-`K2O2>Mdm;qE1iF^jk%Ev2n%D24 zm_b*e4vP|m(Hut|jv$dQ7%JS!TC|2MOh2F-U1@FqabWV19MHt zMA^m#P#2->293ER+(M}Zjrk;ukAor5>8KZ>)N>xxD^VIiW9|tjQ5r#GehN}NvI`n> zRCpHUG3XT3ucNrwWunnZ5XPW5Wm+o}^T_hvab2nt1c4yIXFLVr1`5wKuZ?y@uafS6+#=-;kq5GR;r1M# zFKX$lrKch1xk!^_-R+E1;F*q8t~l zYH3%{{b+Yy+tRM5_r^te{`_7`8#7SW+XbnR)xQ1#y41ACZfapGu+AReG1mFA9p;um z4DU*U;7&KaniQD~ia#dwh(wu~^wWvkBJ}GTc)vH- zBuI}vRF%Rdfba5d{*PebO~<0FjJzB{FMff>F5buWI|+^jh12tjbA&$$@A%Hv;YbtwOZm*on4Tw)u@Y}!8hpz1Y)| zYUJHwWs)%jdL}x&!?jhK^~R1M($vm@#-6+tr?5_x2Kg!4ut~@dnJ%QeD4nUu6HnF_ z2)OV(=_*t7f@?u;#=Nwt8AyofQaeTX6wd;t4tzPTLm1q?DUio6RtkD<-W0FsH0Zf` zQ(vX!MyAfmE-K2NB6N1(f_9ZVEP7I0I6b>a=%PA2v4tlsE5EQXJF7T%p3uch_0YGQ zkK#c;#XiD@8pP05jbXGP{YPav4FC9}=o5Om@Yr;fH5QVSKL*C z5FmLg9-rko!$a1t!c>-17T}ktq|9wr#@sZ_imAoZgn$l;dIKrWFV4tqfdgC9Gl%Cd zFksbWsL@qcSO_!ysCtG{9j*d)EOYWvw^S1*inkagVx_ALrdGP16NsxBWRbal6W_x3#L zxt2b>DCLK&T?h$>bSxR)&oDJ~AevD-ya=Mha8TYL+)*56;-9Cc0Eqz+f#ULCx@K*t zm=r*FukGjEs=~2V)Nv;DcsGhv)5LcNIn=9O3H7w>-EqEA>I>@%g2!7Nh3~>vN1iH& z3mDc~lz0a^W?j5=%@L0A5RGYgB~+qJwSK=YgpmI9$$R77Ti<m=Zus z-|z3cSv8ajkAFeYk&&c};C_x?eSa89qWeD>Nf&%zcpAq!%>bmqrkIvfP?%kmT`Ulz z{@)B_t-!Z@?)5Ba8Bc0x;D#R3JI+WD_tnn;4Si8?Hk36FkRug@d)B=h&N>ncT~VD! zELPp;XNZ^-OfPO7Mh??x>$~J_ddM2*kRPImiTU&|Yroc}T|Q0T)|Qx$~I4#@oo#_UHStUTbg!v zm)H2ve%m9&2MX`J?cE(Ghbc=gZTkfM(B?Uy|nC*ow{bw|aUov>d#rvAGEqD?CF8dycey39IB z#b*I`euYlh6)c7a)0cMziCu!}nq6H;I{ju>FW)8VsK&Wq(JA7XR?Z*N;4fo+zi89x z;Uh=JI}g&yUj|{g7JO+Uv*_k8$GhX3Kn{NxpSO7OtiHS7BczG$*b_q@)A~IL2+Vcw zynvf3qdihvnFP+oD17c&JmeMA3*LsI1bWaXdpk;-agpiAXCYm%&)_bopG|wPc=J(h}0U0Sc z+-f7xs0wsb1l;W+l<1mUaKRx^g}D9zSB-v$?hyh_I_W14i=Y!u`p0CdtT`&%Q-b?T zDm1S}QgA4zYflFBdasSz&(%)Zi_U_BwN2kQErQ&`&O-YgwCSY3)EP6ySI*X?Qw9%w zgUMr(iOqsP4W8=u9%Ma!YM@>;MN!vtlgNMRtaH739*RKrRaO#OF_B%LZJ=KP)Q*gPYvT|b|sm2xvLVLLM z>BVreoSwQko=l(}F2zf=SQ_$c(6P!5pPncy+X?jUrC|0$tf;3KFFhwUfhCv^P0)B; zviC=^eKzpH5rk7%d=hmp^|MxAepP2&k5QW+=scLvu$h7Mg&&?KJL$?FlF1qC7&jRW#>DJUUn0=tK(Xp&LmK8`>+`B^#(qLp}y&QA0cy`KJvLV6JOu2joUWC!9BY zZYDX}wJ_VYr=4fJvg#Pf1>W8`2fPH?IVg^+04?-ONBUnu)54*j04;L60XyYrmZ8Y1p|1W`M=>mx zI^Q1G8`lG}JNQtQAF}oqMn!gKy3N=O+1M9QVQo=UN2_kfA;xcRr->;sG@&sXDHzij z#v5}R6Ogcv8k2Ah+R!)yJKCsUJ9gm#^s(uDTGshrSo;7)4xq0bz-MS~=Fm^H`qy@N zMIQaNlfzkci3n$x-|6MQPi=jOw{2&n%SV~tu^nRQs5?CqxTQ!RK8EcJU(66lWPCMf z!)Jh_Wvd3Bt{B;x;U~J|PAq)Cb|;X0MxWdX6HU=H?C#TIuV|Wn_gNmu-Lc}E{_>G7 zrO6=q05M!@eaQ=SlF+k;EqV1aqVE3KWA&6m&j@-Qpaw(lQdC?XG1(lkI^kxleTpt z;iVGC|M609ElCRzuV@lTrA`W0JEJi*qy)9$$s4`n*%=Sgl@u_8CkZ80ti2~`@B6uW ztyut;rBJR{PKyWG3{MhCPO`T=Ne5EGcA*NvRh8`ea_|b?Y595CbEg*zlCS7pi(t~3 z&I`P=Sb`UcB~9!FFEZNHh>js6f-(IzV|+hC34O?++-3ZWpfXf)Q*}n;pyD1H$1Z!3 zp!QKJNC8R-YU4H!qL6!#s%ZTa9F<&GlT>YLqSt4dA% zDQ>G;ZG4D^9@{JeH@+wsLL*HH5k!!_P`hOp_Nt8%?$2?xF_Sm0s*Rye!c$m_e0Xq4 zCugb6$Yr)2l)ScsGGA%1g44vyT9ueWw)>K=B#R?)Cm#47&`W~OrFR&4%CVQ@U{4XZ zz4q+{ouPM_s32I?u7YEjVK5SF?DlV7hcIEVXD5D2a!er4_;ESiQ&O)m*BHOSo_+iX zgq)yKaBk_fgVr#Q7{3=Qsh4AnpJLvdEeR&R?b;;>vU`s34t?A@29fOwCjLfWB^SiA z#y^Do7`VL;G1-x|taB2XLR{F}Nu;-*6i_UA8HP%ZFG}skNnV0zM^YsZG1imaNFoE; zS4vSF%E6zuL_5*2PI4Y91&NWKl0SzHKTE;yNp8m_=f!M9Kho18P2g;)QhKq}o>TEs z0OuPbIZc=RbVWH5(YfxD;&pQqB%l5g371k98&aje;w)WCga` zn!DqO1MJoOHJ|imgv0p2-EtPWn*Y0dlb45f6LpE&S<*l7j8v z-`9KnT-;t4`?>g*>IS-`b2;$`S|#2JkjZLBGRRP8j^ZyW@{XWm?pY+lc@TG_0A$ArH!C#S!EWy;3WRMB72d~?oAxK_F35V80a9NJ($tZC zoI|=u4?%-D2flK$ggwe3LuImw4W6o!>1_2>q*!6tKUL+eVi%_(tsJdmk3i}<=@!rY zrxAadPKmGSJ&i0Q+h>rDVyJvOsNOB+W)~M{7Z#-z<0g$?#0qI?*>r!gcg=uYQbo4s zk>jD{BX(jLR?|o9j#7ENCAWGg)p(^^q*U)K)seTzP;!%bRDknlO^*t4&WAAOypfE+ zYex{?#KgFS5g|gTAPVx;HqcG*T0s(uv*#8ANdX@ggrFn*(m#Qbdg9I2Zp1tP8+Lai ziC};3C;lvM6LDaFo&c2sO8NmpKI|3z#mABV(EzVF$Zz0(3Grr4n~5D;wF&3XDv`g$ zd>#2kHD0G+X^%fau%_)`i2WGTu>qigSw1G-lJLaSnfKfzBAH?YcW$kAHnegM_W?4M6i z^*Zfcb4f%gmnMg1+l)6K~0! z5v*woF_Z6Eug^#XZaP`*J`&DKJ|mI1>tvI6pmFRoFc9Wm4Tb^-IlPo=VgSu1?jg^z zs%jD`?S}IbTmLojWz8Fiy;v)-6n8P0nGO&;GLt!f4uexz=g;BHf7raw$xL~_abqKP z6Q8%Y5(9E?+$uW^_aj)!R@iK0s{!HGRB@_)E1bHjIu&aL!*Dj+io9P#0!tiNLKO-2 zX#!oXNpCYxFC(9jAl6_d(LU`k=1DkiX=hRii`s_NV1ME1{+g#dpr&pc8Aiy9ENHuo z_1jKniatiRWjhHc*f-F`x$x;4bY`#&RAP!FGwnl4zOI3*PxohQwvuqs>ZtgixC3Ck z15fGZNZ)1qcggIw^uw0JmsqnG zWS7~kJtWex|3I96_%tGM?7j2E&#^xab;<;P!e?*Nr+oJAhQjr1_HMYpie23ele-w% z!__;<>XY^mgI5Y9wJAz*;^RF-YSIohb31_LmFh0GQwBSax$eatlmtIq*tPR`0gc^@ zqjws6c`rttzZBYx`bp-v5BAepr+vt+WM*qI{cz^qw+|Vpaa1N?hgxEe{u}H3Ni%Ma zNkLKeoGJP7h1t3JSqWKiMt;IEtm#hjB=GDEx=!^U_V5g1$7@MM)F?jo$cJt5%>q&Z z24(Sa*161mKm6Z>juJL|Jqa+jEXi~>X+L?3+-JXnK{ODSunEpG)}1fSci6ZC=)A{n z@|J};A4EW*c5MDZ@C2}T50Vh+9CTK*{UF;nf~?Zm{R>DFb{cKctC{f-#wn5wKM%EW zZ1o{j_t+j@&0^PhUmhEN7`Cwdb{&STPVDMoxF>ihQ_*|`$^V7TIwE^jc?5Y4^icBp z_y{J#2$p;lYsj4^z{57XAinG<=BbHwK1%}Gd-cSg1s;PRjVCbLLyi%D*v&o$rJGsV zF?cbS{ehPB2H!5(D_0S+yjAu&PRwG8#J=AR*Ir_qj>A?gY}IOr> z*JNf25EI_Owo!Wp2;YBgQY%1KX?V7ADO?O{^I40J1m%svuLr}~%oAjim`K>2{qQe^ z{dxisJ-0-DjXD@hd_l&uip7W0R8DqdFw`6w5vhzE!O3G+K4+542eQIiw~0Taqaj`16d* z*-BvNz9oIhZRY(QhN4Y}gEAf^-|^jXMa%BEj@|v5_~8~v*_j*BEBXg2tD@T(e)QdWCwfqEY{xWK<03c%wQE4;M=!XFk~@o^*Quc zC<-drwR3n2PP+)z3)xD(l$+Sj^U!&OMO{E;Vw*1kOlDtPKvl0u)w6$i-$r@uvyGP# z0{_*7vcX&B4PKlW#CDxW4jyvV6Ij1X5SXhd%VMXYQ#1wGR<$XB`CrC3Y?C7)ZtQt? zF+|z6e`eoYhUsJM-est0Vw0}G;ak^Q;+e;Oy+T4fKgRGDXqM|P7IKw%iv23kx z7i$XAa!12|u4UtS#HBQdJx+=Ot9+k?^o#>prRnSmg#X4%QBXXe|9ud1J*WjiLr7+6 zKadzpiU!Pp;4}n}rHg|ae+q%*YLHSOJV7=d3S_Yc`2a{sE7J0IDUhS&?{0pT7S7c( zsUDxFyIER2#xYQ2%j&STtg9z+V(cdNbv<^hZ`s{?Wb!PVa1Ddk$Sl{;ddP0`7CuC- zlkRNbk2v>DyhD1h1E9oXI#zcNYVI@<155Y`qfy27-@sV!{RzE~N_+rn8K<^$%Bcxdw}+tK1SKx9#SuqB z+3dfOrq}Obg1fU*_u!8V&0v#$gYB)5di!^Xn;t=Y5vR6r>M^I{{sJ}sKB$j5^$-;3 z&W|uWFa80l;BV|Wy&jQxcAq!b{R5`LKZ$vzm)L_ffxylwbLTxk_nRWnMot-Ypk_P- z^*W~-IAv!CD(4ZX`Fc=4bLt_dGXDa#*B;4~E!Crm!x;hzP$t8$zcCrAd6ZW2loFua zn!&7(5#S65=otGCbTn}43@9?Vjd;=%h~pK-lT`Nvos)TIBnM`&kD8$&$5HIDa)@Zg zz;mk@*EnqIvcR(h@Y{+}8JfX@L~$0&bb_f`Q8cr9PW9D+n(Pc}H>a*}s<$0PHzn@3d;SC=q4&*Wyy_kz_P0nJq9wHAFI>8?FNkv><6Km|nNKpu3wf5px zFm6j#{EksDvnD_@g-1+9_7RS8tAuYJIMG}C-g3qRTqM0+{ zLH^Wu3S}g;jiMz$@B!2Y*$Bi01cRVgxzIMxe6%jsBF@A;C{M=jY)Uht-;y z<&KX)K@)f|kd2zaI|0ENwvC;BK;)m3@60%>yk0eJW|mMvekKx$hx7tAS^Zy0?wQm36_aE8zrd%(qD3?T9~3qRz` z&%##{TkS1|SlqA#-86{^$CELRO3P?q3*j)7wKpHd-+2K238hUI_2Lnmh@U#bVOoI$`u^_V6rNLFF zf~iTfoxIKwO^zv$T3CWEbpn10BpofA`NKdAn!KI?g745af!Vv_hp#&{(R<;~?tII! z&FyF)+>$LH{eV=<4z-vc3&gE8Lm8R*h5X=Jp>dl3f}lX-^m-t!p_=HwU8n94h2%L@jDJk zmBxWoAQc)1vVmw9MJW)W)fRrgot1&1sts-3oJQqlXBU9SSChy!>@`0zV#p`lre?r) z07=*Qb(kX>;qQQK(|9U+u;2W|@Sg4PW3pIHPk$h0jfJs5_+v|S0UPR%NwNSP73i=H z?g}8<4RZsKCe64V=16O_@-Nk)qoNhzrs}{Gsu}+~KpHfgg3*Henp`kLJ6tH5J~b}` z&8pViaz$R?sn@8E1Y&NL;yh0Q;g7Q7Fd}(bvkHVdjnr`PXmdKz(*mzGku3mIsAee2 zfGmM(Tk2|n)N7GeSPDBE1z2E@XD-e6-o1L&b9`9A`gra=hq%~CXo7Z8(XvL*oW z)tK)EWG+0g*~$S@hy1shdUF6ls*R6t0tp48j;lJ;R%ym{HF$hA(Qg96{|I9gLDKk1$rQ;#y1d1mD@;xkY0geLpx;Q7B4PA z>J3f08h})3M&bbwlZM9`cd-1iO^~SZ{|D3qNVP_6AP^IN0f$jllQ05E5?Z#jOa;=Q ziLaRT3&Y!WRcj>R7hVS&&zjAH_kr-ohV0^q#(`5n>RQJoP5BBD(lweJz|#aluALYB z*bYdNMUxUcM3K}grv4Wy;h4tn0PqxOq&fgeZI$AxdvHCP$ut3oS+kqX=6Zs$RoT8^ zmjSA6je{%t1jrQBwkdrHi1ys@7>Ju@MLFYEFh%2HAP|#=r#t82|GUYy#*zU&)WkZ8 zGik(fxgt%hbAi;g4o6O5Hl`!qZ!H*YD0im55yHBHg-ZiQuvx5PIqQuF+Ov-dt6ci;0p&-efK<1lM}v(}n5Ypt0* zXU_5NU;5L3=_{7GI;EMW3e`jyT3Ir3ipk2i{;#}KF>`Tb= zbdFOTxkcZ>UxDt!-!yvDDNejD*7`VSiLvWL1)<3ge=Ozxq1^GsFr)|`^#ptl!;AO zLomQvS7-`7H(3ytFCvy~n`Pe(CrjC%P0=(v<1<=u5H9GOmwnqG#Nu*aeXE*1G;WL z^TcM$tFV+Exp@~<*}kUf^n~kR@kSsGbXzUpUYiz^f|o9S0%+tW|*%954bnpaQ#s=p(mO@lGIp&M;X#6i7cXbc6FQ8oH9< z)aV{gy3i!|Eb*HFO5KN97g(0hiY{oQ+nHexPks)D37k!0ZM~=`Hwj+y%>OOKH8AWnYuCWnZInQ<)FM+8(ql9}sP}l%+P5 zkK1Y~Pi^2Huztj&r8XY=W6;zS<*6r1>k%xwy86GV>#0?@<4EdbZu61U7NvTiRL#7) z-NjNquAw}&*|OSeyR+EKTd+@($r=GhMuV>79UVLPgqui zS-80$8e!}XW&RQE6t7HzJ>{v7F`LN8n9Oo1Ozr5;4PBmEtFVWv=y%@S);o%k)+VLC z#;e;S6l1S(WBo+0?Wwih_ZRaSz+f4~3^IyCy|xdpZ3UOPi>0Y81R4of;c_Iki4&!% z*D#4|d=eWJkW^a>4Ry zeNm)W_y8>320y^z9A2KLx0I*oEoJ`3Kzh5IG^O_1p!jJ1G3l= zDfW4qV;o1mp*xLj^{0!ue3!52ZDU#RFm7J9^D7q8U~BXWFOlt99-0(SmwR_0m*_6< z?jzR6VM=d1I{)PD*BtF*Xy2R*uXu&0Kyzr@c(k(}?fblc4BF`HA5Z)Fq>InR(<+}n zegR`KdfD+;fA?Auh$vuk`myvEpHXBRP4VsE^RF?$mXGDDU|3L)&EF-DT74tLkz?qG zz8xmU@ZPea`oU!vEoEbjHvg(zKI`J`HvcK0u(f4l;IjQqIoMmcX`Oz*8Nsb6mu`(l z3Xa!b3iOP zT-!b%f{+3_Jg{9H{z7^IoGTrv!&Jx$M8e;Ec}b;r(b^FRI~mzQ<}LEBOm`ngQ?hl`J*>-MJ7qqf`Y zD`W-nw<)|M6l^^2PgdyuoQ_rK zj-a`NpV}^LF{{Q4LPdq69<8?jZ?%uw|8#AwsIdFa7PA3+2Uqz2TVEQd$p0^Dt32TU zLg4>_-!Y-iszLVJM{Ya%FO5}QatXT;pZVYG4^`Y=zoNDa)q09rk5=pF)Vec$6dhx_ z+4ECQW9$=X8O`&6)+9iK$H~g(#Fh`MJ zpw6A>my2|_gJOwZ9)ca!uVJxRnKSr4Z zTEHHV7HfqPG}6$xi;@Gn8Fc|(Vg;ai{Rv7D=o-{fcwa35orF3MWijVL{U=HZXaO(( z!zfEZBlCnrlx3VBbumf>Xk?sl6r~DugB66>UJ%xC0o1-IHK36`!s{qoK_jJvhbRX@ z3kiY{hVm`vLEQ!A3TULCkdM*`8YwD#jM4-eX)0VtX$IYlI<|u#v~W665Pm~JdQ^6w zO)8VzS0yKOPLmO6$AS6=3imayU7d;G{2bh*_CEmT;>Y{xi^-j&VuO?J$J*-TOeg61 zyia#`S7byAfwkt^enXD95`C@f*uJ88)wwbvVAbp)IbDocpR(3+WGQyu$ zJg<`~yD1IM7}nj+Xrx!cxTc4ruWhou&rCawkCB@DDSfh%g|L=ugc9H1`r8?ikg{1V zl@WpH@roGK+7p5vHs>tyuT0X(8g}qLMT238#m*`U%T_E|mQ;~B)c_P$Jd8ghr1D01?EBmdE=#4j9qsSJRWl}-NL3BHs0ext2? z2KuI*&qyoNV+={F?d>GG5AAFJwzo^@{qz`Lw#MGJ?{l5u3R!KBkI<#g_wqVBo3VDz z#P;zXE1U&E5{UjiNf12g`d3n-uL9vu5^9m?vZrMg3SQ{|q`A`<=4KQLQ3*w~`u+gw z)!_2haN_POWn>ghe<`=?v*=qCwSsff`K6OhIxgfq4B5hqz6dQrmxVt@`b%lxOxL;D zS^0T_PTU6QpWtxfY;J;ULE-fLqCDYu!aLq|ba>A#%*xLZbkm7(3rCyKE%@-E1?jPm zYJ+eI;7Q)i{|GwXG|+;jAp;F_iwbAu<_jr#92eE`1YbqzRN}>l^Lr_4dcHtLNW5_= zK#9bLR>ZWhSw5lAR|bdv;-AZg$bEmxUM9z6oSjZc$Ng z;oOX(*%?!fm&GN^s%pbpkspjT*GCZ?0Kl0m z<+F6>A$P9aVbv+v8xE`*SYY7W^j+q6-ca3@>i@p%Oi(}R1HNA2FWgt4ekz9 ztQ0(6%Cau7J2csQOg^`DOpw!7U^ie6- zRkc{KzIcDjFmDL185udqj#;y(z!TX;vkT`6<`UX}d9u&fs`L!7`IFJEPAPQd@=%gO zKV9BUT8!;T&kb=EF_l{|4T2W==}dok^C2YD zkylWdJ2$sTAg;Qg4=9IA^+848Qor)kg22{2F4%7wO0m zpPe18OGA}OaK3%A)^vUp@LQqcHl%@}N^Q)>l_!REb!r))NMYy()%mYNfvEJ$3jR{@ zmwC2Tnb7*3I&ps}J-RbgJQGT9?Cgxs9;RJAf)Z5m1W%m76}3ny zkAZaNuK1vFPj&hP$~N)NY`Sq*C_;2>SCTXxpI+omfezcP_r{4`&X8epeh5NvZSL+h zgj7&zPaLVD9rh%`9h3IFY${V3UEtix6mTy^;m3iUJuWYU`PzuN zfC<&3v>vGVGQdN?;jErLoT+zdFm< zq+((NCXDst^br{?xV=tOPKNleRl96T7kO52+Z{;@PMXBCk@Ss|rv7(ShM!=`7%yf0 z^>iYmND}suC`E6c9T&UMppor#DZAg!WZCxSr3{&S$xvPJ-JQ8gVLwOrX6_ znWPR#lpsET(@mIk8U-JBWCu^d>gNyj#nwN%HlSgEPHc##lg>>hsdVSL9-cYsp>Z+x zK#y`t&WF4Cs}S+0?asIHjaHi`H|UAXz~-Jr)6a*6ef%^o=-yJBaa_@tG4!qTOYlDM zy)YrRAX>5IGxR)z9S7dz3q|*lipxW9qN6VQ(zO?&#D*w(?7|q)7DdA@nu0^062@81 zF6_}A{GlY1&b}B$R#SR0BB4s1vL3_eK2RIKVhf6|RU7KSg6BfocrlO<^ykG$aYZ2C z4{81-J<-wmmpVwhk-_py$hF#tw+c$is>?;v9l&Aoy9qm-@EnTcz%Bb&SXkS5d5sfU zN=tsoLKgq{Ln^7Ojc@$PnbcADpKAft|D24!kA5COmevlrt|wSrV{XK`Z$gy5aLq)n z8dlNQZX}RJwDv{^bY8vDk@!&WrWCgUZ51by0rZ8Y+1N6UH+3MJ=$}ndL5m>$NpL2d z^D82MA0^-;UwpQs&))2a-6!W}ieYWMD!n$IZn>F7lBoBs03#pv9eG$+E|5gK-AX{r za&C7qNa(Ol>SS;)U|UY0P)qXu4dg*q1$*$-embSDwcd~hd)w546{&cNPMeYgE!F51g6 zUT=B4k0JIEiafbK^5nLl`6-9^i0`Wx8hi3QbI8u{!0&2hT8lO zUZ3kKb$7ONVfKBEB6XhSDR=5zm( z!#(VR=TUIqAO|2!4S+3#x_=x@_qGJpzIMMz#PRCUuVdh=kq^2`cc4p_4&IAt{KoS{ zl}=Tq=hWVR@R^95`sj~QLFsDeZ!mv3&J+@k9!Y{JpSrhnkS5^LM%G2&Xwm!F@6#-* z9$hH6qIPe~yCPyd@zL<$O{y~f`GcSJxw1}zXf zVh071eeJ0>WM7-qhQK}d^iyl@wT5gDBFCi;0fLi0IYR7d=wTQPKk2*#Lxi4FE(YRF zd~g)kM+k#`J4WE;>&n`MkszyE5Of(5N#9^D>I~5cpSa+`zP*A8ct2W|Q;uQqoj-(sV%z1_EHGv7$UjPl7gMG z^CaRFzEkpcDom6Do!om#BvNu;x=Av8DoLF0{rNxZCrWO;BuQ-ND+OMcTsgW^3hOPo zRY>?^DJZm|J+m8JeVAIB58GX!-+(2 z>a5!{g1kjYX5H8{avqyjOkIaD|i85;u%jH}VCN zOfdfIlgK=R?=r@1f00}uvG&WQexAnH#D1PZrA`ApD@dxl&g?WqJkam3j|&o7U{9uy zaA&OG6qcSzLf}{Id+g;*@{9*3TdxOLr%V#gj8loTv<$eBUCkuzr5zy6%sY!j$z&Sq zkwu2eWFu#YV>MaCS(k||8-CcCMMit<;B<(xUY%s6uF)`~39!KWO@Sg#7O?44NKYLn z8$;QKDWp(3iraxS7Lg4bIa$H_Ws~+gWGv43tT3C5mI^>;vSZm~sE(5jQOuM>l4Tf^ z%OU+0IGTN!Lxyx&jpL#H;Ff^F`Gc)X;5aV&ABP)1@cHcgO zv=^N+GIHs@BLBL~S)`i7q1*GxF*BLSzFI+|Q2nA*J}c!`SEZV$RR2(_50&chN-~sG zF`o)>R@HT_Am;+f+stDf8RaJ5yTb5GI<{~fF-iOuI+104O8nX8bvQ?yVq`s}qS@6N zY;Aqk6F2r?BQbeZ#bN`8oD*3E2_u`c9&fyAR=J+c3?GWL|N9#Sn>+aUm7+IW^C<~o zHCKr^F!NQ1XEXEK zNaA9eHQ;fuC2?gaPC{Z)?t&svDeQ%f_&wWdws99GQo(L-M3u3@Eh(nOpZN}l` zL)IRQq&*wC8A`6PUA!er&m@&>=oYj(v)Nn7AhE@T73?69?9vwK6j)RZi4u)&tl=Dq z=zo#L|zW8t5{5Pl!17?P|QlJ^-5>CDPM zBQw?gXv=yM$ll)oQ9l;)IYiB@@8_^@4co|D@3K>$!=hz+#iHa|Vu|Hn3p}w2!cZ#{E+--JajmJn>;C0Yx_-N&b&~H2#Y|aM=bxSRY4|K<#)7Z*k50062 z+X^eT%E4g|Yn1fzVI#H?U0u^wGLVqAtmAgf@o4KDZz!Rfx1CtT{d!iv9q+yVa$+qJ z#X!7|mE6+R!K*vi$U00flg;H-GoSMy_I(|R7MuIAO`pTjTMVpV3xY6Y2fz!ieEu`Y zVs?24g3;{u_7~(KS;!uJ0qO5p_)ap2_^{dNW3TUo`YQI#PMJ>$TC*E#vkPnZgpzC5 zfhT2SaZ#M?~g86>Q zwHx?KXk))?Y{t@3+-!GZvw`Qz4Ds4i8NyEPLJCB%h&|X7dtrD_=5-0LsA+ouyRqea zkQw}CV`PrZ_?m_8#jtqM>?JeB9fR2By(E%MXQ%ffHKxE%JXw3y!@!5^)q1Q`{(2GI zdKlOuA0_Dy1HT*AA!9t z@C^jztpIiP5i&!H#(I?4>1#0Q-a6vK5|2W-J7EpGFjxeee-!quXa7D5qX~04hSp5h z{um4jl34R@@XTYoj={rW(4EPC0BP;RLjbjoNDKqnsPWE3APqPeJK{GVNRx)=bs#Bt zH#>MXaH&?r9?48u4^Mf1;}*%5d_^XU3FPhlScn4%OIc4Mz4$e(vRn>gf%Iel{1`8W z4s6hI#F(=4$H`20ett2+04IE+V=Fe0Ao4n!dIElJ@aMixU^`BbKH}jetmOn0uLx9} z-REogOBbLx`?ar$#rQsqP4H5mZ2pcye(MO!YTQB(}f;N(6oWv^P7haw$ zoNuI=dx)O>2Yq6Ss_&PR2;Mo??G%D{hR@xfC!6(WkOJ<39gcYbBu#_3;w99qL1KXv zU^ItRA0RavWE7Ajd~|W}WN|4C@{d430zUUBO!g?iOU4H5a+BDi24qPQTZ77re?zYL z{T$+UT=DxIcB27)U&!X42InI7@6*Vx)y(A#cXlvKID>7+Xliv>B5OKB`jA^J?i(=J zJMzCF76bp1T~Yr&BVUtXT*N40dGZb1cql{(%fN5pMm<~kEk-l4Q|ILB{I~oy=E#2A zTH+!$s)UlP;8XzktR(G;oQr_Y#y$VL$PzLDnTUm{`JPGJ`F=2&2wjBfgB! zi@kplCNcKIWo$DCar2~XGgFjpCiV)n{hQ6c0z;Rv%U7Un0kd5p;l9;8_?nem!#aIO z{6%Ak5}g^}5sMf9NrGbYhgd>-CC0Jr{C9Y-#jx=2q4o<_{ylPdFZ3Bhcn%Lg1JaD^ zEk~v`0;y<4>^Cm_DC^+4$E7sLUqA#_`5_7K7KxKnil(yz5dOm@MM2R*{;e8Pz7;`3 z=*i~%K;p(XYrydkoQ8?>bD{FynFeH*26>q)*C1s;mTHi9*u5XH(HNQ32rtyIIgQAV zotF`tbq#pu*EEs@@$x$MeIt_MBqLYBRKi}miU^!ym1wa`SHP?Lk(iKB5kHb8q&u&= zuy21vIvjCgNl%atDL?T&Bb24t@LoOj6B#VF$UP=jtrzub&kVNi8kvQxk>!W{jF?*# z`Y5MyMRXnNCn(Ut>wq#9`nelC^PH8THs8Qdnd(rzn=n*cxknvJ>6yU-Zel1^e#cGd zn#Ra2s4q}dZpF|4#crxf^KGasQB`ia4V6otR;l#NV9V}6Wr-r+?k-d=Q|NV^u3-1? zk|pf@A4ylX_7_ad?`Kev_du=UR5hoJ*Fl9fgId9`M-c#%Bee?68``-;~uCIPBn4r38(U!K`m|pm2e-1UHlC%tcScg z@mF*#_!HCxPW{fQ=O2J7dI;)UPW=}Y4)T~l$lLd^_r3TC^K1AGYR22JW!!y429soY zeu(@?8#3+iW6Tg7UD>q1pk>7Gpss@g-Ku5u6KFZ{yIsrGC(trk(UQrvoJY)0|3;<^@Q^v73bWr%EBxbV~FW5Jl9s-Fj?6&0+lTY+@_UAn$%SfR{(uW~gY`gAdi~yu|_5-_cuxt)6d* zd~3wbI6gq7;F|@<7HtNyPJ{FSV#EhGzEdkwsX+MWTnCZ`q&w6)kRl-b;S!2esTEKV zH?9?01!RJ{<0?!a07*l?Ls0{edc5--Qg?tf;KbyZh9?e%6Ewqz07=mpo#2MEOtpro zH<&Ut!w&({sG6r3^gIy$U`%x$xj>R&pJVu?K;mT+%_`4F9BI{@k+EP_MwY;)`-)!H zE$F(Sna^$@%^Jgg0OAN#Mz;Lrg>XR=mS4fcjknqCh8g(%3XZ@IBpOIO_#ECGZBZ{_ z_!(50;WQaBKPC1G5F7=bLf!|G1O!1>rD|ATKQRiQYO_&U@1sAhH6-{A;==r_mvYlI z2D{*cV6|rAen8e~CLRL>r`4y%=>|mpwOQ-P79d(%CQJmxC+P^uJRsGr2BBA2!Fli~ zfqW_VrR;*2ku{pIy#t;!P1bB@8UCVww;h_9906O2M)_SJ^-vBF{&@+%Uz?qc@4wkb ze=*#u!;-7fOx%Z`x9}+JoH7Ghrg242ApF+W5xaq04~k=!)6rU|;aLDgn*$YAKo$+t zW+2T7zC-msAQc)1o(011k{vt`flSjF?T2${riLdR$WaZF?1^Q^&*?nbl!O}rre@9d zu^32&CK6>p>NPI@5J;wG_+3EOY5e*X5PVK~%ILp5@#FU$n%TSIeuZx_j$Cdd-?%(2 z){XOMR1X7UZ1qsql-Y&+ESjV-`X%rbXpCk+yv&-}Z)9f!v0`?ihd++R+5qIJCeJPd z;kTKN7#Og;8#Q*Bfz(5f!@a$MOw-KR0;E7=>GM`VnXS{|hU5ZC(imS1q!)S|!+!vz zQ4?PN<-RuG4gh%*pu?ccK!RGQku5I{B*g-aMeevg5uh6X)HDeI(x{n7B#>(KI}92D zq(WoR3qZ7sR0^mI6JFIh!iqgp)s>^a|@t$hsLoLj0KBPLq6crngDJFlBuz4 z7Z4%*=~vV-AX_z-wsP8gwvlK+Z>KgyCr2=cREDi8`ZQvErP#)+eWRA^>W2*hmF_}&WW4M;l7#3pem#U?d~Gl4)zusUok0b~ZG##K$N?wa9Of+t8b`!zuL_X3W=8h|uv=K4L5 z1sW4?1L2p`E^K9}*r8_&niDh(fw(TyYeLZjNQGwTK|q4oAE9D+yKx}R8rS6jF=`YP z067}QQo_WrZm)t~py{mw!Z$yMKeho$YxM{3J;L4!!@@m_jv$Tj4In8Rzr0rC8SE>&zf5R1mr)oi>OmL5h&P^*{o<`+&c%7vw^toHx9!hdfCx2ozI zAhk^6uJ3_VYa($M2>*XN4tF`>mX$w_1PQVJA5a328jV;okOmaT@Pp7wfg*=nCIea4 zYBV2Y1`x-KPx-`v7`IN9^DGX==Ec3}uxK^J_~SroIHED=5Rit}IAz#%YgB&^o@NMg z?Y!XsTLVeac<5m;Hm}B3tJVJlBur~XxR^J7a#x@c!~Z%ES~NTfKvFcxH3~?RY><8U zsX&Yx6PE(9*0;`s5B33|9Mq1OH2`tAk@NhQE7GhmCtP!;X-xD1lBD5j&v_v2SaLmq ztj^KQV+?1~h)n^~pyA2qNNYIq3UiUJ*aS2)TL_*Kph|v}*QG~^WzKbX;zSboKUAp9 A`~Uy| -- 2.47.0 From f4de9cf8bd9806f3312402d33b23fd6a047057fe Mon Sep 17 00:00:00 2001 From: branco-g Date: Fri, 25 Oct 2024 15:45:38 +0200 Subject: [PATCH 5/7] optimisation et commentaires --- pendu.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/pendu.c b/pendu.c index 1fd6a81..c617e02 100644 --- a/pendu.c +++ b/pendu.c @@ -28,6 +28,7 @@ void display_hangman(int tries) { } // Function to randomly choose words and concatenate them to create a puzzle word +// Ensures that the maximum word length is respected by avoiding overflow with strncat void choose_words(char *chosen_word, int max_length) { int total_length = 0, used[MAX_WORDS] = {0}, word_index; chosen_word[0] = '\0'; @@ -35,24 +36,34 @@ void choose_words(char *chosen_word, int max_length) { // Select words until the maximum word length is reached or exceeded while (total_length < max_length) { word_index = rand() % MAX_WORDS; - if (!used[word_index] && total_length + strlen(words[word_index]) + (total_length > 0 ? 1 : 0) <= max_length) { - if (total_length > 0) { strcat(chosen_word, " "); total_length++; } - strcat(chosen_word, words[word_index]); - total_length += strlen(words[word_index]); + int word_length = strlen(words[word_index]); + int additional_space = (total_length > 0 ? 1 : 0); // Space between words if needed + + // Ensure word fits within the remaining length + if (!used[word_index] && total_length + word_length + additional_space <= max_length) { + if (additional_space > 0) { + strncat(chosen_word, " ", max_length - total_length - 1); + total_length++; + } + strncat(chosen_word, words[word_index], max_length - total_length - 1); + total_length += word_length; used[word_index] = 1; - if (total_length == max_length) break; } - // Check if all words that could fit are used + // Break if no other words can fit in the remaining space int all_used = 1; for (int i = 0; i < MAX_WORDS; i++) { - if (!used[i] && total_length + strlen(words[i]) + 1 <= max_length) { all_used = 0; break; } + if (!used[i] && total_length + strlen(words[i]) + 1 <= max_length) { + all_used = 0; + break; + } } if (all_used) break; } } // Function to play the hangman game +// Displays the game state and checks if each guess is correct or already revealed void play_game(const char *chosen_word, int word_length, int letters_to_guess) { char guessed[word_length + 1]; int tries = 0, guessed_correctly = 0; -- 2.47.0 From 245f56be9c6c32c04591f4fb80aebbff89b47652 Mon Sep 17 00:00:00 2001 From: branco-g Date: Fri, 25 Oct 2024 15:48:43 +0200 Subject: [PATCH 6/7] faire la mr --- pendu.c | 63 ++++++++++++++++++++++++++++++++------------------------- 1 file changed, 36 insertions(+), 27 deletions(-) diff --git a/pendu.c b/pendu.c index c617e02..0b51718 100644 --- a/pendu.c +++ b/pendu.c @@ -9,9 +9,20 @@ // Array of words used in the game const char *words[MAX_WORDS] = { - "programmation", "ordinateur", "langage", "jeu", "algorithmique", - "fontainebleau", "koala", "anticonstitutionnellement", "code", - "canard", "gyroscope", "periclitation", "susurrer", "eclesiastique" + "programmation", + "ordinateur", + "langage", + "jeu", + "algorithmique", + "fontainebleau", + "koala", + "anticonstitutionnellement", + "code", + "canard", + "gyroscope", + "periclitation", + "susurrer", + "eclesiastique" }; // Function to display the hangman figure based on the number of tries @@ -28,7 +39,6 @@ void display_hangman(int tries) { } // Function to randomly choose words and concatenate them to create a puzzle word -// Ensures that the maximum word length is respected by avoiding overflow with strncat void choose_words(char *chosen_word, int max_length) { int total_length = 0, used[MAX_WORDS] = {0}, word_index; chosen_word[0] = '\0'; @@ -36,50 +46,48 @@ void choose_words(char *chosen_word, int max_length) { // Select words until the maximum word length is reached or exceeded while (total_length < max_length) { word_index = rand() % MAX_WORDS; - int word_length = strlen(words[word_index]); - int additional_space = (total_length > 0 ? 1 : 0); // Space between words if needed - // Ensure word fits within the remaining length - if (!used[word_index] && total_length + word_length + additional_space <= max_length) { - if (additional_space > 0) { - strncat(chosen_word, " ", max_length - total_length - 1); - total_length++; + if (!used[word_index] && total_length + strlen(words[word_index]) + (total_length > 0 ? 1 : 0) <= max_length) { + if (total_length > 0) { strcat(chosen_word, " "); + total_length++; } - strncat(chosen_word, words[word_index], max_length - total_length - 1); - total_length += word_length; + + strcat(chosen_word, words[word_index]); + total_length += strlen(words[word_index]); used[word_index] = 1; + if (total_length == max_length) + break; } - // Break if no other words can fit in the remaining space + // Check if all words that could fit are used int all_used = 1; for (int i = 0; i < MAX_WORDS; i++) { - if (!used[i] && total_length + strlen(words[i]) + 1 <= max_length) { - all_used = 0; - break; - } + if (!used[i] && total_length + strlen(words[i]) + 1 <= max_length) { all_used = 0; + break; } } - if (all_used) break; + if (all_used) + break; } } // Function to play the hangman game -// Displays the game state and checks if each guess is correct or already revealed void play_game(const char *chosen_word, int word_length, int letters_to_guess) { char guessed[word_length + 1]; int tries = 0, guessed_correctly = 0; // Initialize guessed word display with underscores - for (int i = 0; i < word_length; i++) guessed[i] = (chosen_word[i] == ' ') ? ' ' : '_'; + for (int i = 0; i < word_length; i++) + guessed[i] = (chosen_word[i] == ' ') ? ' ' : '_'; guessed[word_length] = '\0'; // Main game loop, stops if max tries are reached or the word is guessed while (tries < MAX_TRIES && guessed_correctly < letters_to_guess) { - printf("\nWord to guess: %s\n", guessed); + printf("\nMot à deviner : %s\n", guessed); display_hangman(tries); // Get a letter guess from the player char guess; - printf("Enter a letter: "); + printf("Entrez une lettre : "); scanf(" %c", &guess); int found = 0, already_revealed = 0; @@ -98,14 +106,15 @@ void play_game(const char *chosen_word, int word_length, int letters_to_guess) { } // Increment tries if the letter was not found and not already revealed - if (!found && !already_revealed) tries++; + if (!found && !already_revealed) + tries++; } // Display win or lose message based on game outcome if (guessed_correctly == letters_to_guess) - printf("Congratulations! You've guessed the word: %s\n", chosen_word); + printf("Félicitations ! Vous avez deviné le mot : %s\n", chosen_word); else { - printf("Sorry, you've lost. The word was: %s\n", chosen_word); + printf("Désolé, vous avez perdu. Le mot était : %s\n", chosen_word); display_hangman(MAX_TRIES); } } @@ -116,7 +125,7 @@ int main() { int max_word_length; // Prompt user for maximum word length for the puzzle - printf("Enter the maximum word length to guess: "); + printf("Choisissez la taille maximum du mot à deviner : "); scanf("%d", &max_word_length); // Select a word within the specified length -- 2.47.0 From 967494d328aed9432a90f01b61452ea3f49a5c5e Mon Sep 17 00:00:00 2001 From: branco-g Date: Fri, 25 Oct 2024 16:19:50 +0200 Subject: [PATCH 7/7] mis a jour --- pendu.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pendu.c b/pendu.c index dab3eda..831eb4f 100644 --- a/pendu.c +++ b/pendu.c @@ -142,10 +142,10 @@ void play_game(const char *chosen_word, int word_length, int letters_to_guess) { score = calculate_score(mistakes, start_time); //calcul le score en fonction des erreurs et du temps écoulé // Display win or lose message based on game outcome - if (guessed_correctly == letters_to_guess) + if (guessed_correctly == letters_to_guess) { apply_bonus(&score, tries); printf("Félicitations ! Vous avez deviné le mot : %s\n", chosen_word); - else { + } else { printf("Désolé, vous avez perdu. Le mot était : %s\n", chosen_word); display_hangman(MAX_TRIES); } -- 2.47.0