Prologue - Palindrome Foncteur
Je suis en train d'écrire un prédicat palindrome/1
en Prolog qui est vrai si et seulement si sa liste d'entrée se compose d'un palindrome liste.
par exemple:
?- palindrome([1,2,3,4,5,4,3,2,1]).
est vrai.
Des idées ou des solutions?
vous vous rendez compte vous pouvez supprimer vous-même? - ok question a été édité - il d'abord dit "s'il vous Plaît supprimer ce"...
Désolé, cette question n'a de réponses et ne peut pas être supprimé.
Désolé, cette question n'a de réponses et ne peut pas être supprimé.
OriginalL'auteur Amjad | 2011-12-29
Vous devez vous connecter pour publier un commentaire.
Un palindrome liste est une liste qui lit le même à l'envers, de sorte que vous pouvez inverser la liste pour vérifier si il donne la même liste:
C'est correct
Merci!!!! Je l'ai eu. 😀
OriginalL'auteur gusbro
Semble que tout le monde vote pour un arrière/2 en fonction de la solution. Je suppose que vous les gars ont un arrière/2 solution dans l'esprit qui est en O(n) de la liste donnée. Quelque chose avec un accumulateur:
Mais il y a aussi d'autres moyens de vérifier pour un palindrome. Je suis venu avec une solution qui rend l'utilisation de DCG. On peut utiliser les règles suivantes:
Quelle solution est la meilleure? Permet de faire un peu de statistiques via le profil
commande du Prologue du système. Voici les résultats:
Alors peut-être le DCG solution est souvent plus rapide dans le cas positif ("radar"), il n'a pas
construire l'ensemble de l'inverse de la liste, mais directement se déplace vers le milieu, puis
vérifie le reste lors de départ de son propre récursivité. Mais l'inconvénient de DCG solution
c'est qu'il est non-déterministe. Certaines mesures de temps dira plus...
Bye
P. S.: Port de la statistique réalisé avec les nouveaux plugable débogueur de Jekejeke Prologue:
http://www.jekejeke.ch/idatab/doclet/prod/en/docs/10_dev/10_docu/02_reference/04_examples/02_count.html
Mais d'autres Prolog systèmes ont des installations semblables. Pour plus d'informations, voir "Profileur de Code" colonne:
http://en.wikipedia.org/wiki/Comparison_of_Prolog_implementations
OriginalL'auteur j4n bur53
Cette sure sons comme des devoirs à faire à la question, mais je ne peux pas m'en empêcher:
Techniquement, prolog foncteur n'est pas "retour" quoi que ce soit.
Prolog va répondre "oui", indiquant qu'il a satisfait avec succès à votre requête. Et à charge de ce programme, vous pouvez le faire directement à partir de l'invite de commandes (en utilisant 'affirmer'), mais il est beaucoup plus facile à mettre dans un fichier et de consulter ce fichier.
Merci! Je comprends maintenant! 😀
OriginalL'auteur Scott Hunter
Une autre façon, de le faire avec DCG:
Vous pouvez vérifier pour un palindrome comme ceci:
Je ne sais pas pourquoi j'ai écrit. Supprimé.
OriginalL'auteur rpax
Vous pouvez utiliser :
OriginalL'auteur Nourein