A voir également:
- Fonction en caml
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
- Snapchat ils m'ont ajouté par la fonction recherche - Forum Snapchat
- Comment colorer une cellule excel en fonction du contenu d'une autre cellule ✓ - Forum Excel
3 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
3 déc. 2008 à 09:02
3 déc. 2008 à 09:02
Tu n'as pas clairement expliqué ce que tu voulais pour n>3,
Faut-il que mar_pos n renvoie n termes ou au maximum 3 tel que je l'ai fait ?
Faut-il que mar_pos n renvoie n termes ou au maximum 3 tel que je l'ai fait ?
let rec mar_pos x = match x with |1 -> ["|"] |2 -> ["||";"=="] |n -> let h=hd (mar_pos (n-2)) in ["|"^(hd (mar_pos (n-1)))]@[h^"=="]@["=="^h];;Ce qui donne :
mar_pos 1;; #- : string list = ["|"] mar_pos 2;; #- : string list = ["||"; "=="] mar_pos 3;; #- : string list = ["|||"; "|=="; "==|"] mar_pos 4;; #- : string list = ["||||"; "||=="; "==||"] mar_pos 5;; #- : string list = ["|||||"; "|||=="; "==|||"]
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
1 déc. 2008 à 15:15
1 déc. 2008 à 15:15
J'ai pas vérifié mais ceci devrait mieux marcher...
let rec mar_pos x = match x with |1 -> ["|"] |2 -> ["||=="] |n -> ("|"::(mar_pos (n-1)) )@("=="::(mar-pos (n-2)));;
Merci. Effectivement, ça marche mieux.
let rec mar_pos x =
match x with
|1 -> ["|"]
|2 -> ["||"]@["=="]
|n -> ("|"::(mar_pos (n-1)) )@("=="::(mar_pos (n-2)));;
Mais j'obtiens :
mar_pos 3;;
- : string list = ["|"; "||"; "=="; "=="; "|"]
alors que je voudrais
["|||"; "|=="; "==|"] la concaténation avec :: ne se fait pas. Quand je fais avec ^ j'ai une erreur
let rec mar_pos x =
match x with
|1 -> ["|"]
|2 -> ["||"]@["=="]
|n -> ("|"::(mar_pos (n-1)) )@("=="::(mar_pos (n-2)));;
Mais j'obtiens :
mar_pos 3;;
- : string list = ["|"; "||"; "=="; "=="; "|"]
alors que je voudrais
["|||"; "|=="; "==|"] la concaténation avec :: ne se fait pas. Quand je fais avec ^ j'ai une erreur
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
>
frpiq
2 déc. 2008 à 08:19
2 déc. 2008 à 08:19
Le problème c'est que tu veux mélanger d'une part la concaténation de string ^ et la concaténation de list :: et @ à l'intérieur des mêmes entités ce qui est difficile, il faut que tu choisisse de tout avoir en string list ou de tout avoir en string !
frpiq
>
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
2 déc. 2008 à 09:40
2 déc. 2008 à 09:40
Bonjour,
Oui j'ai bien compris que j'avais les 2 à faire. Le problème est que je n'arrive pas au résultat que j'attends.
Oui j'ai bien compris que j'avais les 2 à faire. Le problème est que je n'arrive pas au résultat que j'attends.
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
4 déc. 2008 à 10:28
4 déc. 2008 à 10:28
Avec tes explications, ma détermination, un peu de vérification et même si je ne comprends toujours pas à quoi ça peut bien servir...
let rec ajouter s l= match l with |[]->[] |t::q->(s^t)::(ajouter s q);; let rec mar_pos n= match n with |1->["|"] |2->["||";"=="] |n->(ajouter "|" (mar_pos (n-1)))@(ajouter "==" (mar_pos (n-2)));;
Ce programme permet de trouver le nombre de positionnements différents en fonction du nombre de plaques dont on dispose.
Pour ce qui est de caml, je suppose que sont utilité se limite aux fins de l'enseignement de l'algorithmique.
Merci de tes efforts qui me permettent de progresser sur les manipulations de listes.
Pour ce qui est de caml, je suppose que sont utilité se limite aux fins de l'enseignement de l'algorithmique.
Merci de tes efforts qui me permettent de progresser sur les manipulations de listes.
3 déc. 2008 à 09:55
pour 4, le résultat d'exécution :
""|"^pos (3)::"=="^pos(2)
"||"^pos(2)::"|=="^pos(1)::"==||"::"===="
"||||","||==","|==|","==||","===="
il s'agit en fait du nombre de compositions possible du placement de plaquettes soit horizontales "=" soit verticales"|"