Fonction inverse en scheme
marina
-
amigo -
amigo -
Bonjour,
je cherche à écrire en scheme une fonction qui prend en paramètre une liste et qui me renvoie la liste inverse , exemple :
(inverse '(1 2 3 4)) -> (4 3 2 1)
Je pensais utiliser plusieurs fonctions imbriquées , dont une qui parcours la liste et arrivée au dernier élément elle s'appelle elle meme , fait le chemin inverse et affiche les valeurs , mais l'algo n'est pas bon , quelqu'un a t'il une idée ?
merci beaucoup .
je cherche à écrire en scheme une fonction qui prend en paramètre une liste et qui me renvoie la liste inverse , exemple :
(inverse '(1 2 3 4)) -> (4 3 2 1)
Je pensais utiliser plusieurs fonctions imbriquées , dont une qui parcours la liste et arrivée au dernier élément elle s'appelle elle meme , fait le chemin inverse et affiche les valeurs , mais l'algo n'est pas bon , quelqu'un a t'il une idée ?
merci beaucoup .
A voir également:
- Fonction inverse en scheme
- Fonction si et - Guide
- Annuaire inversé - Guide
- Ecran inversé - Guide
- Annuaire inversé espagne - Forum Mobile
- Annuaire inversé sfr ✓ - Forum Mobile
2 réponses
Mon niveau de prog?
En fait j'avais pris des cours de programmation structurée au cours du CNAM pour etre analysre programmeur, mais en cours du soir c'est dur après une journée de travail. J'ai laissé tomber, mais j'ai quand meme garder le principe de monter un programme. Ensuite j'ai appris le Pascal, un peu le C sous UNIX, et le Visual Basic sous Windows pour développer des petite appli pour mon boulot. Je connais assez bien AutoLisp pour AutoCad, j'ai programmé pas mal de petits utilitaires pour mon bureau d'etudes; le scheme ressemble beaucoup au Lisp, mais il y a beaucoup de choses que je ne retrouve pas.
Voila pour les présentations
Et voila ton exo inverse. C'est tout pour aujourd'hui.
En fait j'avais pris des cours de programmation structurée au cours du CNAM pour etre analysre programmeur, mais en cours du soir c'est dur après une journée de travail. J'ai laissé tomber, mais j'ai quand meme garder le principe de monter un programme. Ensuite j'ai appris le Pascal, un peu le C sous UNIX, et le Visual Basic sous Windows pour développer des petite appli pour mon boulot. Je connais assez bien AutoLisp pour AutoCad, j'ai programmé pas mal de petits utilitaires pour mon bureau d'etudes; le scheme ressemble beaucoup au Lisp, mais il y a beaucoup de choses que je ne retrouve pas.
Voila pour les présentations
Et voila ton exo inverse. C'est tout pour aujourd'hui.
(define (inverse L)
(if (pair? L)
(reverse L)
#f))
;test
(inverse '(1 2 3 4 5 6)); -> (6 5 4 3 2 1)
(inverse ()) ; -> #f
marina
merci bcp amigo , mais malheureusement je n'ai pas le droit d'utiliser la fonction reverse , ça serait trop facile , donc si tu es là je te dis à demain .
Bonjour,
J'ai résolu ton exo avec la fonction do
Algo
Fonction Inverse L
Faire Tantque L non NULL
Li = Nouvelle liste (1er elem L + Li)
L= L - (1er elem)
Retourner Li
J'ai résolu ton exo avec la fonction do
Algo
Fonction Inverse L
Faire Tantque L non NULL
Li = Nouvelle liste (1er elem L + Li)
L= L - (1er elem)
Retourner Li
(define (inverse L)
(let ((L L))
(do ((L L (cdr L))
(Li '() (cons (car L) Li)))
((null? L) Li)))
)
;test
(define A '(0 1 2 3 4 5 6 7 8 9))
(inverse A); -> (9 8 7 6 5 4 3 2 1 0)
(define B '(a b c d e f g h i j))
(inverse B); -> (j i h g f e d c b a)