Aller au menu - Aller au contenu

[Caml] Opération sur liste de liste

Pour accéder à cette section
Connectez-vous !
connexion_rpx

Résolu Le problème de ce sujet a été résolu

Page 1 
Auteur Message
1 visiteur sur ce sujet (1 Anonyme)
Page 1 
Hors ligne MatteW66 # Posté le 09/02/2012 à 22:08:49

Bonjour à tous,
Je suis en train de m'embrouiller en voulant faire une opération sur une liste de liste. Mon problème : faire "glisser" les listes; je m'explique :
par exemple : [[1;2;3];[4;5;6];[7;8;9]] devient [[4;5;6];[7;8;9];[1;2;3]]

Code : OCaml
1
2
3
4
5
let test l = let ll = [[]] in
  match l with
  x::[] -> [x]::ll
  | x::xs -> [[xs::ll]@[x]]
  | _ -> failwith "erreur";;


Alors bien évidement, ceci ne marche pas, mais c'est pour montrer un peu où je veux en venir.
Merci beaucoup de votre aide.
Publicité # Posté le 09/02/2012 à 22:08:49

Hors ligne Dr.Appeltown # Posté le 09/02/2012 à 23:24:32
Avatar
Groupe : Bannis

Cette réponse a aidé l'auteur du sujet Cette réponse a aidé l'auteur du sujet
En réfléchissant un peu, tu te rendras compte que l'opération que tu veux faire n'est pas spécifique aux listes de listes. En fait, on peut imaginer une fonction plus générale, qui marche sur toutes les listes. C'est important, mine de rien, parce que ça veut dire que jusqu'à présent tu réfléchissais à ton problème en considérant les mauvaises choses : avec ce trop-plein d'informations, tu te concentrais sur les mauvaises idées, du coup ça te gênait pour réfléchir.

Pour bien écrire un programme fonctionnel, il faut séparer les idées de ton programme en plusieurs fonctions, aussi petites que possible. En l'occurrence, "faire glisser les listes", d'après ton exemple, c'est juste mettre le premier élément de la liste à la fin de la liste. Tu peux donc commencer par écrire une fonction qui, à partir d'un élément et d'une liste, place cet élément tout à la fin. Ensuite, tu peux utiliser cette fonction pour écrire ton programme, qui fera effectivement ce que tu veux.

Retour au forum "Autres langages, outils et approches" ou à la liste des forums

Pour accéder à cette section
Connectez-vous !
connexion_rpx