Question

I want to separate number into list digits using prolog

like :
     if number is "345"
separate to [3, 4, 5]

How can i do that ?

stringTokenizer("", []) :- !.
stringTokenizer(Sen, [H|T]) :-
   frontToken(Sen, Token, Remd), H = Token, stringTokenizer(Remd, T).

I am using this predicate to convert string into list of strings

Was it helpful?

Solution

Since there's no explicit answer, you can use the fact that strings are lists of ascii integers to simplify this, as was suggested by @RayToal. Just ensure that all the characters in the string are actually integers.

stringTokenizer([], []).
stringTokenizer([N|Ns], [Digit|Rest]):-
    48 =< N, N =< 57,
    Digit is N - 48,
    stringTokenizer(Ns, Rest).

Your example:

?- stringTokenizer("345", List).
List = [3, 4, 5].
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top