我正在尝试编写一个Prolog(CLP)谓词,它将建立约束两个列表不等式的约束.
更正式地说,有两个列表A=[A1,...,AN], B=[B1,...,BN],约束被定义为(A1 #\= B1) #\/ (A2 #\= B2) #\/ ... #\/ (AN #\= BN).
我不确定如何在给定两个任意长度的列表的情况下构建此约束.这是我的尝试.我明白为什么它不起作用,但无法修复它.
any_different([], []).
any_different([H1|T1], [H2|T2]):-
H1 #\= H2 #\/ any_different(T1, T2).
Run Code Online (Sandbox Code Playgroud) 让我们进行一场由两名球员(或球队)进行的比赛,其中结果由两名球员的得分表示(例如足球)。是否有一种惯用的方式将此类游戏的结果存储在关系数据库中?
我想出了两种可能的模式,但似乎都不够通用。
1. 每场比赛一排
将有一个games带有列的表格,game_id, winner, loser, winner_points, loser_points每个游戏将存储在表格的一行中。
2. 每场比赛两排
将有一个games带有列的表game_id, player, opponent, player_points, opponent_points。每个游戏将存储在表的两行中,并且它们将具有相同的game_id.
SELECT AVG(player_points) FROM games WHERE player = some_player