2013-01-20 11 views
2

Comment puis-je vérifier si un caractère est un nombre dans Prolog sans utiliser integer/1 (HW)?Vérifiez si le caractère est un nombre dans Prolog? comment implémenter un entier/1?

je peux utiliser atomic/1, mais il ne me aide pas beaucoup, car il retourne vrai aussi

à autre chose que des chiffres.

2 ?- atomic(1). 
true. 

3 ?- atomic(asasa). 
true. 

4 ?- 

Cordialement

+0

L'étiquette de devoirs est [obsolète] (http://meta.stackexchange.com/questions/147100/the-homework-tag-is-now-officially-deprecated). Aussi, l'enseignant veut-il que vous écriviez votre propre prédicat peut-être? – keyser

+0

@Keyser: Oh super! paka ... – ron

+0

@Keyser: Non, il m'a donné quelque chose d'encore plus ennuyeux à écrire, donc j'ai besoin de vérifier si un caractère est un nombre pour la plus grande fonction – ron

Répondre

3

Utilisez char_type(X,digit).

?- char_type('3',digit). 
true. 

?- char_type('a',digit). 
false. 
+1

Cela fonctionne dans SWI-Prolog, mais 'char_type' ne semble pas être disponible dans GNU Prolog. Existe-t-il une autre solution pour les autres systèmes Prolog? –

1

Eh bien, considérez-vous un numéro? Juste des entiers? Numéros Hex? Si vous voulez reconnaître des nombres entiers tout simplement ([0-9]+) vous pouvez simplement convertir le nombre à une liste et vérifiez si chaque membre de la liste est un chiffre:

is_digit(1). 
is_digit(2). 
.... 

Une autre idée est d'essayer d'ajouter 1 à la numéro en utilisant is; mais cela ne garantit pas toujours que c'est un nombre entier.

Questions connexes