如果元素不是数字,并且如果元素是数字,那么我需要编写一个必须包含多于3个元素的列表,它必须包含3个元素,第三个元素必须是添加第一个和第二个元素的结果。这是我有:序言:区分数字和字母列表
mylist([W, X,Y,Z|_]). % List contains at least 3 Elements
mylist([X,Y,Z]):- Z is X+Y. % if there are 3 numbers, third number is the addition of first and second
问题是,这是太笼统了,只能部分工作。它会与mylist(3,3,3)匹配,因为它不应该是第一个事实,因为这是一个数字列表,它应该说不。但我不知道我怎么能一个数字名单和信件名单区分
mylist([1,2,A])应该是什么结果。有两个数字和一个字母?如果它至少有一个数字,那么从你的描述中,该列表应该只有数字,长度为3? – coder
对不起,我的错误(我编辑了这个问题来反映这一点)。如果它不是数字,它必须包含3个以上的元素(长度> 3)。如果它是一个数字,那么它必须包含3.所以,mylist([1,2,A])将是否定的,因为它只包含3个元素,而不是全部都是数字。 – Enigma
你想说“如果至少有一个元素不是数字”?因为否则[1,2,A,B]长度大于3且不是所有数字... – coder