Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- // Lecture de la largeur d'une lettre en art ASCII (L) et de sa hauteur (H)
- fscanf(STDIN, "%d", $L);
- fscanf(STDIN, "%d", $H);
- // Lecture de la ligne de texte à afficher en art ASCII (T)
- $T = stream_get_line(STDIN, 256 + 1, "\n");
- // Conversion du texte en majuscules pour simplifier les correspondances en art ASCII
- $T = strtoupper($T);
- // Lecture des caractères de l'alphabet en art ASCII
- for ($i = 0; $i < $H; $i++)
- {
- $ROW = stream_get_line(STDIN, 1024 + 1, "\n");
- $output = '';
- // Parcours des caractères du texte à afficher
- for ($j = 0; $j < strlen($T); $j++) {
- $letter = $T[$j];
- // Détermination de la plage de caractères correspondant à la lettre
- $alphaBeginning = ctype_upper($letter) ? 'A' : 'a';
- $alphaEnding = ctype_upper($letter) ? 'Z' : 'z';
- $start = 0;
- if (ord($letter) < ord($alphaBeginning) || ord($letter) > ord($alphaEnding)) {
- $start = ((ord($alphaEnding) - ord($alphaBeginning)) + 1) * $L;
- } else {
- $start = (ord($letter) - ord($alphaBeginning)) * $L;
- }
- // Ajout de la partie correspondante de la ligne ROW à la sortie
- $output .= substr($ROW, $start, $L);
- }
- // Affichage de la ligne
- echo($output . "\n");
- }
- /**
- * Objectif
- * Dans les gares et aéroports on croise souvent ce type d'écran :
- *
- * Vous êtes-vous demandé comment il serait possible de simuler cet affichage dans un bon vieux terminal ? Nous oui : avec l'art ASCII !
- *
- * Règles
- * L'art ASCII permet de représenter des formes en utilisant des caractères. Dans notre cas, ces formes sont précisément des mots. Par exemple, le mot "MANHATTAN" pourra être affiché ainsi en art ASCII :
- *
- * # # # ### # # # ### ### # ###
- * ### # # # # # # # # # # # # # #
- * ### ### # # ### ### # # ### # #
- * # # # # # # # # # # # # # # # #
- * # # # # # # # # # # # # # # # #
- *
- * Votre mission : Écrire un programme capable d'afficher une ligne de texte en art ASCII dans un style qui vous est fourni en entrée.
- *
- * Entrées du jeu
- * Entrée
- * Ligne 1 : la largeur L d'une lettre représentée en art ASCII. Toutes les lettres font la même largeur.
- *
- * Ligne 2 : la hauteur H d'une lettre représentée en art ASCII. Toutes les lettres font la même hauteur.
- *
- * Ligne 3 : La ligne de texte T, composée de N caractères ASCII
- *
- * Lignes suivantes : La chaîne de caractères ABCDEFGHIJKLMNOPQRSTUVWXYZ? représentée en art ASCII.
- *
- * Sortie
- * Le texte T en art ASCII.
- * Les caractères de a à z seront affichés en art ASCII par leur équivalent en majuscule.
- * Les caractères qui ne sont pas dans les intervales [a-z] ou [A-Z], seront affichés par le point d'interrogation en art ASCII.
- *
- * Contraintes
- * 0 < L < 30
- * 0 < H < 30
- * 0 < N < 200
- *
- * Exemple 1
- * Entrée
- * 4
- * 5
- * E
- * # ## ## ## ### ### ## # # ### ## # # # # # ### # ## # ## ## ### # # # # # # # # # # ### ###
- * # # # # # # # # # # # # # # # # # ### # # # # # # # # # # # # # # # # # # # # # # # #
- * ### ## # # # ## ## # # ### # # ## # ### # # # # ## # # ## # # # # # # ### # # # ##
- * # # # # # # # # # # # # # # # # # # # # # # # # # # ## # # # # # # # # ### # # # #
- * # # ## ## ## ### # ## # # ### # # # ### # # # # # # # # # ## # ### # # # # # # ### #
- *
- * Sortie
- * ###
- *
- * #
- *
- * ##
- *
- * #
- *
- * ###
- *
- * Exemple 2
- * Entrée
- * 4
- * 5
- * MANHATTAN
- * # ## ## ## ### ### ## # # ### ## # # # # # ### # ## # ## ## ### # # # # # # # # # # ### ###
- * # # # # # # # # # # # # # # # # # ### # # # # # # # # # # # # # # # # # # # # # # # #
- * ### ## # # # ## ## # # ### # # ## # ### # # # # ## # # ## # # # # # # ### # # # ##
- * # # # # # # # # # # # # # # # # # # # # # # # # # # ## # # # # # # # # ### # # # #
- * # # ## ## ## ### # ## # # ### # # # ### # # # # # # # # # ## # ### # # # # # # ### #
- *
- * Sortie
- * # # # ### # # # ### ### # ###
- * ### # # # # # # # # # # # # # #
- * ### ### # # ### ### # # ### # #
- * # # # # # # # # # # # # # # # #
- * # # # # # # # # # # # # # # # #
- */
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement