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 :

À faire

Écrire une fonction ghostleg qui reçoit un nom de fichier et qui :

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