Indentation et construction de listes

youzirhin Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
 youzirhin -
Bonjour à tous,

Pourriez-vous me débloquer sur cet exercice:
Je dois faire cette liste (loop (cond ((not seau) (return))) (pop seau))en mode construction et avec une indentation correcte, chose sur laquelle je bloque.
Voici ce que j'ai fait mais c'est incorrect et il manque soit une parenthèse ou un nil:

(cons
  (quote loop)
   (cons
    (cons
      (quote cond)
      (cons
        (cons
          (cons (quote not) (cons (quote seau) nil) ) 
        (cons (cons (quote return) nil) ) nil)) nil) 
   (cons
      (cons (quote pop) (cons (quote seau) nil) ) nil) )


Merci pour vos réponses.>
A voir également:

2 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Déjà, l'indentation correcte tu en es loin, il te faudrait une ligne par "cons" et pour chacun de ses paramètres...

Pour ne pas te tromper, je te conseilles de faire la construction récursivement :

En gros tu as :

L = (loop (cond ((not seau) (return))) (pop seau))
L = (loop A B)

A = (cond ((not seau) (return)))
A = (cond C)

B = (pop seau)

C = ((not seau) (return))
C = (D E)

D = (not seau)
E = (return)

Donc tu commences ta construction avec L :

L:
(cons
	(quote loop)
	(cons
		A
		(cons
			B
			nil
		)
	)
)

Puis tu construis A et B.

A:
(cons
	(quote cond)
	(cons
		C
		nil
	)
)

B:
(cons
	(quote pop)
	(cons
		(quote seau)
		nil
	)
)

Et tu remplaces A et B par leur valeur dans L :

L:
(cons
	(quote loop)
	(cons
		(cons
			(quote cond)
			(cons
				C
				nil
			)
		)
		(cons
			(cons
				(quote pop)
				(cons
					(quote seau)
					nil
				)
			)
			nil
		)
	)
)

Tu continues ensuite en construisant C, D et E pour tout remplacer dans L :

(cons
	(quote loop)
	(cons
		(cons
			(quote cond)
			(cons
				(cons
					(cons
						(quote not)
						(cons
							(quote seau)
							nil
						)
					)
					(cons
						(cons
							(quote return)
							nil
						)
						nil
					)
				)
				nil
			)
		)
		(cons
			(cons
				(quote pop)
				(cons
					(quote seau)
					nil
				)
			)
			nil
		)
	)
)

Ce qui donne bien ce que tu veux, sans se prendre la tête...
0
youzirhin
 
Bonsoir KX,

Je vous remercie pour votre réponse et efficacité. Vous m'avez éclairée sur la construction de cette liste.Avec votre technique, la construction est plus évidente et facile. Merci encore pour votre aide.
0