Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Prolog > swi prolog,пара задач


Автор: stan90 28.10.2011, 02:02
подскажите пожалуйста:
1).как сформировать новую строку на основе исходной, взяв из нее каждый 3й символ.
2). Сгенерировать бинарное дерево произвольного вида с заданным количеством 
элементов.
Подсказка: для генерации случайных значений использовать ф-ю random(X).
второе делаю вот так,но не работает,пишет no.
Код

tree_insert(X, nil,tr(X, nil, nil)).  
      
tree_insert(X,tr(X,L,R),tr(X,L,R)):-!.  
      
tree_insert(X,tr(K,L,R),tr(K,L1,R)):- 
        X<K,!,  
        tree_insert(X,L,L1).  
         
tree_insert(X,tr(K,L,R),tr(K,L,R1)):- 
        tree_insert(X,R,R1).  

tree_gen(0,nil):-!. 
tree_gen (N,T):- 
       random(100,X1),  
       N1 is N-1, 
       tree_gen (N1,T1),  
       tree_insert(X1,T1,T).



заранее спасибо.

Автор: Фантом 29.10.2011, 13:47
Первая задача делается так (несколько топорно, конечно, можно было бы написать и более универсальный вариант, с выборкой произвольного символа):
Код

threel([],[]).
threel([_],[]).
threel([_,_],[]).
threel([_|[_|[C|A]]],[C|B]):-threel(A,B).

threes(A,B):-name(A,Al),threel(Al,Bl),name(B,Bl).

threes, в принципе, нужен только для "интерфейса" - чтобы переделывать строковые атомы в строки-списки и обратно.

А вот со вторым, честно говоря, трудно понять, что Вы хотели сделать в той или иной строчке, соответственно, трудно сказать, что там неправильно.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)