Comparer le premier et le dernier element d'une liste en Ocaml
Résolu/Fermé
shimo208
Messages postés
10
Date d'inscription
lundi 3 juin 2013
Statut
Membre
Dernière intervention
29 décembre 2013
-
3 juin 2013 à 20:38
shimo208 Messages postés 10 Date d'inscription lundi 3 juin 2013 Statut Membre Dernière intervention 29 décembre 2013 - 4 juin 2013 à 21:20
shimo208 Messages postés 10 Date d'inscription lundi 3 juin 2013 Statut Membre Dernière intervention 29 décembre 2013 - 4 juin 2013 à 21:20
A voir également:
- Comparer le premier et le dernier element d'une liste en Ocaml
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Le dernier iphone - Guide
- Gertrude a préparé la liste des affaires à prendre pour l'excursion. juliette a modifié cette liste en utilisant le mode suivi des modifications proposé par le traitement de texte. - Guide
- Télécharger le dernier maître de l'air film complet en français ✓ - Forum Cinéma / Télé
1 réponse
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
3 juin 2013 à 20:53
3 juin 2013 à 20:53
C'est quasiment bon, il manque pas grand chose.
Quelques remarques :
1) évites d'utiliser des méthodes comme "List.tl t" ici, il est plus efficace d'utiliser à fond le pattern matching.
2) ne fais jamais des conditions "if a=b then true else false", c'est moche. Utilises directement la valeur "a=b" c'est déjà un booléen.
3) je pense qu'il te manque un cas, lorsque la liste ne contient qu'un élément, dans ce cas j'aurait tendance à considérer que le résultat est true (le premier est le dernier donc ils sont égaux...)
Sinon, voici une manière de faire :
Quelques remarques :
1) évites d'utiliser des méthodes comme "List.tl t" ici, il est plus efficace d'utiliser à fond le pattern matching.
2) ne fais jamais des conditions "if a=b then true else false", c'est moche. Utilises directement la valeur "a=b" c'est déjà un booléen.
3) je pense qu'il te manque un cas, lorsque la liste ne contient qu'un élément, dans ce cas j'aurait tendance à considérer que le résultat est true (le premier est le dernier donc ils sont égaux...)
Sinon, voici une manière de faire :
let rec premier_dernier = function |[] -> false |[x] -> true |[x;y] -> x=y |x::y::z -> premier_dernier (x::z) ;;
3 juin 2013 à 21:09
x::y::z->premier_dernier(x::z)
est equivalent a
x::z-> premier_dernier(x::z)
??
Merci beaucoup
3 juin 2013 à 21:13
Quand je fais "x::y::z->premier_dernier(x::z)" je supprime un élément (le "y"), donc la taille de la liste diminue progressivement jusqu'à tomber sur le cas [x;y]
3 juin 2013 à 21:18
4 juin 2013 à 14:37
[1;2;3;4] il retourne [4;2;3;1]
Merci beaucoup
4 juin 2013 à 14:39
let rec premier_dernier = function
|[] -> failwith"liste vide"
|[x] -> [x]
|[x;y] -> [y;x]
|x::y::z -> premier_dernier (x::z)
Merci