Привет, надеюсь, кто-то может мне помочь. Мне было просто интересно, был ли мой код ниже достаточным для создания матрицы из 12 x 12 и, предполагая, что «constrain (M)» вызывает все правильные ограничения, которые определены в правилах ниже, обозначая каждую из строк? На данный момент это не удается, и я отслеживал свои ограничения, поэтому я знаю, что все они работают, но не знали, было ли это потому, что я называю их за пределами основного предиката?Порядок выполнения операций Prolog CLP?
matrix(M) :-
M = [R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12],
R1 = [A,B,C,D,E,F,G,H,I,J,K,L],
R2 = [A2,B2,C2,D2,E2,F2,G2,H2,I2,J2,K2,L2],
R3 = [A3,B3,C3,D3,E3,F3,G3,H3,I3,J3,K3,L3],
R4 = [A4,B4,C4,D4,E4,F4,G4,H4,I4,J4,K4,L4],
R5 = [A5,B5,C5,D5,E5,F5,G5,H5,I5,J5,K5,L5],
R6 = [A6,B6,C6,D6,E6,F6,G6,H6,I6,J6,K6,L6],
R7 = [A7,B7,C7,D7,E7,F7,G7,H7,I7,J7,K7,L7],
R8 = [A8,B8,C8,D8,E8,F8,G8,H8,I8,J8,K8,L8],
R9 = [A9,B9,C9,D9,E9,F9,G9,H9,I9,J9,K9,L9],
R10 = [A10,B10,C10,D10,E10,F10,G10,H10,I10,J10,K10,L10],
R11 = [A11,B11,C11,D11,E11,F11,G11,H11,I11,J11,K11,L11],
R12 = [A12,B12,C12,D12,E12,F12,G12,H12,I12,J12,K12,L12],
constrain(M),
labeling([],R1),
labeling([],R2),
labeling([],R3),
labeling([],R4),
labeling([],R5),
labeling([],R6),
labeling([],R7),
labeling([],R8),
labeling([],R9),
labeling([],R10),
labeling([],R11),
labeling([],R12).
Спасибо. Я понимаю, что отделять их лучше, но я не уверен, как отделить маркировку от домена. Меня только учили, что переменные, ограничения и маркировка идут в одном предикате, и хотя я понимаю, как работают матрицы/ограничения, это первый раз, когда я сталкивался с маркировкой, и я не очень хорошо разбираюсь в инструкциях библиотеки! – eponini
Я добавил дополнительную информацию о том, как отделить эти аспекты. Я надеюсь, что это помогает! – mat
Я никогда не сталкивался с термином «основное отношение» - это ваша собственная терминология или она исходит из литературы? Обычно я называю это * (ограничение) *. – jschimpf