gpt4 book ai didi

prolog - Prolog中的条件写入

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

我有包含飞机时刻表的 Prolog 数据库。这是它的样子:

fly(id, from, to, days(1, 0, 1, 0, 1, 0, 1)).

如您所见,days 谓词中有 7 个值 - 从星期一到星期日。我想要做的是每天打印,其中值为 1,但将其打印为文本。我试图使用 if - else 语句,但在这种情况下它不起作用:

(   
A = 1 -> write(monday), nl;
(
B = 1 -> write(tuesday), nl;
(
C = 1 -> write(wednesday), nl;
(
D = 1 -> write(thursday), nl;
(
E = 1 -> write(friday), nl;
(
F = 1 -> write(saturday), nl;
(
G = 1 -> write(sunday), nl
)
)
)
)
)
)
)

在示例中它应该打印 4 天:

monday
wednesday
friday
sunday

我该怎么做?

最佳答案

我找到了一种方法,基本上,您需要创建 2 个列表。第一个是你的日子,第二个是日子的名字。然后,您需要迭代它们,但是,由于 Prolog 中没有 loop 结构,您必须使用递归函数来完成。

下面是我的实现方式:

iterate_weeks([], _).
iterate_weeks([H|T], [X|Y]) :- H = 1, write(X), nl, iterate_weeks(T, Y).
iterate_weeks([H|T], [_|Y]) :- H = 0, iterate_weeks(T, Y).

print_fly_days(From, To):-
fly(_, From, To, _, _, days(A,B,C,D,E,F,G)),
L = [A,B,C,D,E,F,G],
T = [monday, tuesday, wednesday, thursday, friday, saturday, sunday],
iterate_weeks(L, T).

关于prolog - Prolog中的条件写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74452229/

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