Je suis nouveau à Scheme et aujourd'hui j'ai rencontré le problème suivant que je n'ai pas pu résoudre. J'ai la représentation suivante pour les nœuds d'un arbre représentant un système de fichiers:Trouver un chemin Schéma
(contenu directory_name) pour les répertoires
nom_fichier pour les fichiers
(directory_name null) pour un répertoire vide
Par exemple, (» etc/"((" network/"(" interfaces ")))) est l'arbre pour le chemin etc/network/interfaces.
Ce que je dois faire est d'écrire une fonction qui prend comme arguments ce type d'arbre et un répertoire/nom de fichier et retourne le chemin, s'il y en a un. Si le répertoire/fichier n'existe pas, il renvoie #f.
Par exemple:
(define tree '("/"
(("etc/" ("network/" ("interfaces")))
("root/" null))))
Supposant nom est get-chemin de la fonction, en cours d'exécution (get-chemin arbre "interfaces"), il affichera "/ etc/network/interfaces". Tout ce que je veux est une idée, si vous pouvez m'en donner un, je serai reconnaissant.
Faites une profondeur première recherche. C'est à dire. si le premier élément de la structure de données correspond à ce que vous recherchez: renvoyez-le, sinon, recherchez chaque enfant tour à tour (récursivement). –
Comment voulez-vous gérer plusieurs chemins? Cela signifie que les 'interfaces' peuvent exister plusieurs fois dans des chemins différents:/dev/interfaces,/etc/interfaces. – GoZoner
@GoZoner Puisqu'il n'était pas spécifié dans le problème que je puisse avoir plusieurs chemins, je suppose qu'il n'y a pas de chemins multiples. – pixie