Il s'agit Programmation Logique de Structure et interprétation des programmes informatiquesComment obtenir les plus haute valeur travail avec la programmation logique AND, NOT et>
Il est un problème simple de comprendre comment obtenir le plus haut valeur.
Cette base de données exemple:
((is-student Anna)
(is-student Bart)
(is-student Charlie)
(is-student David)
(is-student Eddy)
(is-student Fanny)
(has-points Anna 73)
(has-points Bart 84)
(has-points Charlie 65)
(has-points David 34)
(has-points Eddy 85)
(has-points Fanny 70))
Je comprends le code suivant donne un résumé des élèves avec leurs points:
;;; Query input:
(and (is-student ?student1)
(has-points ?student1 ?points1))
;;; Query results:
(and (is-student fanny) (has-points fanny 70))
(and (is-student eddy) (has-points eddy 85))
(and (is-student david) (has-points david 34))
(and (is-student charlie) (has-points charlie 65))
(and (is-student bart) (has-points bart 84))
(and (is-student anna) (has-points anna 73))
La même chose avec des combinaisons avec ET & OU sont ok à comprendre. C'est surtout travailler sur les combinaisons et filtrer les résultats.
Je rencontre des difficultés à comprendre le code ci-dessous à obtenir l'élève avec les points les plus élevés. Il semble simple, mais je ne comprends pas comment la combinaison avec ET & PAS & "> points2 points1" fournit la plus grande valeur (points)?
C'est ce que je reçois quand je le lance (en DrRacket) pour obtenir l'étudiant avec les points les plus élevés:
;;; Query input:
(and (is-student ?student1)
(has-points ?student1 ?points1)
(not (and (is-student ?student2)
(has-points ?student2 ?points2)
(lisp-value > ?points2 ?points1))))
;;; Query results:
(and (is-student eddy)
(has-points eddy 85)
(not (and (is-student ?student2)
(has-points ?student2 ?points2)
(lisp-value > ?points2 85))))
Comment comparer la négation de la deuxième liste avec le premier travail? Chaque réponse/ligne du premier résultat est-elle comparée à chaque ligne du second AND? Je ne sais pas lire/interpréter le code et pourquoi cela donne ce que nous cherchions?
Toute aide comprenant comment ceci donne la plus grande valeur serait fortement appréciée!
Merci
PS: Je ne suis pas anglophone, je présente mes excuses pour des erreurs de grammaire ou d'orthographe
Merci YoarkYANG !, Il semble que j'ai oublié de vous remercier! Désolé pour le retard! – Gosa