pcaboche >> Il me semble que ce que tu as écrit ne respecte pas les contraintes du problème:
40 / 50 / 10 / 00 / 00 / -> 100
00 / 00 / 60 / 00 / 60 / -> 120
00 / 00 / 00 / 90 / 30 / -> 120
40 50 70 90 90
en ajoutant 1 dans une case qui vaut 0 le programme doit changer les cases non nulles sans changer les sommes des lignes et les sommes des colonnes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 :- use_module(library('clp/bounds')). resoud(Vars) :- Vars = [A1, A2, A3, A4, A5, B1, B2, B3, B4, B5, C1, C2, C3, C4, C5], Vars in 1..120, A1 + A2 + A3 + A4 + A5 #= 100, B1 + B2 + B3 + B4 + B5 #= 120, C1 + C2 + C3 + C4 + C5 #= 120, A1 + B1 + C1 #= 40, A2 + B2 + C2 #= 50, A3 + B3 + C3 #= 70, A4 + B4 + C4 #= 90, A5 + B5 + C5 #= 90, label(Vars), write([A1, A2, A3, A4, A5]), nl, write([B1, B2, B3, B4, B5]), nl, write([C1, C2, C3, C4, C5]), nl.
Partager