2016-02-19 69 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