CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[OCAML] combinaison de liste

SwordQuardo
SwordQuardo
Niveau 5
30 novembre 2013 à 20:45:35

Bonsoir,

je veux faire une fonction qui, par exemple, à partir de la liste ['a';'b';'c'] me renvoie toute les combinaisons possibles pour les valeurs 0 et 1:

cela donnerait la liste:
[(('a',0),('b',0),('c',0));
(('a',0),('b',0),('c',1));
(('a',0),('b',1),('c',0));
(('a',0),('b',1),('c',1));
(('a',1),('b',0),('c',0));
(('a',1),('b',0),('c',1));
(('a',1),('b',1),('c',0));
(('a',1),('b',1),('c',1));]

Ou encore, à partir de la liste ['a';'b'] me renvoie la liste
[(('a',0),('b',0));
(('a',0),('b',1));
(('a',1),('b',0));
(('a',1),('b',1));]

Mais j'y arrive pas...
Je n'arrive même pas à trouver le type de la fonction..

char list -> (?) list

Ce qui est a l'intérieur change suivant le nombre de caractere dans la liste passée en paramètre..

Quelqu'un à une idée svp?

Bigloo
Bigloo
Niveau 10
01 décembre 2013 à 13:34:33

Tes exemples sont un peu faux (c'est pour ça que tu n'arrives pas à trouver le type, sans doute) : tu ne peux pas avoir un n-uplet de taille variable selon les différents appels de ta fonction (parce que le nombre d'éléments du n-uplet doit être écrit dans le type, donc il doit être indépendant de la valeur des arguments que tu passes à ta fonction).

Par conséquent, il faut utiliser une liste à l'intérieur d'une autre liste : tu pars d'une char list, et tu produis une char * int list list.

L'idée pour coder cette fonction est de raisonner récursivement : tu sais produire le résultat pour une liste de un seul élément, n'est-ce pas ? C'est simplement [[('a', 0)]; [('a', 1)]]. Partant de là, est-ce que tu peux trouver comment rajouter le 'b' à tous les éléments de cette liste ?

SwordQuardo
SwordQuardo
Niveau 5
01 décembre 2013 à 15:08:43

Merci beaucoup, j'ai trouvé comment faire^^ [2 jours que j'essayais XD]

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment