Как реализовать полный проход по списку

 
0
 
Prolog | Функциональные языки
ava
vibor75 | 29.02.2016, 08:54
Есть код на Amzi-prolog:

price(Arg,[],[]).
price(Arg,[H|T],T1):-
    arg(2,H,Ha),
    Arg \= Ha,!,
    price(Arg,T,T1).
price(Arg,[H|T],[H|T1]):-
    price(Arg,T,T1).
    
suit(Arg,[],[]).
suit(Arg,[H|T],T1):-
    arg(1,H,Ha),
    Arg \= Ha,!,
    suit(Arg,T,T1).
suit(Arg,[H|T],[H|T1]):-
    suit(Arg,T,T1).        

length([], 0).
length([H|T], N):-
    length(T, M),
    N is M+1.
    
append([],L,L).
append([X|L1],L2,[X|L3]):-
    append(L1,L2,L3).
    
reverse([],[]).
reverse([X|L1],L2):-
    reverse(L1,L3),
    append(L3,[X],L2).
    
sort_reverse([],[]).
sort_reverse(L,M):-
    sort(L,L1),
    reverse(L1,M).
    
joker_num([],0).
joker_num([H|T],N):-
    arg(1,H,K),
    K=joker,
    joker_num(T,N1),
    N is N1 + 1;
    arg(1,H,K),
    K \= joker,
    joker_num(T,N).
    
row([H|T],Row):-
    arg(1,H,Arg),
    suit(Arg,[H|T],TRow),
    length(TRow,N),
    N>=3,
    sort_reverse(TRow,Row);
    arg(2,H,Arg),
    price(Arg,[H|T],Row),
    length(Row,N),
    N>=3.


Как реализовать рекурсию в предикате row чтобы строились все возможные комбинации?
Ответы (0)

Комментарии не добавлены

Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
  vibor75
advanced
Отправить