|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() MONTANERA Inscription : janvier 2011 Messages : 47 ![]() |
Bonjour,
J'abuse de votre serviabilité mais depuis quelques temps je me prends sérieusement la tête. Je n'arrive pas à comprendre pourquoi à la deuxième récursion je me plante sur (car L2). Je n'ai aucune hypothèse pour tester !!! Si vous pouviez me débloquer.Merci d'avance Code :
|
||
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : septembre 2003 Messages : 4 435 ![]() |
Je veux bien chercher mais quelle est la finalité de cette fonction ?
Je ne comprends pas ce qu'elle fait !
__________________
"La haine seule fait des choix" - Koan Zen "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne. Faites du Prolog, ça vous changera les idées ! Ma page Prolog Mes codes sources commentés Mon avatar : Intérieur avec jeune femme de Vilhelm Hammershoi |
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() MONTANERA Inscription : janvier 2011 Messages : 47 ![]() |
Merci de prendre en compte mon problème. C'est un embryon de réponse du problème ci-dessous:
Écrire une définition complète de la fonction qui prend en entrée une liste d'intervalles disjoints LI supposée non vide, ainsi qu'une liste de valeurs L et rend une liste d'associations qui indique pour chaque intervalle de LI, le nombre des valeurs de L qui sont incluses dedans. Merci d'avance Mon gros problème est de balayer x fois une liste dans une fonction |
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : septembre 2003 Messages : 4 435 ![]() |
OK; N'oubliez pas que vous faites de la programmation fonctionnelle, vous ecrivez des fonctions qui sont réutilisables.
Réfléchissez à la signification de la fonction map2 qui applique une fonction fn à tous les éléments d'une liste, n'est-ce pas ce que vous cherchez à faire actuellement ? Code :
Mon gros problème est de balayer x fois une liste dans une fonction
__________________
"La haine seule fait des choix" - Koan Zen "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne. Faites du Prolog, ça vous changera les idées ! Ma page Prolog Mes codes sources commentés Mon avatar : Intérieur avec jeune femme de Vilhelm Hammershoi |
|
|
00
|
|
|
#5 | ||
|
Candidat au titre de Membre du Club
![]() MONTANERA Inscription : janvier 2011 Messages : 47 ![]() |
Je ne saisis pas très bien ce que vous voulez me faire comprendre mais voici sur quoi j'étais parti mais je ne m'en sortais pas
; Code :
|
||
|
|
00
|
|
|
#6 |
![]() ![]() Inscription : septembre 2003 Messages : 4 435 ![]() |
Je pense que vous devez définit une fonction qui prend en argument la liste L des valeurs à tester et un intervalle, cette fonction (appelons la teste-1-intervalle) va renvoyer le nombre de valeurs de L incluse dans cette intervalle.
Vous n'avez plus ensuite qu'à appliquer cette fonction à toute la liste des intervalle en utilisant map.
__________________
"La haine seule fait des choix" - Koan Zen "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne. Faites du Prolog, ça vous changera les idées ! Ma page Prolog Mes codes sources commentés Mon avatar : Intérieur avec jeune femme de Vilhelm Hammershoi |
|
|
00
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() MONTANERA Inscription : janvier 2011 Messages : 47 ![]() |
C'est donc bien ce que je voulais faire.
Fonction traitant un intervalle: "balaie" Fonction traitant intervalle par intervalle: nb-intervalles Ma logique était donc bonne c'est l'écriture qui foire. Je verrai cela ce soir. Merci pour votre aide |
|
|
00
|
|
|
#8 | ||
|
Candidat au titre de Membre du Club
![]() MONTANERA Inscription : janvier 2011 Messages : 47 ![]() |
Eh bien je craque, à force de simplifier il ne reste presque plus rien comme code. Mais ça ne tourne toujours pas.
Duux problèmes: -- comment nommer L2 dans "balaie" alors que la liste est traitée par map -- comment sortir les résultats ? Code :
|
||
|
|
00
|
|
|
#9 | |||||
![]() ![]() Inscription : septembre 2003 Messages : 4 435 ![]() |
Je donne la solution qui est "un peu" compliquée. On peut simplifier avec des fonctions qui facilite la solution de ce genre d'exercices.
Solution 1 : Code :
Citation:
Code :
__________________
"La haine seule fait des choix" - Koan Zen "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne. Faites du Prolog, ça vous changera les idées ! Ma page Prolog Mes codes sources commentés Mon avatar : Intérieur avec jeune femme de Vilhelm Hammershoi |
|||||
|
|
00
|
|
|
#10 |
|
Candidat au titre de Membre du Club
![]() MONTANERA Inscription : janvier 2011 Messages : 47 ![]() |
Merci pour votre rapide réponse.
Je n'ai pas encore vu "fold" "lambda" et "accumulateur'. Je vais me pencher sur ces mots. Pour l'instant je n'ai pas le temps de tester mais rien que de visu, quand vous lisez un intervalle x qui est une association est-nomal que vous la lisez avec (car x) et (cadr x) ? Ne serait-ce pas "caar" et "cadar" ? |
|
|
00
|
|
|
#11 |
![]() ![]() Inscription : septembre 2003 Messages : 4 435 ![]() |
x n'est pas une association, x est un intervalle, l'association est renvouée en fin de fonction par (list (teste-valeur L2 0) Intervalle) c'est (teste_valeur L2 0) qui calcule le nombre d'éléments de la liste L2 dans l'intervalle, puis on renvoie l'association.
__________________
"La haine seule fait des choix" - Koan Zen "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne. Faites du Prolog, ça vous changera les idées ! Ma page Prolog Mes codes sources commentés Mon avatar : Intérieur avec jeune femme de Vilhelm Hammershoi |
|
|
00
|
|
|
#12 |
|
Candidat au titre de Membre du Club
![]() MONTANERA Inscription : janvier 2011 Messages : 47 ![]() |
Merci beaucoup. Je n'aurai jamais trouvé. Je préfère votre première solution:
-- traitement 1 élément de L2 avec l'intervalle x de L1 -- tous les éléments de L2 avec l'intervalle x de L1 -- Tous les intervalles de L1 Dans ma logique je zappais la première fonction. Je reviens sur ma question d'association. Je ne saisis pas et il faudrait que je comprenne car ça doit être important. Par création, "intervalle" est une association de 2 chiffres or vous y accédez par car et cadr ET CA FONCTIONNE, pourquoi ? C'est bien la première fois qu'un langage me pose un aussi gros problème. Il faut dire que sa philosophie est différente des langages que j'ai pratiqués: CAB500, FORTRAN IV, différents COBOL, Assembleur IBM, Assembleur CII, HTLM et autres dont je me rappelle plus les noms. |
|
|
00
|
|
|
#13 |
![]() ![]() Inscription : septembre 2003 Messages : 4 435 ![]() |
L'intervalle est simplement une liste (debut fin) accessible par car et cadr.
Il faut bien comprendre que l'association n'est crée qu'après le comptage des nombres figurant dans l'intervalle.
__________________
"La haine seule fait des choix" - Koan Zen "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne. Faites du Prolog, ça vous changera les idées ! Ma page Prolog Mes codes sources commentés Mon avatar : Intérieur avec jeune femme de Vilhelm Hammershoi |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com