Есть код на 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 чтобы строились все возможные комбинации? |