2012-06-23 3 views
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). 

Я использую этот предикат, чтобы преобразовать строку в список строк

+0

ли вы 'string_to_list' где-нибудь? Если это так, вы можете вычесть 48 элементов каждого элемента результата (если ваша строка не имеет ничего по латинским десятичным цифрам). –

+0

не понимаю :) –

+1

Здесь [страница с форума, описывающая string_split] (http://www.tek-tips.com/viewthread.cfm?qid=280628) и [Вопрос о переполнении стека] (http : //stackoverflow.com/questions/3976899/how-to-split-a-sentence-in-swi-prolog). Тем не менее, для SWI-Prolog. –

ответ

0

Поскольку нет явного ответа, вы можете использовать тот факт, что строки списки ASCii целых чисел, чтобы упростить это, как это было предложено @ RayToal. Просто убедитесь, что все символы в строке являются целыми.

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

Ваш пример:

?- stringTokenizer("345", List). 
List = [3, 4, 5]. 

 Смежные вопросы

  • Нет связанных вопросов^_^