Ecco un profilo del mio programma di SWI-Prolog:Usa reificata vincoli di fare 3 numeri consecutivi
:- use_module(library(clpfd)).
consec1(L) :-
L=[L1,L2,L3,L4,L5,L6,L7,L8,L9],
L ins 1..9,
...,
abs(L5-L4)#=1,
all_different(L),
labeling([],L)
abs(L5-L4)#=1
rende L5
e L4
uno accanto all'altro. Se volessi fare tre numeri uno accanto all'altro, ad es. L3
, L4
e L5
, come potrei usare i vincoli reificati per fare questo?
E.g. L3=4
, L5=5
, L4=6
o L4=7
, L5=8
, L3=9
Con "consecutivo", intendi ad es. '(L2 # = L1 + 1 #/\ L3 # = L2 + 1) # \/(L2 # = L1-1 #/\ L3 # = L2-1)'? – repeat
Inoltre, questa relazione dovrebbe rimanere valida per tutti e 3 i membri adiacenti di L --- o solo per alcuni/altri? – repeat