2

プロローグを使用して数字をリストの数字に分割したい

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

どうやってやるの ?

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

この述語を使用して、文字列を文字列のリストに変換しています

4

1 に答える 1

0

明示的な答えがないため、@ RayToal で提案されているように、文字列が ascii 整数のリストであるという事実を使用して、これを簡素化できます。文字列内のすべての文字が実際に整数であることを確認してください。

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

あなたの例:

?- stringTokenizer("345", List).
List = [3, 4, 5].
于 2012-09-08T13:13:38.047 に答える