gpt4 book ai didi

arrays - Prolog - 一周中的几天

转载 作者:行者123 更新时间:2023-12-02 05:48:01 25 4
gpt4 key购买 nike

我是序言新手,它搞乱了我的头脑。你们能给我一个简单的例子吗,比如……一周中的几天!假设我有一个

day(mon, tue, wed, thu, fri).

我想知道我在一周中的哪一天(假设开始时它通常会被设置为“星期一”,我什至不知道该怎么做,但我想我可以弄清楚出来),我想将变量设置为“明天”,(例如......如果今天是星期一,我想知道明天是星期二)

我知道这听起来很愚蠢,但我习惯使用 c 和 java,这对我来说太难了......

最佳答案

如果你不介意使用库,你也可以这样做:

:- use_module(library(clpfd)).

ord_weekday(0, mon).
ord_weekday(1, tue).
ord_weekday(2, wed).
ord_weekday(3, thu).
ord_weekday(4, fri).
ord_weekday(5, sat).
ord_weekday(6, sun).

day_next(D, N) :-
(X+1) mod 7 #= Y,
ord_weekday(X, D),
ord_weekday(Y, N).

首先我们将 0 映射到星期一,1 映射到星期二,依此类推;然后,我们将 0 映射到 1、1 到 2、...、6 到 0。

现在你可以这样查询:

?- day_next(mon, X).
X = tue.

?- day_next(X, mon).
X = sun.

重要的是,您可以保留两个参数自由变量并枚举所有可能的组合:

?- day_next(D, N).
D = mon, N = tue ;
D = tue, N = wed ;
D = wed, N = thu ;
D = thu, N = fri ;
D = fri, N = sat ;
D = sat, N = sun ;
D = sun, N = mon.

这会给你完全相同的结果 this solution 。我更喜欢针对这个特定问题(一周的第二天)的其他解决方案,但是从这里的示例中可能还可以学到其他东西。

关于arrays - Prolog - 一周中的几天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44015241/

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