Table des matières
Ghostleg
Il s'agit d'un jeu - explications détaillées
Principe
On donne un motif comme celui-ci
A B C | | | |--| | | |--| | |--| | | | 1 2 3
On descend d'une lettre. Chaque fois que l'on rencontre --, on doit changer de colonne.
Dans cet exemple, A → 2, B → 1, C → 3
Dans ce cas la réponse attendue est la chaîne de caractères"BAC".
Les fichiers
Vous disposez de fichiers tests à télécharger, et la réponse attendue dans ces cas :
- ghostleg1.txt →
"BAC" - ghostleg2.txt →
"FBCEAD" - ghostleg3.txt →
"FEDABC"
À faire
Écrire une fonction ghostleg qui reçoit un nom de fichier et qui :
- ouvre le fichier correspondant – on suppose qu'il contient bien un un ghostleg
- résout ce ghostleg et renvoie la chaîne de caractère correspondant à la solution.
Aide
Ouvrir le fichier
f = open(filename, 'r', encoding='utf8')
content = f.read()
f.close()
lines = content.split('\n')
Suite à ce code, lines contient un tableau où chaque item est une ligne du fichier.
['A B C', '| | |', '|--| |', '| |--|', '| |--|', '| | |', '1 2 3', '']
Vous remarquez que la dernière ligne est vide. Cela peut arriver mais n'est pas certain. Cela dépend de comment à été écrit le fichier. On peut s'assurer que la dernière ligne n'est pas vide en supprimant toute dernière ligne qui serait vide :
while lines[-1] == '':
lines.pop()
La fonction pop a pour effet d'enlever le dernier élément.
Accéder à un item
Maintenant que nous disposons de lines, nous pouvons facilement consulter le contenu du fichier.
>>> lines[2][1] '-'
En effet, lines[2] correspond au contenu de la ligne d'indice 2, c'est à dire '|--| |'. Donc lines[2][1] est le caractère de rang 1 dans cette ligne : '-'.
Les différentes lignes
Dans le ghostleg, vous avez une ligne d'entête au début, les lignes de transition et à la toute fin une ligne de numéros qui ne sert pas à grand chose.
lines[0] # ligne d'entête lines[1:-1] # toutes les lignes sauf la première et la dernière lines[-1] # dernière ligne
