% Chạy: clingo xep_lich.lp --opt-mode=opt lop(ctdl,a,35,lt). lop(pttk,a,30,lt). lop(kiemthu,b,22,th). lop(android,c,20,th). ca(t2;t4;t6). phong(p101,45,lt). phong(lab02,24,th). khong_ranh(c,t2). % Chỉ tạo ứng viên đáp ứng điều kiện riêng của từng lớp. ung_vien(L,C,P) :- lop(L,G,N,K), ca(C), phong(P,S,K), N <= S, not khong_ranh(G,C). % Mỗi lớp nhận đúng một cặp ca và phòng. 1 { xep(L,C,P) : ung_vien(L,C,P) } 1 :- lop(L,_,_,_). % Hai lớp không dùng cùng phòng trong cùng ca. :- xep(L1,C,P), xep(L2,C,P), L1 < L2. % Cùng giảng viên không dạy đồng thời hai lớp. :- xep(L1,C,_), xep(L2,C,_), L1 < L2, lop(L1,G,_,_), lop(L2,G,_,_). day(G,C) :- xep(L,C,_), lop(L,G,_,_). vi_pham(a) :- day(a,t2), day(a,t6). #minimize { 5,G : vi_pham(G) }. #show xep/3.