Ceci est une ancienne révision du document !
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Table des matières
Système d'affichage
Fichier alphabet
Vous connaissez les grands afficheurs de gare ou d'aéroport qui affichent les lettres avec de gros pixels. Nous voulons automatiser ce principe.
Par exemple, on voudrait afficher le A de cette façon :
■■■ ■ ■ ■■■■■ ■ ■ ■ ■
On écrira donc l'affichage du A dans un fichier texte. Mais on ne souhaite pas utiliser plusieurs fichiers pour tout l'alphabet, alors on place toutes les lettres A-Z dans le même fichier texte, à la suite, en ajoutant un caractère joker.
■■■ ■ ■ ■■■■■ ■ ■ ■ ■ ■■■■ ■ ■ ■■■■ ■ ■ ■■■■ ■■■■ ■ ■ ■ ■■■■ etc. ■■■■■ ■ ■ ■ ■■■■■ ■■■ ■ ■ ■ ■ ■
On sait qu'il y aura toujours exactement 27 caractères (lettres plus joker) et que toutes les lettres utilisent le même nombre de pixels horizontalement et verticalement.
Le joker est utilisé chaque fois que l'on rencontre un caractère non prévu.
Affichage
On se donne un message composé de majuscules sans accent et d'espaces. On souhaite afficher le message en utilisant l'alphabet donné dans le fichier.
Par exemple, le message "BONJOUR" donnerait la réponse :
■■■■ ■■■ ■ ■ ■■■■■ ■■■ ■ ■ ■■■■ ■ ■ ■ ■ ■■ ■ ■ ■ ■ ■ ■ ■ ■ ■■■■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■■■■ ■ ■ ■ ■ ■ ■■ ■ ■ ■ ■ ■ ■ ■ ■ ■■■■ ■■■ ■ ■ ■■ ■■■ ■■■ ■ ■
On souhaite écrire ce message dans un fichier texte.
À faire
Écrire une fonction affichage(alphabet:str, message:str, dest:str) qui reçoit les arguments
alphabet, nom du fichier texte contenant l'alphabetmessage, chaîne à représenterdest, nom du fichier texte à créer
La fonction lit l'alphabet à utiliser, écrit le message en utilisant cet alphabet, écrit le résultat dans le fichier dest.
Pour vos essais, vous pourrez utiliser le fichier alphabet.txt mais pensez à en créer d'autres !
Un peu d'aide
Supposons que l'on veuille afficher "BONJOUR". On va devoir à un moment où à un autre récupérer l'affichage pour "B", pour "O", etc.
L'affichage de "B" (et des autres) se compose de n = 5 lignes – C'est un exemple, cela pourrait être autre chose que 5 !.
Donc première question : comment obtenir les lignes de l'affichage de "B" (par exemple) ? Et même mieux : comment obtenir chaque ligne de l'affichage de tel caractère (par exemple, la ligne 2 de B) ?
Quand vous aurez réglé cette question, il ne restera plus grand chose à faire. Vous devez donc réaliser cette fonction :
def get_car_line(car:str, line:int, alphabet:list) -> str:
'''
car: caractère demandé.
line: indice de la ligne d'affichage demandée
alphabet: tableau contenant l'alphabet
renvoie le contenu de alphabet correspondant au caractère demandé et à ligne d'affichage demandée
'''
Quelques remarques :
- Dans l'exemple,
alphabetaurait la forme :
alphabet = [ ' ■■■ ', '■ ■', '■■■■■', '■ ■', '■ ■', '■■■■ ', '■ ■', '■■■■ ', '■ ■', '■■■■ ', ... ]
- Le caractère doit être un caractère dans A–Z. S'il n'y est pas on considère que l'on demande le joker. Il sera utile d'associer un indice à chaque caractère : A → 0, B → 1, … Z → 25 et pour les autres → 26 (joker)
- Chaque caractère compte
nlignes et l'alphabet a 27 caractères.alphabetcompte donc exactement27 * nlignes et il est donc possible de déterminernconnaissantalphabet. - Évidemment,
linedevrait toujours vérifier0 <= line < n - Pour faire la fonction il faut raisonner ainsi : je demande la ligne 2 (
line == 2) pour le caractère"B"(donc associé à un indice1) et dans mon exemple je peux déterminer quen = 5. quel est le numéro de la ligne demandée dansalphabet? C'est la ligne 7, la fonction devrait renvoyeralphabet[7]dans ce cas.
Par quel calcul trouver ce 7 ?
Dernière chose, pour afficher le message (par exemple "BONJOUR", il faut énumérer les caractères du message et les lignes d'affichage (par exemple ici 5 lignes puisque chaque caractère a 5 pixels de haut). Comment articuler ces deux énumérations ?
