What Does the Cow Say? What Does the Cow Say?
Simple
EN French RU

Let cow say! - Les vaches parlent !

Votre vache est jeune et ne peut utiliser que le vocabulaire que vous lui avez appris. Non seulement votre vache parle, mais elle présente ses paroles au fameux format Tux (wiki/Cowsay) si on le lui demande gentiment.

Un texte vous est donné, et votre fonction doit mettre le discours de votre vache au format "cowsay" ("parole de vaches"). Décrivons les règles de cette mise en forme :
  • La vache est toujours la même, seule sa citation change.
  • Des espaces multiples dans une ligne sont remplacés par un seul.
  • La bordure supérieure est constituée de caractères "_" (souligné - "underscore"). Elle commence avec un seul espace et se termine avant la colonne de bordure.
  • Chaque ligne de la citation est constituée des parties suivantes : bordure de citation(1), espace(1), ligne(1-39), espace(1), bordure de citation(1).
  • Si le texte fait moins de 40 caractères, il tient dans une seule chaîne de caractères (string). Cette chaîne est entourée par <>.
  • Si le texte fait 40 caractères ou plus, il faut le scinder selon les règles suivantes:
    • La taille...
    • Bordures des lignes du milieu: ||
    • Bordures de la dernière ligne: \/
  • La bordure inférieure est constituée de signes moins "-". Elle a la même longueur que la bordure supérieure.
  • Le programme pour la console "cowsay" a un comportement étrange dans certains cas spéciaux, qui ne seront pas testés ici.
     _________________________________
    / Dog goes woof                   \
    | Cat goes meow                   |
    | Bird goes tweet                 |
    | And mouse goes squeek           |
    | Cow goes moo                    |
    | Duck goes quack                 |
    \ And the solution will go to you /
     ---------------------------------
            \   ^__^
             \  (oo)\_______
                (__)\       )\/\
                    ||----w |
                    ||     ||
    
What does the cow say? (Que dit la vache ?)

Input: Un texte (string).

Output: Le résultat tel qu'il apparaît dans la console.

Conseil: Lire la documentation Python (2.7, 3.3) à propos des style de formatage (str.format and %). Bien remarquer le r avant la chaîne de caractères. C'est un "raw string" et l'interprétation des séquences d'échappement est spécifique.

Exemple:

cowsay('Checkio rulezz') == r'''
 ________________
< Checkio rulezz >
 ----------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
'''
cowsay('A longtextwithonlyonespacetofittwolines.') == r'''
 ________________________________________
/ A                                      \
\ longtextwithonlyonespacetofittwolines. /
 ----------------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
'''

cowsay('Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.') == r'''
 _________________________________________
/ Lorem ipsum dolor sit amet, consectetur \
| adipisicing elit, sed do eiusmod tempor |
| incididunt ut labore et dolore magna    |
\ aliqua.                                 /
 -----------------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
'''

    

Application: Les "Cowsays" d'origine sont écrits dans le langage de programmation Perl, et sont donc facilement adaptables aux tâches système sous Unix. Ils peuvent servir à avertir les utilisateurs que leur répertoire est plein, qu'ils ont reçu un mail, etc... Vous allez à présent pouvoir transmettre vos propres messages dans cette présentation (classique sous unix)! Cette mission vous apprend à préparer et formater du texte pour une console d'affichage.

Préconditions: 0 < len(text) < 858;
text ne contient pas uniquement des espaces;
text ne contient que des lettres ASCII, des chiffres et caractères de ponctuation.

You should be an authorized user in order to see the full description and start solving this mission.