% % MiniZinc-modell för Mats Anderssons tävling om resultatet i fotbolls-EM 2008. % % För beskrivning av tävlingen se: % http://www.mats-andersson.se/blogg/show.asp?svarsID=1956 % % % Min variant bygger på Mats tips med följande villkor: % % 1) Skillnaden i mål mellan lag 1 och lag 2 ska vara samma som Mats tips % (om Mats anser att ett lag vinner så gör jag det också. Mats borde veta % sådant). % 2) Totalt antal mål gjorda i alla matcher i mitt tips ska vara samma antal % som för Mats tips % 3) Inga resultat får vara exakt samma som Mats. % 4) Det får vara maximalt 5 mål per match. % % Med dessa begränsningar finns det 29 olika lösningar. % Det beslöts innan lösningarna studerats att ta den sista lösningen % som solvern Gecode fz (version 1.2.1) genererade. % % % Model created by Hakan Kjellerstrand, hakank@bonetmail.com % See also my MiniZinc page: http://www.hakank.org/minizinc % int: n = 24; % antal fotbollsmatcher array[1..n, 1..2] of 0..4: m; % Mats tips array[1..n, 1..2] of var 0..4: h; % mitt tips int: m_sum = sum(i in 1..n) (m[i,1] + m[i,2]); % totalt antal mål i Mats tips var int: h_sum; % total antalet mål i mitt tips solve satisfy; constraint forall(i in 1..n) ( % förhållandet i mål mellan lagen ska vara samma som Mats tips m[i,1] - m[i,2] = h[i,1] - h[i,2] /\ % max 5 mål per match h[i,1] + h[i,2] <= 5 ) /\ % inga matcher får ha exakt samma resultat som Mats sum(i in 1..n) ( bool2int( m[i,1] = h[i,1] /\ m[i,2] = h[i,2] ) ) = 0 /\ % totalt antal mål i mitt tips h_sum = sum(i in 1..n) ( h[i,1] + h[i,2] ) /\ % totalt antal mål ska vara samma i Mats och mitt tips h_sum = m_sum ; % % Tyvärr kan man (ännu?) inte skriva ut strängar, dvs namn på lag etc % i MiniZinc. % output %[ % Totalt antalet mål per tips. % "\nm_sum: ", show(m_sum), "\n", % "h_sum: ", show(h_sum), "\n" %] %++ [ if j = 1 then "\n" ++ show(i) ++ ": " else " " endif ++ show(h[i,j]) | i in 1..n, j in 1..2 ]; % % Mats tips % m = array2d(1..n, 1..2, [ 1,1, % 1. Schweiz - Tjeckien 1-1 2,1, % 2. Portugal - Turkiet 2-1 1,2, % 3. Österrike - Kroatien 1-2 0,1, % 4. Tyskland - Polen 0-1 0,2, % 5. Rumänien - Frankrike 0-2 0,1, % 6. Holland - Italien 0-1 2,1, % 7. Spanien - Ryssland 2-1 0,0, % 8. Grekland - Sverige 0-0 0,2, % 9. Tjeckien - Portugal 0-2 0,0, % 10. Schweiz - Turkiet 0-0 2,2, % 11. Kroatien - Tyskland 2-2 0,2, % 12. Österrike - Polen 0-2 3,1, % 13. Italien - Rumänien 3-1 1,2, % 14. Holland - Frankrike 1-2 1,2, % 15. Schweiz - Portugal 1-2 0,0, % 16. Turkiet - Tjeckien 0-0 0,2, % 17. Sverige - Spanien 0-2 0,2, % 18. Grekland - Ryssland 0-2 1,4, % 19. Österrike - Tyskland 1-4 2,3, % 20. Polen - Kroatien 2-3 2,1, % 21. Holland - Rumänien 2-1 0,2, % 22. Frankrike - Italien 0-2 0,3, % 23. Grekland - Spanien 0-3 1,2 % 24. Ryssland - Sverige 1-2 ]);