【发布时间】:2014-12-06 23:32:17
【问题描述】:
我正在上一门编程课程,由于时间不够,教授只是略略浏览了 Prolog。不管怎样,他建议我们自己研究一下。我遇到了一个应该计算的密码算术程序?上午 + 下午 = 天。我不知道应该在 SWI 解释器中添加什么作为输入,以及应该接收什么作为正确的输出......如果这有意义吗?
我试过了……
solve([AM],[PM],[DAY]).
这没什么。有关 AM+PM = DAY 或类似内容的正确输入的任何帮助都会很棒!这是我正在玩的程序...
solve([A,M,P,D,Y]):-
select(A,[0,1,2,3,4,5,6,7,8,9],WA), % W means Without
not(A=0),
select(M,WA,WMA),
select(P,WMA,WMAP),
not(P=0),
select(D,WMAP,WMAPD),
not(D=0),
select(Y,WMAPD,WMAPDY),
DAY is 100*D+10*A+Y,
AM is 10*A+M,
PM is 10*P+M,
DAY is AM+PM.
请记住,我们在 Prolog 上只有两个课程,所以我几乎一无所知!
斯科特
【问题讨论】:
-
试试
solve(X),它会在长度为5的列表中为您提供A、M、P、D和Y的可能结果。 -
好的....所以这给了我这个 X = [2, 5, 9, 1, 0]。那么这到底是什么意思呢?这如何解决 AM + PM = DAY?序言很奇怪!哈哈
-
试试
solve([A, M,P,D,Y]).希望有帮助。如果你说你不明白的事情会更容易。 Prolog 为您提供了一种解决方案,如果您按 space 您将得到其他解决方案。 -
感谢帕特里克的回复。我想我不明白程序是如何工作的。我想你按照 AM+PM 的方式输入一些东西,它会输出 DAY。我只是不确定程序期望输入什么以及期望的输出是什么?这有意义吗?
-
嘿,我试着在下面给你一个答案。
标签: prolog cryptarithmetic-puzzle