Rechercher : dans
Par :

Fonction inverse en scheme

Dernière réponse le 4 mar 2008 à 16:19:28 marina, le 3 mar 2008 à 21:49:11 
 Signaler ce message aux modérateurs

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 .

Configuration: Windows XP
Firefox 2.0.0.12

Meilleures réponses pour « fonction inverse en scheme » dans :
Trier un tableau sans utiliser la fonction sort VoirTrier un tableau sans utiliser la fonction sort D'abord on initialise une variable $max avec la 1ère valeur de tableau. Ensuite on va faire une boucle tant que le tableau contient encore des éléments. C'est avec la fonction splice qui a le rôle...
Rotation écran / Affichage inversé (90° ou 180°) VoirSi votre écran est inversé (rotation d'angle 90° voire 180°), ceci est dû : soit aux propriétés de votre carte graphique soit à une mauvaise manipulation sur le clavier Vérifier les propriétés de la carte graphique Cliquer avec le bouton...
[PHP] Fonction mail() VoirLa fonction mail() est bloquée chez certains des hébergeurs gratuits pour des raisons de sécurité (afin d'éviter le spam notamment), l'adresse ip de la machine qui a demandé le script sera alors indiquée dans le header 'X-MM-Mail-From-IP'. renseignez...
Télécharger MOREFUNC (Macro complémentaire EXCEL) VoirMorefunc est une macro complémentaire proposant 67 nouvelles fonctions de feuille de calcul pour Excel. Ces fonctions sont compatibles avec Excel 95 à 2007. Elles ne sont pas portables sur d'autres plate-formes que Windows, ni sur d'autres...
Serveurs proxy (serveurs mandataires) et reverse proxy VoirProxy Un serveur proxy (traduction française de «proxy server», appelé aussi «serveur mandataire») est à l'origine une machine faisant fonction d'intermédiaire entre les ordinateurs d'un réseau local (utilisant parfois des protocoles autres que le...
Javascript - Les fonctions VoirLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Cette notion de sous-programme est généralement appelée fonction...
PHP - Les fonctions VoirLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du...

1

amigo, le 4 mar 2008 à 00:43:51

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.

(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

Répondre à amigo

2

marina, le 4 mar 2008 à 00:47:16

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 .

Répondre à marina

3

 amigo, le 4 mar 2008 à 16:19:28

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

(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)

Répondre à amigo