2016-02-19 70 views
0

在序言中是否有'两个或两个以上'(或其他选项)使以下内容更短?序言:两个或更多

rule(foo, [bar,bar]). 
rule(foo, [bar,bar,bar]). 
rule(foo, [bar,bar,bar,bar]). 
rule(foo, [bar,bar,bar,bar,bar]). 

,你可以把它读作:如果有N个酒吧意甲然后分配标签富

+0

这看起来像“2和5之间的酒吧”。你真的是指“一个或多个”酒吧“?”? – 2016-02-19 16:14:39

+1

是的抱歉,我的意思是介于2和5之间 – Brutalized

+1

那么你应该编辑你的问题的标题。 – 2016-02-19 16:16:55

回答

2

between/3可能是你追求的:

rule(foo, L) :- 
    between(2, 5, N), 
    length(L, N), 
    maplist(=(bar), L). 
+0

是的!谢谢,这就是我一直在寻找的东西。 – Brutalized

+2

@Brutalized你不应该彻底改变你的问题。它使给出的答案和评论无效。请改回你的问题,并提出一个新问题。但是,如果你考虑一下,你应该能够运用我所展示的技术来解决这个问题。 – lurker

+0

http://stackoverflow.com/questions/35527863/prolog-eliminate-redundancy – Brutalized

0

这是一个可能性

rule(foo, Out) :- 
    random(2,6,N), 
    length(Out,N), 
    maplist(=(bar),Out). 
+0

为了得到OP的例子中的行为,你可能希望在'/ 3'之间不要'random/3'。 – lurker

+0

也许。OP说**“我的意思是在2到5之间”**。 – joel76