Questions / réponses

Posez ici vos questions aux enseignant.e.s et aux autres étudiant.e.s.

DSI introuvables

par Theo De Castro Pinto,

Bonjour,

Je suis en A2 et mon professeur de TD n'a pas reçu ma copie (le compte marqué sur l'enveloppe correspondait au nombre de copie donc a priori le problème ne vient pas de lui). Est-ce qu'un chargé de TD aurait vu ma copie ? Aussi, Sophie CANDAU est dans le même cas que moi, elle est en A2 aussi.

Cordialement

Correction du DS

par Jon Stark,

Bonjour,


Pourrions-nous avoir la correction du DSI de Mars 2018 ?


Car, nous n'avons, certes à ce jour, aucune correction d'exercices, aucune annale des années précédentes.

Il serait au moins pertinent d'avoir celle du DSI de Mars dernier, comme annoncé.


Merci.



fonction avl_insert

par Ranim Raji,

Bonjour,

Voici ma fonction "avl_insert" avec la fonction "avl_fix":

let avl_fix tree =
    match tree with
        Empty -> Empty
        |Bin (c, Bin (b, Bin(a, t1, t2), t3), t4) ->
            Bin (b, Bin (a, t1, t2), Bin (c, t3,t4) )
        |Bin (a, t1, Bin (b, t2, Bin (c, t3, t4) ) ) ->
            Bin (b, Bin (a, t1, t2), Bin (c, t3,t4) )
        |Bin (c, Bin (a, t1, Bin (b, t2, t3) ), t4) ->
            Bin (b, Bin (a, t1, t2), Bin (c, t3,t4) )
        |Bin (a, t1, Bin (c, Bin (b, t2, t3), t4)) ->
            Bin (b, Bin (a, t1, t2), Bin (c, t3,t4) )
        |_ -> tree

let rec avl_insert tree v =
    match tree with
        Empty -> Bin ((v, 1),Empty, Empty)
        |Bin ((x,m), g, d) when v = x -> Bin ((x,m+1), g, d)
        |Bin ((x,m), g, d) -> if v > x then Bin ((x,m), g, avl_fix (avl_insert d v))
                            else Bin ((x,m), avl_fix (avl_insert g v), d)

L’élément se rajoute bien, mais le réarrangement soit ne se fait pas du tout, soit n'est pas correcte.

Je pense que le problème vient du fait que je n'appelle pas la fonction de réarrangement "avl_fix" au bon moment dans la fonction.

Mais je ne vois pas comment faire ...


Merci d'avance !

Ranim R.



dyck_to_full

par Romain Mercadier,
Bonjour je n'arrive pas à faire dyck_to_full

let rec dyck_to_full l = match l with
  | Up::Down::t -> Bin(1, Bin(1, Empty, Empty), dyck_to_full t)
  | Down::t -> Bin(1, Empty, Empty)
  | Up::Up::t -> Bin(1, dyck_to_full (Up::t), dyck_to_full t)
  | Up::[] | [] -> Bin(1, Empty, Empty)


voici mon code actuel
certains cas sont mal gérés et il me manque parfois des noeuds
auriez-vous des indications (très peu, voir presque aucun étudiant n'a réussi la fonction)


Installation bibliothèque Asda (ordi perso)

par Remi Lasvenes,

Bonjour bonsoir,


J'ai quelques questions concernant l'installation de la bibliothèque Asda (sur un ordi autre que ceux du CREMI). J'ai donc suivi les étapes sous Moodle, et une fois terminé, lorsque je vais sur emacs et que je veux évaluer un fichier .ml, j'ai le message suivant:

Error: /home/rlasvenes/.opam/system/lib/asda/asda.cmi
is not a compiled interface for this version of OCaml.
It seems to be for an older version of OCaml.

La version que j'utilise pour OCaml n'est pas la même que la version utilisé par la bibliothèque, ducoup, deux questions; quelle est la version d'OCaml pour la bibliohtèque Asda, et comment faire pour spécifier une version de OCaml en particulier (pour faire matcher les deux versions) ?


P.S: Ma version (d'après ocaml --version) est la 4.06.0.


Cordialement,


LASVENES Rémi.

Semaine 6 erreur moodle

par Allan Mendjeli,

Bonjour,

Lorsque j'évalue mon fichier student.ml je rencontre le message d'erreur suivant durant la phase d'évaluation :


100 tests positifs + 100 tests négatifs
sur des arbres à 10000 noeuds
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Fonction is_bst

Échec sur les arguments suivants :

[Arbre trop grand pour affichage sous Moodle: relancez une évaluation]
///////////////////////////////////////////////////////////////////////////////

*** Test échoué, essayez à nouveau ***

J'ai beau relancer l'évaluation le même message s'affiche. Que dois-je faire pour remédier à ce problème ?

Cordialement,

Evaluation moodle

par Jon Stark,

Bonjour,


Pourquoi ma fonction is_bst fonctionne et j'obtiens 0/100 à la note finale ...?


Le résultat de l'évaluate est :

Note

Reviewed on mardi 13 mars 2018, 12:32 by Automatic grade

Note 0 / 100

Assessment report

[-]Résultats des tests

100 tests positifs + 100 tests négatifs 

sur des arbres à 10000 noeuds 


Parfait ! 



Merci d'avance,


test semaine 6 is_bst

par Arthur Cargnelli,

Bonjour ,

j'ai un problème aves l'évaluation de mon code car il me m'est une 0/100 et me dis que le code passe bien dans les commentaires ... :

Note 0 / 100
Assessment report
[-]Résultats des tests

100 tests positifs + 100 tests négatifs
sur des arbres à 10000 noeuds

Parfait !

Cordialement ,

Arthur

Erreur d'écriture vers la base de donnés

par Remi Courtin,

Bonjour,

Comme dans plusieurs posts présents sur ce forum, l'évaluation de ma fonction 1 (bst_search) m'affiche "erreur d'écriture vers a base de données"

Pouvez-vous corriger ce souci ?

Merci d'avance 

Rémi COURTIN

Parcours infixe d'un ABR

par Zahra Carn,

Bonjour,

Pour la fonction list_from_bst j'ai 4 fois le même erreur qui apparait et je n'arrive pas à voir d'où il provient. 

Ma fonction est de type: val list_from_bst : 'a tree -> 'a list = <fun>

L'erreur que j'ai dit que c'est sur le cas d'avoir fait l'insertion selon la liste [0;1].

Or list_from_bst (Bin((0,1),Empty,Bin((1,1),Empty,Empty)));;
Et list_from_bst (bst_from_list [0;1]);
Donnent tous les deux # - : int list = [0; 1]

Merci pour votre aide.

"Erreur d'écriture vers la base de données" lors de l'évaluation d'un algorithme

par Yohan Lematre,

Bonjour,

J'ai un problème lorsque je souhaite évaluer l'un de mes algorithmes de la semaine 5, à chaque fois que j'essaye j'obtiens l'erreur suivante "Erreur d'écriture vers la base de données".

Pourtant je ne pense pas avoir d'erreur dans mes codes, et d'ailleurs deux d'entre eux ont déjà été validés plus tôt dans la journée mais à présent ils provoquent également cette erreur

Pouvez-vous m'éclairer s'il vous plait ?

Yohan Lematre

exercice semaine5

par Hadja Fatoumata Diakite,

bonjour

je n'arrive toujours pas à accéder aux exercices de la semaine5 j'ai téléchargé tous les diapo mais toujours rien, je voudrais savoir comment contacter l'équipe Moodle svp

exercice semaine 5

par Hadja Fatoumata Diakite,

bonjour

j'arrive toujours pas à accéder aux exercices de la semaine5 j'ai téléchargé tous les diapo mais toujours rien, je voudrais savoir comment contacter l'équipe Moodle svp

Affichage Des Arbres

par Athman Mekhzoumi,
Bonjour,
   j'ai écrit ce code :
   let t = bst ();;
   let _ = view_mult t;;
   let _ = view_mult (bst_insert t 2);;
   pour visualiser l'arbre avant et apres l'exécution mais ça m'affiche le même arbre a chaque fois !
Merci.


Semaine 5

par Tristan Celor,

Bonjour,

Est-il normal que je ne puisse pas accéder à l'exercice 2 de la semaine 5 ? J'ai 100/100 à l'exercice 1 et tous les cours lus et validés des autres semaines y compris celui de la semaine 5 .


Cordialement.

Problème moodle semaine 5

par Jon Stark,

Bonjour,


Est-ce normal que nous ne puissions pas évaluer automatiquement nos exercices de la semaine 5 concernant les arbres binaires de recherche ?

En effet, nous ne possédons pas le bouton "Evaluate" nous permettant d'accéder au reste des exercices (car il faut que l'activité précédente soit marquée comme achevée et donc validée).


Merci d'avance,

Bien cordialement,

Jon STARK

parameters

par Maxime Denis,

Bonjour, je ne comprends pas d’où viens mon erreur pour la fonction parameters,

Échec sur les arguments suivants:
Empty

voici mon code:



let rec height t =
  match t with
    Empty -> (-1)
  |Bin (x,g,d) ->  1+max(height g) ( height d)
 
let arity t=
  match t with
    Empty->(-1)
   |Bin(x,g,d)->match (g,d) with
                  (Empty,Empty)->0
                 |(Empty,_)->1
                 |(_,Empty)->1
                 |(_,_)->2

let rec arity2 t =
    match t with
    Empty -> 0
    | Bin(x,left,right) -> if arity t = 2
                            then 1 + arity2 left + arity2 right
                            else 0 + arity2 left  + arity2 right
 
   
let rec arity1 t =
    match t with
    Empty -> 0
    | Bin(x,left,right) -> if arity t = 1
                            then 1 + arity1 left + arity1 right
                            else 0 + arity1 left  + arity1 right
 
let rec size tree =
  match tree with
    Empty -> 1
   |Bin(x,left,right)->1+(size left) + (size right)
  
let rec internal t =
   match t with
   Empty -> 0
   |Bin(x,left,right) -> 1+ internal left + internal right


let  nb_leaves t = size t - internal t

let parameters t = match t with
    Empty->(size t,nb_leaves t,arity1 t,arity2 t,0)
  |_->(size t,nb_leaves t,arity1 t,arity2 t,height t)
 

Merci.

Bst search rec terminale

par Alexis Perignon,

Bonjour ,
  j'ai essayé de faire BST_search en version récursive terminale , j'ai crée deux versions différentes et j'ai un doute sur chacune d'elle étant terminale , pourriez vous m'aider ?

La première je ne suis vraiment pas sur , vu que je renvoie multiplicity si la clé est trouvée , et que je renvoie 0 si la clé n'a pas été trouvée , j'ai un gros doute mais 0 et multiplicity sont stockées dans la pile non ? La seconde me semble mieux , mais parcours tout l'arbre même en ayant trouvé la valeur au début de l'arbre ..

   
let bst_search tree value =
  let rec aux l =
    match l with
    |[]-> 0
    |Empty::next -> aux next 
    |Bin((key,multiplicity),left,right)::next when key=value-> multiplicity
    |Bin(_,left,right)::next -> aux (left::right::next) 
  in aux [tree]

let bst_search tree value = let rec aux l to_return = match l with |[]-> to_return |Empty::next -> aux next to_return |Bin((key,multiplicity),left,right)::next-> aux (left::right::next) (if key=value then multiplicity else to_return) in aux [tree] 0
Merci ,
A.P

Documentation Ocaml

par Benjamin Castet,

Bonjour, 

Après quelques heures passées sur le dernier exercice du TD et pas mal de recherche je me suis retrouvé face au problème de la structure de donnée des vecteurs utilisée dans ce dernier exercice. Après un certain nombre de recherches sur internet, je n'ai pas pu trouver de documentation sur ce sujet. Pourriez-vous transmettre un poly, ou une réponse si c'est suffisant, concernant les vecteurs (opérations élémentaires, accès aux différents éléments du vecteur...). Si il s'agit d'une structure directement implantée dans Ocaml, auriez vous un lien vers sa documentation?


Arbres parfaits

par Benjamin Castet,

Bonjour, après avoir fais ma fonction is_perfect, j'ai constaté qu'un arbre vide était parfait. Or, un arbre parfait a un nombre de noeuds qui vaut 2**n+2**n-1.....+1, n étant la hauteur de l'arbre. Cependant, un arbre vide a une hauteur qui vaut -1, meme si il s'agit d'une valeur arbitraire l'arbre vide ne peut pas avoir une hauteur valant 0, car c'est le cas de l'arbre Bin(x,Empty,Empty). Son nombre de noeuds est 0. Ainsi, l'arbre vide n'a pas le nombre de noeuds d'un arbre parfat car 2**n est strictement supérieur à 0. 

D'ou ma question : est-ce une simple convention ou existe-t'il une démonstration mathématique comme quoi l'arbre vide est parfait?

précisions sur la fonction parameter_gen

par Mehdi Besse,

Bonjour,

 Pour la longueur d'une branche la plus longue dont tous les nœuds satisfont p, si nous avons deux branches de longueurs différentes,  mais que seulement les nœuds de la branche dont la longueur la plus cours satisfont le prédicat p, alors il faut renvoyer la longueur de cette dernière branche ou renvoyer -1 ? 

Par exemple que doit renvoyer la fonction parameter_gen sur l'arbre Bin (57, Bin (83, Empty, Empty), Empty) ?  

ma fonction renvoi  (1, 0, 1, 0, 0, 1) ce qui me parait juste mais j'ai un échec sur le résultat de ce test sur moodle. 

merci d'avance 


parameters_gen

par Sara Real Santos,
Bonjour,

Chaque fois que je teste parameters_gen (le retour)  avec les arbres proposés sur moodle, ça marche sur emacs mais pas sur moodle. Quelle pourrait être l'erreur de mon code? J'arrive pas à la retrouver.

Par exemple, ça ne fonctionne pas pour l'arbre Bin (30, Empty, Empty), alors que quand je le test sur emacs avec ma fonction parameters_gen  et j'ai (0, 1, 0, 0, -1, -1), ce qui me semble juste.


Merci,

Cordialement,

Sara Real


parameters_gen

par Imane Abed,
Bonjour, j'ai du mal a coder les deux dernières fonctions de parameters_gen,


- la longueur d'une branche la plus longue dont tous les noeuds satisfont p.
- la longueur d'une branche la plus longue dont au moins un noeud satisfait p. 

pourriez vous me guider ?

Merci


IA

parameters

par Clement Brandel,

Bonjour,  

apparemment j'aurais un problème sur ma fonction btree_size mais je ne comprend pas pourquoi. Pouriez_vous m'expliquer ?  


let rec btree_size t = match t with 

    Empty -> 0

    | bin(x,t1,t2) -> 1 + btree_size t1 + btree_size t2 ;;


let rec nb_de_feuilles t = match t with 

    Empty -> 1

    | bin(x,t1,t2) -> btree_size t1 + btree_size t2 ;;

    

let arity t = match t with 

    Empty -> -1 

    | bin(x,t1,t2) -> if (t1 = Empty && t2 = Empty) then 0 else if (t1 = Empty && t2 != Empty) || (t1 != Empty && t2 = Empty) then 1 else

    2 ;;

let rec nb_noeud_2 t = match t with 

    Empty -> 0

    | Bin(x,t1,t2) -> if arity t1 = 2 && arity t2 = 2 then 2 + nb_noeud_2 t1 + nb_noeud_2 t2 else 

        if (arity t1 != 2 && arity t2 = 2) || (arity t1 = 2 && arity t2 != 2) then 1 + nb_noeud_2 t1 + nb_noeud_2 t2 else 0 + nb_noeud_2 t1 + nb_noeud_2 t2;;

    

let rec nb_noeud_1 t = match t with 

    Empty -> 0

    | Bin(x,t1,t2) -> if arity t1 = 2 && arity t2 = 1 then 2 + nb_noeud_2 t1 + nb_noeud_2 t2 else 

        if (arity t1 != 1 && arity t2 = 1) || (arity t1 = 1 && arity t2 != 1) then 1 + nb_noeud_2 t1 + nb_noeud_2 t2 else 0 + nb_noeud_2 t1 + nb_noeud_2 t2;;

        

let rec btree_height t = match t with 

    Empty -> -1

    | Bin (x,t1,t2) -> 1 + max (btree_height t1)(btree_height t2) ;;

    

let rec parameters t = (btree_size t, nb_de_feuilles t, nb_noeud_1 t, nb_noeud_2 t, btree_height t) ;;


Merci d'avance.


Syntax error sans AUCUNE raison

par Vincent Ameeuw,

Bonjour,

En codant la fonction print_tree vue en TD :

type treem =
  | Empty
  | Bin of int * int * treem * treem;;

let spacing depth = String.make depth ' ';;

let print_node value n depth =
  print_string ((spacing depth)^"->"^(string_of_int value)^"("^(string_of_int n)^")\n");;

let print_tree tree =
  let rec aux t depth = match t with
    | Empty -> print_string ((spacing (4*depth))^"->E\n");
    | Bin(val, cnt, left, right) ->
      aux right (depth+1);
      print_node val cnt (4*depth);
      aux left (depth+1);
  in aux tree 0;;


J'obtiens cette erreur :

Characters 129-132:
  | Bin(val, cnt, left, right) ->
^^^
Error: Syntax error: operator expected.


Si quelqu'un sait d'où peut provenir l'erreur, je suis preneur. Merci.

Fonction parameters

par John Hermant,

Bonjour,


ma fonction parameters échoue au test sur l'argument Empty. Cependant elle renvoie (0, 1, 0, 0, -1) ce qui me semble correct et la fonction semble bien fonctionner quand je la teste.


Merci.

merge_sort

par Maxime Denis,

Bonjour,

sur emacs, mais fonctions merge et merge_sort  marchent sur emacs, mais sur moodle j'ai comme erreur  "*** Test échoué, essayez à nouveau ***".  Je ne comprends pas pourquoi.

Voici mes fonctions:

let rec merge l1 l2 = 
    match (l1,l2) with
        ([],[])-> []
        |(hd::qu,[])->hd:: (merge qu [])
        |([],hd::qu)->hd:: (merge qu [])
        |(hd::tl,te::qu)->  if hd <= te
                            then hd:: (merge tl l2)
                            else te:: (merge l1 qu)
                           
let rec  merge_sort l =
  match ( split l) with
    ([],[])-> failwith "erreur"
  |(l1,l2)->if (List.length l1) == 1 && (List.length l2) ==1
            then (merge l1 l2)
            else
              if (List.length l1) == 1
              then merge l1 (merge_sort l2)
              else
                if (List.length l2) == 1
                then merge l2 ( merge_sort l1 )
                           else merge (merge_sort l1) (merge_sort l2)

Merci.

btree_size/height

par Clement Brandel,

Bonjour,

 je ne comprend pas mon erreur dans le code suivant : 

let rec btree_size t = match t with 

    Empty -> 1

    | Bin (x,t1,t2) -> 1 + btree_size t1 + btree_size t2 ;;


let rec btree_height t = match t with 

    Empty -> 0

    | Bin (x,t1,t2) -> 1 + max (btree_height t1)(btree_height t2) ;;


Pourriez-vous me dire pourquoi le correcteur me dit : Echec sur les arguments Empty ?

Merci d'avance.

Question 3-2

par Alhassane Ii Diallo,

au niveau du prédicat p prenant deux entiers en paramètres et renvoyant un bool , je voudrais savoir quel est le prédicat  utilisé car j'arrive pas à récupèrer la hauteur des sous arbres à gauche et à droite ;

voici le code que j'ai : 

 let p t1 t2 =
           let rec t = match t with
         |Empty -> false
         |Bin(r,Empty,d)->false
         |Bin(r,g,Empty)->false
         |Bin(r,g,d)->
           let t1 = btree_height g in
           let t2 = btree_height d in
           t1=t2 ;;

on me renvoi syntax error                     


parameters_gen

par Mamadou Saliou Diallo,

Bonjour,

je n'arrive pas à corriger ma fonction sur le moodle;

voici le message d'errer :

Erreur de type ou fonction inexistante!
--------------------------------
Error: This expression has type bool but an expression was expected of type
int


let p = fun x -> x mod 2 = 0;;
                      
let rec size p t = match t with
  |Empty -> 0
  |Bin(v,l,r) -> p v + size p l + size p r;;

let rec nb_feuille p t = match t with
  |Empty -> 0
  |Bin(v,Empty,Empty) -> p v
  |Bin(v,l,r) -> nb_feuille p l + nb_feuille p r;;

let rec arity1 p t = match t with
  |Empty -> 0
  |Bin(v,Empty,Empty) -> p v
  |Bin(v,Empty, r) -> 1 + arity1 p r
  |Bin(v,l,Empty) -> 1 + arity1 p l
  |Bin(v,l,r) ->  ( arity1 p l ) + (arity1 p r);;
                                  
let rec arity2 p t = match t with
  |Empty -> 0
  |Bin(v,Empty,Empty) -> p v
  |Bin(v,Empty, r) -> arity2 p r
  |Bin(v,l,Empty) -> arity2 p l
  |Bin(v,l,r) -> 1 + ( arity2 p l ) + (arity2 p r);;
                                       
let rec height1 p t = match t with
     Empty -> -1
    |Bin(x,Empty,Empty) -> p x
    |Bin(r,g,d) -> p r + max (height1 p g)(height1 p d);;
                            
let rec height2 p t = match t with
     Empty -> -1
    |Bin(x,Empty,Empty) -> p x
    |Bin(r,g,d) -> p r + max (height2 p g)(height2 p d);;

let rec parameters_gen p t =match t with
   |Empty ->(0,0,0,0,-1,-1)
   |Bin(x,g,d)->let s = size p t
                in
                let f = nb_feuille p t
                in
                let nA1 = arity1 p t
                in
                let nA2 = arity2 p t
                in
                let h1 = height1 p t
                in
                let h2 = height2 p t
                in (s,f,nA1,nA2,h1,h2)

cordialement.

merge_sort

par Alba Martinez Anton,

Bonjour,

Lorsque je teste ma fonction merge_sort sur l'interpréteur, elle fonctionne alors que lorsque je le copie sur moodle, lors de l'évaluation il y a écrit qu'il y a un problème de syntaxe à la dernière ligne. Je ne comprends pas d'où vient l'erreur.

Voici le code de ma fonction:

let rec merge_sort l = match l with 

    [] -> []

    |[a] -> [a]

    | a::q -> let (l1,l2)= split l in 

    merge (merge_sort l1) (merge_sort l2);;

merge_sort

par Imane Abed,

Bonjour, j'ai crée une fonction cut qui coupe une liste en deux liste de même longueur à 1 près, elle renvoie ([_],[__]), mais j'aimerai avoir [_] [__]


Merci 

IA

Fonction parameters_gen

par Nicolas Diot,

Bonjour,

Après quelques tests sur emacs j'ai de bon résultat mais pas sous moodle. Pouvez-vous m'aiguiller sur la fonction qui pose problème s'il vous plaît ?

Merci par avance.

Diot Nicolas

Fonction nb_feuilles

par Jon Stark,

Bonjour,


Je ne comprends pas d'où peut provenir mon erreur quand à la fonction nb_feuilles que j'utilise dans la fonction parameters. En effet, une feuille est bien un noeud dont l'arité vaut 0.

Ci-dessous le code de ma fonction nb_feuilles :

let rec nb_feuilles t = match t with
    |Empty -> 0
    |Bin(x,t1,t2) -> if (arity t1 = 0) && (arity t2 = 0) then (1+ nb_feuilles t1 + nb_feuilles t2) else (nb_feuilles t1 + nb_feuilles t2) ;;



Merci d'avance,

Cordialement,

Jon STARK

Fonction annexe

par Imane Abed,
Bonjour, j'ai ecris cette fonction et je ne comprend pas l'erreur, le compilateur me dit qu'à la ligne 6,  0 n'est pas un unit

let rec help  p t s =
  match t with
    Empty-> -1
   |Bin(v,Empty,Empty)-> if p v
                         then if s>0
                              then 0
                              else failwith " pas de branche satisfaisant p"
   |Bin(v,l,r)-> if p v then 1+ max (help p l s)  (help p r s)
                                 else 1+ max (help p l(s+1))  (help p r (s+1))


Merci

IA

Fonction parameters_gen

par Paul Saladin,

Bonjour, je n'arrive pas à passer les tests de la fonction parameters_gen.

Pourtant lorsque j'essaye de lancer ma fonction avec plusieurs arguments en local, j'obtiens les mêmes résultats qu'un ami ayant réussi l'exercice. Pourriez vous m'indiquer mon erreur s'il vous plait ?


Paul Saladin

Fonction suffix et prefix

par Clement Brandel,

Bonjour,

 Je ne comprend pas où se trouve mon erreur, lorsque j'ecris cette fonction sur la plateforme Moodle ça ne marche pas tandis que sur le terminal ça marche.


let rec prefix l n = if n<=0 then [] else match l with 

    [] -> failwith "Liste trop courte"

    | h::t -> h:tristeprefix t (n-1)) ;;


let rec suffix l n = List.rev( prefix (List.rev(l)) n);;


Merci.

parameters_gen erreur particuliere

par Marc Cerutti,

Bonjour,

J'ai la fonction parameters_gen qui me renvoie une erreur sur les arbres

Bin (9, Bin (1, Empty, Empty), Empty)
et
Bin (72, Bin (8, Bin (44, Empty, Empty), Bin (26, Empty, Empty)), Bin (40, Bin (9, Empty, Empty), Bin (93, Empty, Empty)))


Seulement lorsque je fait des prédicats divers dessus, la fonction marche normalement.

Je soupçonne du coup que c'est un cas particulier mais je n'arrive pas à mettre la main de où peut venir le problème, si c'est le predicat ou quel résultat est faux.

Je mettrai mon code si besoin.


Merci.


prefix/suffix

par Imane Abed,
Bonjour, j'ai écris la fonction prefix, puis la fonction suffix en utilisant une fonction miror
Je ne comprends pas où sont mes erreurs, j'ai testé les cas suivants sur machine (au cremi):

prefix [1;2;3;4;5] 2
prefix [1;2;3;4;5] 6
prefix [] 1
prefix [1] (-1)
suffix [1;2;3;4;5] 2
suffix [1;2;3;4;5] 6
suffix [] 1
suffix [1] (-1)


et des cas avec des listes de listes

IA

Fonction auxiliaire

par Xavier Gerardin,

Bonjour,


Pour faire merge_sort il est indiqué d'utiliser la fonction split. Je l'ai fais sur mon ordinateur à moi et tout fonctionne mais lorsque je mets toutes les fonctions sur Moodle (split, merge, merge_sort, etc..) cela me renvoie tout simplement "test échoué"


Je m'y prends mal ou mes fonctions sont bidons ?


Merci

Fonction parameters_gen

par Theo De Castro Pinto,

Bonjour,

J'essaye d'écrire la fonction parameters_gen. Dans l'évaluation moodle, j'ai une erreur de type :

Échec sur les arguments suivants:
Bin (42, Empty, Empty)

J'ai donc testé en local avec p -> est_pair puis p -> est_impair pour tester tous les cas.

Dans le premier cas je renvoie : (0,1,0,0,-1,-1)

C'est le bon résultat (je ne détaille pas ici pourquoi mais je suis quasi-sûr de moi).

Dans le second : (0,0,0,0,-1,-1)

Ici encore, je suis presque sûr d'avoir le bon résultat.

Je me suis dit que peut être "tous les noeuds" et "au moins un noeud" incluent les feuilles. Mais là encore ça ne marche pas.

Je ne comprends donc pas où est mon erreur, pouvez-vous m'aider ?

Merci

is_perfect

par Arthur Cargnelli,

Bonjour ,


Voici mon code pour la fonction is_perfect :

let is_perfect t =
  if is_full t = false then false else
    let rec aux t_list d  =
      match t_list with
      |[]-> true
      |(Empty,h)::q -> aux q d
      |(Bin(x,l,r),h)::q -> aux ((l,h+1):trister,h+1)::q) d
      |(Bin(x,Empty,Empty),h)::q -> if d = -1 then d = h else if h = d then aux q d else false
    in
    aux [(t,0)] (-1)

mais je ne vois pas ou est mon erreur car sur mon ordinateur la fonction passe bien alors que sur moodle non .

Merci de votre aidre.

Cordialement ,

Arthur

Arbres quasi-parfaits (aussi appelés complets)

par Florian Simba,

Bonjour,

je n'arrive pas à tester si mes feuilles de profondeur h sont le plus à gauche possible.

Parameters t

par Habibatou Ba,

Bonsoir !!

Est-il possible d'ameliorer les tests sur la fonction parameters t de la semaine 3 pour que l'on sache exactement sur quel parametre du vecteur ne correspond pas aux resultats attendus!!!

  --HB


Evaluation de

par Thierno Amadou Diallo,

bonjour je peux savoir pourquoi mon code ne marche pas il marche dans un interpréter ocaml mais pas sur moodl


let rec btree_size t= match t with
|Empty -> 0
|Bin(x,tg,td) -> 1 + (btree_size tg) + (btree_size td)

let rec btree_height t= match t with
|Empty -> -1
|Bin(x,tg,td) -> 1 + (btree_height tg) + (btree_height td)

on me renvois sa apres evaluation

Erreur de compilation
--------------------------------
File "student.ml", line 12, characters 1-6:
Error: Unbound constructor Empty
--------------------------------
0/100


Évaluation fonction at_depth

par Jon Stark,

Bonjour,


Ma fonction at_depth fonctionne en local et me renvoie bien le bon résultat lorsque je l'appelle avec les paramètres donnés en exemple dans l'évaluation de Moodle, sauf que ça ne marche pas :


Fonction at_depth
Échec sur les arguments suivants:
(Bin (56, Empty, Empty), 0)

Fonction at_depth
Échec sur les arguments suivants:
(Bin (37, Empty, Empty), 0)

Je ne vois pas d'où provient le problème...


Merci,

Cordialement,

Jon STARK

Problème d'évaluation de merge_sort

par Antoine Carrincazeaux,
Bonjour,
J'ai une fonction merge_sort qui a l'air de bien fonctionner en local, mais une fois sur Moodle l'évaluation dure plusieurs minutes et renvoie un résultat vide. Il s'agit peut-être d'une erreur dans mon code qui provoque une boucle infinie, mais je ne la vois pas et je n'ai pas d'information sur la liste qui provoque ce problème.
Pourriez-vous m'indiquer d'où vient cette situation ?
Respectueusement,


Prefixe/suffixe tests non valide

par Nicolas Dieryck,

Bonjour,

je pense que mon code est bon mais je ne cesse d'obtenir :

--------------------------------
Error: This expression has type int list
but an expression was expected of type 'a list list
Type int is not compatible with type 'a list
--------------------------------
0/100

Et pour le coup, je ne comprends pas pourquoi..

Est ce que les tests sont à jour ?

Cordialement

Concernant la fonction merge sort

par Alhassane Ii Diallo,


Bonjour,

Pour la fonction merge_sort vu qu'on demande  d'utiliser la fonction merge et split , sachant la fonction split prend une liste et la divise en couple de deux listes (l1,l2), et que la fonction merge prend deux listes triées , je ne vois pas comment la fonction merge_sort pourrais me renvoyer une liste déja triée  si la liste passée en paramètre de l'est pas, je pense que ces  deux fonctions seulement ne feront pas suffisant ce que la fonction merge devrait renvoyer .


Merci,


Fonction merge_sort

par Athman Mekhzoumi,

Bonjour,

On est supposé écrire la fonction "split" pour l'utilisé dans la fonction "merge_sort" ou peut-on l'utilisée comme si elle était déjà écrite ?

Merci.