gpt4 book ai didi

prolog - 在序言中获取列表的分布

转载 作者:行者123 更新时间:2023-12-05 03:26:08 27 4
gpt4 key购买 nike

我想在序言中计算手牌的分布。这意味着得到这个结果:

?- distribution([sq,s9,s8,ha,hk,h5,da,dk,dj,d4,ca,c7,c6],D).
D=[[spade,3],[heart,3],[diamond,4],[club,3]]

但我不知道如何进行。我可以使用以下脚本逐一获取每种颜色:

distribution([], []).
distribution([H|T], [E|D]):-
atom_chars(H, X),
nth0(0, X, E),
(
E == 's' -> distribution(T, D);
E == 'h' -> distribution(T, D);
E == 'd' -> distribution(T, D);
E == 'c' -> distribution(T, D)
).

谁能帮帮我?谢谢

最佳答案

为什么不使用复合词来表示卡片?

考虑红桃皇后 (🂽):hq 是一个原子,h(q) 是一个化合物。

这让事情变得简单多了:无需排序,一切都保持纯粹的关系

cards_([],[],[],[],[]).cards_([Card|Cards],Cs,Ds,Hs,Ss) :-   card_(Card,Cards,Cs,Ds,Hs,Ss).card_(c(X),Cards,[X|Cs],Ds,Hs,Ss) :- cards_(Cards,Cs,Ds,Hs,Ss).card_(d(X),Cards,Cs,[X|Ds],Hs,Ss) :- cards_(Cards,Cs,Ds,Hs,Ss).card_(h(X),Cards,Cs,Ds,[X|Hs],Ss) :- cards_(Cards,Cs,Ds,Hs,Ss).card_(s(X),Cards,Cs,Ds,Hs,[X|Ss]) :- cards_(Cards,Cs,Ds,Hs,Ss).

获取相应计数的示例查询:

?- Cards = [s(q),s(9),s(8),h(a),h(k),h(5),d(a),d(k),d(j),d(4),c(a),c(7),c(6)],   cards_(Cards,Clubs,Diamonds,Hearts,Spades),   length(Clubs,N_Clubs),   length(Diamonds,N_Diamonds),   length(Hearts,N_Hearts),   length(Spades,N_Spades).Cards      = [s(q),s(9),s(8),h(a),h(k),h(5),d(a),d(k),d(j),d(4),c(a),c(7),c(6)],Clubs      = [a,7,6],Diamonds   = [a,k,j,4],Hearts     = [a,k,5],Spades     = [q,9,8],N_Clubs    = 3, N_Diamonds = 4,N_Hearts   = 3, N_Spades   = 3.

关于prolog - 在序言中获取列表的分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71825857/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com