From 7a41e699ed08e20cf0dee2377c633fa0022745b4 Mon Sep 17 00:00:00 2001 From: JIMMY Date: Tue, 17 Apr 2018 20:12:11 +0200 Subject: [PATCH] Soluzione proposta --- VotiNobel/bin/.gitignore | 1 + .../bin/it/polito/tdp/dao/ConnectDB.class | Bin .../bin/it/polito/tdp/dao/EsameDAO.class | Bin .../bin/it/polito/tdp/dao/PopulateDB.class | Bin VotiNobel/bin/it/polito/tdp/dao/TestDB.class | Bin VotiNobel/bin/it/polito/tdp/main/Main.class | Bin .../polito/tdp/main/VotiNobelController.class | Bin VotiNobel/bin/it/polito/tdp/model/Esame.class | Bin 2190 -> 2190 bytes VotiNobel/bin/it/polito/tdp/model/Model.class | Bin 642 -> 2450 bytes .../bin/it/polito/tdp/model/TestModel.class | Bin 576 -> 1253 bytes VotiNobel/src/it/polito/tdp/model/Model.java | 74 +++++++++++++++++- .../src/it/polito/tdp/model/TestModel.java | 8 +- 12 files changed, 80 insertions(+), 3 deletions(-) create mode 100644 VotiNobel/bin/.gitignore mode change 100755 => 100644 VotiNobel/bin/it/polito/tdp/dao/ConnectDB.class mode change 100755 => 100644 VotiNobel/bin/it/polito/tdp/dao/EsameDAO.class mode change 100755 => 100644 VotiNobel/bin/it/polito/tdp/dao/PopulateDB.class mode change 100755 => 100644 VotiNobel/bin/it/polito/tdp/dao/TestDB.class mode change 100755 => 100644 VotiNobel/bin/it/polito/tdp/main/Main.class mode change 100755 => 100644 VotiNobel/bin/it/polito/tdp/main/VotiNobelController.class mode change 100755 => 100644 VotiNobel/bin/it/polito/tdp/model/Esame.class mode change 100755 => 100644 VotiNobel/bin/it/polito/tdp/model/Model.class mode change 100755 => 100644 VotiNobel/bin/it/polito/tdp/model/TestModel.class diff --git a/VotiNobel/bin/.gitignore b/VotiNobel/bin/.gitignore new file mode 100644 index 0000000..b739e8c --- /dev/null +++ b/VotiNobel/bin/.gitignore @@ -0,0 +1 @@ +/it/ diff --git a/VotiNobel/bin/it/polito/tdp/dao/ConnectDB.class b/VotiNobel/bin/it/polito/tdp/dao/ConnectDB.class old mode 100755 new mode 100644 diff --git a/VotiNobel/bin/it/polito/tdp/dao/EsameDAO.class b/VotiNobel/bin/it/polito/tdp/dao/EsameDAO.class old mode 100755 new mode 100644 diff --git a/VotiNobel/bin/it/polito/tdp/dao/PopulateDB.class b/VotiNobel/bin/it/polito/tdp/dao/PopulateDB.class old mode 100755 new mode 100644 diff --git a/VotiNobel/bin/it/polito/tdp/dao/TestDB.class b/VotiNobel/bin/it/polito/tdp/dao/TestDB.class old mode 100755 new mode 100644 diff --git a/VotiNobel/bin/it/polito/tdp/main/Main.class b/VotiNobel/bin/it/polito/tdp/main/Main.class old mode 100755 new mode 100644 diff --git a/VotiNobel/bin/it/polito/tdp/main/VotiNobelController.class b/VotiNobel/bin/it/polito/tdp/main/VotiNobelController.class old mode 100755 new mode 100644 diff --git a/VotiNobel/bin/it/polito/tdp/model/Esame.class b/VotiNobel/bin/it/polito/tdp/model/Esame.class old mode 100755 new mode 100644 index aade37a5f2a5fcf21dbc96ad80ed4392427d5dc2..6cd0d1eb5f09558278908da7739819bd5a4f9544 GIT binary patch delta 42 xcmeAZ>=WFe#lkMivXwznOLnp$iz1`Q=WFe#lkMTl|fQVlx4CZiz1`&9#cgtJFC@90n;S-W zv2XkVXPn`|@xd8hoDpU$9dyR=NoV{KzWOi3wNKKJhL0H^dUMV`XYak%-fN%!_3tmg z0XU9I6d{GU8)P=TvKx4rptO;xcqONtS&(lOhQhw<_DwrewySHIi>ue2VxSOlYIeot zQ9+;81Gk(hxV0dwuxH6#tJ*=`cNC^Nj?WaHmFXN~IoY%HHJp;|DI_|s(U{Sf=4UTT zhMHHd-*&w!GelRNS}=QaO+n2obe(alZg5s1oJ=h<+#ET?5Jta=Ui3wAKw)Gzg7(lc z44{7x6kam12Qk^kO^jevp=ZqrF4u#=6&U2*pG*T5%eL>zzG*aqb+@K4+CjIi{$x8$zoJ*Rm%JeG+-l8rDozu{Kr;Un429{Z ztuL;76h{;Wo-}gS_w8HK%@`&c1xcCMi!Na}X~INLjH@XVN0DJSe5Y9VYwk_598Bgr z%aWHy^i=B=$M@!Zr{o4KpUSg2wZPd>=-#mX+paA&8rof>TN^udiUnTK@*PNarbsc` zbf@*jlvDY=IE8E!rxkjiFc;D$&LBrzZs7QK;Q7S0tJ(RcJ-Zh(n2q9XHup({ol_I< zV2&iK&Q~0l13MAghKR|}J!kZ^)?=8*yC&WP*~KWoRspDOqMyM969p`A1lH}^qE5q; z70zbOt5j?jnI(O;v~+w*t7j>&i#HbRjiw&MwhYoU3e3^^zXhHb{L3b;2>vMXFMEL} zy18oN1Wqa(drB)WZW)Cn?w^|Y5KE%W&t<5;UKj)Rpe4+R_WK+x1W81_kitK06 zs|GgbM^xHSP6H z;(LTCCYa*2EhMepEm+}P)39hIrbf4sX5Qp|-V8%Bj*tQn=c_QnI0+&c<7%9F4(ZHR zBWg1<<6|1H6G1-?;22jS-Zt?DqlEcisDZR$>DI)lkQUN6HPZXsM|g8GoSS@vw-inr z_b?bY9)ZvO@0edqOg+T;YdNvJuW9OQ2b$u_8yEvSB zG_u4k0%)`$*W#9Iamx~15B=g4jBqnrZ6LVkatk-OjnI*Ae~a6Sa8t*c+%~N=fsXwE z<3VHfJtk!F2_TscrzTmIsQMNXDQAhjq`kiE|7QuD_B60jV^Onr|oMN zMoM>FOJ=iGx=pQH#gk24#E@Qzs>Ad=g6kbclv^_NB9LJiF-s)UMTxX&L?+?}&qFBx E2bst8jsO4v delta 369 zcmZvX%}T>i5QWd&nkKnTwKi5;|6^TLH$f0wR0MyPLWPPTxCt0aN}5Q$3a$#`3)H-b zx=?W81NaWUia5D+>1OVkIcL7hJiCvE{Qmv?0w++KoL+|# z1=!goJ&muN?1y$nHeA$9%n>U6;6Cu}ZNe8P~BbYb&a-1-)rGe$ihl=ODb{30zc4&AbK!Cw0 zay9uPpI_qF*#3a^%0fVL&21i{#MPN-2W9RE)0p8@g|)z}h8(dH+{-sqtMzv*(u;O; dlGKh3i&-T!!KdpeV{=>{Sck`0!UlH&%|CitJ4^ro diff --git a/VotiNobel/bin/it/polito/tdp/model/TestModel.class b/VotiNobel/bin/it/polito/tdp/model/TestModel.class old mode 100755 new mode 100644 index 0e061364803a4913ba8a435c49fb2b370a31f3ed..1c5f710d86b73e5cbebd50515c9625386f73ca01 GIT binary patch literal 1253 zcmaJ=+fGwK6kStVPg@R9E-fGe1#c}-4l0UL1QkI^S~MvkQJ|39f=dit1?h_Q zhEo>)1~1!!p{L+gxV_1JsqaU|u-cY&hS9=*N#rSj!==lR%DgF@k|`-)y48Gk(?B=F zU@MFui8vC7>7~y^5-ElOVp8#JUhNQU0bTDBRYp`>jUWL@QB7{Fx% zgXbzy+N~?$m>9wps)E;`q9mIirDwe)Vv6Vq?&PBwVMrHc)s~(w(iP7sOP7C;o-5K@ zGA(r6`E(prZ83ykCqHBo*{H(DIC%$?>*QI?L5$3k-!jXG`!Fy8 zAp?WJZU%wK?F>Rb+5#fm7=*(&0>zjZxPT-d12d51076a%eg esami; + private EsameDAO edao; + private List soluzione; + private double bestAvg; + + public Model() { + edao = new EsameDAO(); + esami = edao.getTuttiEsami(); +// for (Esame e: esami) { +// System.out.println(e); +// } + } + public List calcolaSottoinsiemeEsami(int numeroCrediti) { + // inizializzazione + soluzione = new ArrayList(); + bestAvg = 0.0; + + int step = 0; + List parziale = new ArrayList<>(); + recursive(step, parziale, numeroCrediti); + + return soluzione; + } + + public int totCrediti(List parziale) { + int somma = 0; + for (Esame e: parziale) { + somma += e.getCrediti(); + } + return somma; + } + + public double avg(List parziale) { + double avg = 0; + for (Esame e : parziale) { + avg += e.getCrediti() * e.getVoto(); + } + avg /= totCrediti(parziale); + return avg; + } + + private void recursive(int step, List parziale, int numeroCrediti) { + + // Debug ?? + // for (Esame e : parziale) { + // System.out.print(e.getCodins() + " "); + // } + // System.out.println(" "); + + + // Condizione di terminazione + if (totCrediti(parziale) > numeroCrediti) { + return; + } - System.out.println("TODO!"); + // Controllo se ho trovato una nuova soluzione migliore + if (totCrediti(parziale) == numeroCrediti) { + if (avg(parziale) > bestAvg) { + soluzione = new ArrayList(parziale); + bestAvg = avg(parziale); + } + } - return null; + // Generazione di una nuova soluzione parziale + for (Esame esame : esami) { + if (!parziale.contains(esame)) { + parziale.add(esame); + recursive(step+1, parziale, numeroCrediti); + parziale.remove(esame); + } + } } } diff --git a/VotiNobel/src/it/polito/tdp/model/TestModel.java b/VotiNobel/src/it/polito/tdp/model/TestModel.java index 358e8dd..dcd0099 100755 --- a/VotiNobel/src/it/polito/tdp/model/TestModel.java +++ b/VotiNobel/src/it/polito/tdp/model/TestModel.java @@ -1,13 +1,19 @@ package it.polito.tdp.model; +import java.util.List; + public class TestModel { public static void main(String[] args) { // TODO Auto-generated method stub Model model = new Model(); - model.calcolaSottoinsiemeEsami(20); + List soluzione = model.calcolaSottoinsiemeEsami(22); + System.out.println("Migliore combinazione di esami: "); + for (Esame e : soluzione) { + System.out.println(e); + } } }