2 Stimmen

Überprüfen, ob ein Zeichen in Prolog eine Zahl ist? Wie implementiere ich integer/1?

Wie kann ich in Prolog überprüfen, ob ein Zeichen eine Zahl ist, ohne integer/1 zu verwenden (HW)?

Ich kann atomic/1 verwenden, aber es hilft mir nicht viel, da es auch true zurückgibt

für alles außer Zahlen.

2 ?- atomic(1).
true.

3 ?- atomic(asasa).
true.

4 ?- 

Grüße

3voto

Verwenden Sie char_type(X,digit).

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

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

1voto

Thanos Tintinidis Punkte 5798

Nun, was halten Sie für eine Zahl? Nur Ganzzahlen? Hexadezimalzahlen? Wenn Sie nur einfache Ganzzahlen erkennen möchten ([0-9]+), können Sie die Zahl einfach in eine Liste umwandeln und dann überprüfen, ob jedes Element der Liste eine Ziffer ist:

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

Eine andere Idee ist, versuchen, 1 zur Zahl hinzuzufügen, indem Sie is verwenden; aber dies garantiert nicht immer, dass es sich um eine Ganzzahl handelt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X