From ecb8aa569a9ae0f1c7de44ae7a52a6bc86c246c1 Mon Sep 17 00:00:00 2001 From: vaisse Date: Tue, 16 Sep 2025 21:00:33 +0200 Subject: [PATCH] fini --- src/Node.class | Bin 3466 -> 0 bytes src/Node.java | 45 ++++++++++++++++-- src/Simulation.class | Bin 1072 -> 0 bytes src/Simulation.java | 108 +++++++++++++++++++++++++++++++++++++++---- 4 files changed, 140 insertions(+), 13 deletions(-) delete mode 100644 src/Node.class delete mode 100644 src/Simulation.class diff --git a/src/Node.class b/src/Node.class deleted file mode 100644 index 26345506128d68c69e59a59b50de8aad65c7c5bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3466 zcmX^0Z`VEs1_pD6>6{E=43XRnQ4G-_Rt$(0%gGSO5YNGoz{QZrkOUG*=3)?INCB}@ zIT+G77}7z^40eW0ke)0q204ao5Gw~np&DXG?W){G2%2qWWjQu7!Y7(E#oSW{99N-`K3cv3QpQj<$kQ__m^ za~T=9VBC^?Mh3y;(&Cc*-1vgTqQupY$O)RixWH3b)v4L=reT69kau#oL zaY;c@ZgG5SUP)0UBLlL@!Ko$I>kABd6QfC)}5 zf!Yb?`X&~rfHgq{2{{Dh6qfAN%3?+aWvr$m8vs%)URscnSd!|UT3PItU*ud`ToM2Z zpJGM^W)00SMg|t={FGFXcQW%*{YrC_Qj0CYK?aEh=NFa06&E{Idgei#$7Yk6msw)R$RLU>bix=JxPtRbi;`2_GC>i_3Cd!6 zpiIoeV8CF=&d|Wa(8$ol!(ho^!o$$a(8A8p%EQpc(9X!9=H}?>gO34>Z;)9 z=F?th;_AZA(80sd$q>fF(8bWr!(h!|!^6l)%3q~PZtq7dZj?in278szGt;OVE}>lnbuz`(=M2htz_au#yg!o#4?puxk?&(Old zpa){9GN|z|=rZW=FsOsLeGC&A8CXC*;$iS*@Z(|7X3$||5P`ZoFJA#sitsRaGI+5w zOypsh#4wqMVG6@k9)?f`8%72Zu%+N^h$yZY83Yl+9*M;nzKI1q4AVg2WXxc~$bjTh z|D>$c^)YWHMhU@it3t*+roq~kfjMR{;)34oVwoX*~uF6nT9#z5#DO(+{wVi$gq`xc_RY@10#bS z0|NsW0}}%Sg8~CDgCYYXgFS--R9_qeGXpaN1A`_=oAyoy7AA(747{5dScTZOF|aeQ z0SoKwWZ+=lraQVeVi3=Ap^ybP)gq6}&b;tU!L$_$ze>I_;8jtmS8 z%nXd;42%p;aJzD$cA0<;h1#V6^^OboLa_+TCp;@JQd=Vf9z zz`(Zw?k^z*76t|e7Y1GiR|ZiAHwFm?510iK42%qJ4DL`1)Swn{X>DQP*WSh;5RM+r z{tTQ90St@`9$57VV$~DOz{wE8zz8b&p!UczFfxFW6sy)21|g6;At{LsEEvha$l%T3 zgGH$@D1{&^jb&g26}V8PN>JCcX-RKo5Jq=-A_FT!5(6WHKiK`CgslQq&!e@4K}32R zgXjSUF?7eIGB7d(!u{&RzzmK6Ic=>i48kl4+Ze<_dcnTdirm5=!IH3*K>}ejB;Yd{ zxEQh+gc-6KWEpZ87#V^Xf}t+XfhJo+W?LEUeTx_rv}KG?O_nhN#X<`c_ zgIU1@&V7)qlFz`wP{1ILj=f|vXBtk#vrwWK^i0= zgDkL!K^IBP2h0W$a9uK>JSZZoy^TR8yoH%@`Tu2LUrhmp7Q`z?3_J`B3>6IQ43!N0 z3{?yQ42=vj3{4Db49yJQ3@r@d46O{=3~dah3{4Ex42=wp3|(L^iZZYX`~{_`KMdTA zzZt@QF|ht*U}a!r2xSO^dbblAalTsH8DzC~Gss15XOQ2@Afm;*l|ceT2qOdq5lnuq z-3$tm+ZhzMGB83*KP6Dv#Dl|cyPa!6{_V&Gz6V3^Fn!obDA&%n(f!ob5I$-vK` s!XUt)&mhWR#URGu&M<|+hhZuM6GJ#SV@5ETg9}ea22+M81~WEJ0A?chw*UYD diff --git a/src/Node.java b/src/Node.java index 95fb5cf..a81b409 100644 --- a/src/Node.java +++ b/src/Node.java @@ -1,7 +1,6 @@ //IMPORTS import java.util.LinkedList; import java.util.*; -import java.util.Arrays; public class Node{ //ATTRIBUTS @@ -15,6 +14,9 @@ public class Node{ private LinkedList directedfrom = new LinkedList(); private LinkedList directedto = new LinkedList(); + private int directedfrom_len = 0; + private int directedto_len = 0; + //PARAMETRES CUSTOMISES /*le dictionnaire de paramètres customisés n'est pas ordonné. A prenre en compte lors de la conception ou de la modification de fonctionnalités.*/ @@ -75,12 +77,45 @@ public class Node{ /*----------------------------------------------------------------------------------*/ /*methodes associations dirigées*/ - public void addDirectedAssociation(Node n){ - this.directedto.add(n); + public void addDirectedAssociationFrom(Node n){ + this.directedfrom.add(n); + this.directedfrom_len++; } - public void addDirectedAssociationParent(Node n){ - this.directedfrom.add(n); + public void addDirectedAssociationTo(Node n){ + this.directedto.add(n); + n.addDirectedAssociationFrom(this); + this.directedto_len++; + } + + public LinkedList getDirectedAssociationsTo(){ + return this.directedto; + } + + public boolean hasDirectedAssociationTo(Node n){ + for(int i=0; iKu|O04pdiWE{(6^b)UQj6`_8O(VYEEp^q8AL#e z^-D`KbM$>O^RiP@d@_qm7#Rc*!a<37DfzkV3|2f0)(kd`3@m?ge7X<4Ai+bjjq^749F*0xzBo-B?dgg(w!=}xXk%2ie zB?Zk;h|{e#qZk>O(^J8EJvEUmg~~HBu;-;#lz>fV(eTvtMDf2%eknMqaFpaj5(dZ; z7i41~!q$uoLV2m>&ZWgA`MCj!MTxnoB_OA(V{tE%8=#ssqZkw!gc(E_K!AyX5tNh| z7#YMF7#L(37#SED7#LW!wlgqpWME)mWRPHBU|<6avM_KmNHR!4m7Zf@VPIikV93?l z$FhilXA=XH5c4($mW{g^SR=PHu=(s}V2|9+z~RemC#%J5w1a_j5req)ZU(MMA@1!A zJlhy}!&{gcm;Zl?B(I_^yN!YG00Wm0zm7o4HU"); return; } + if (Integer.parseInt(args[0])<2) { + System.out.println("FAILSAFE: MUST BE GREATER OR EQUAL TO 2"); + } //fin tests //variables LinkedList pool = new LinkedList(); + LinkedList popular_kids = new LinkedList(); Random randgen = new Random(); - int added_links = 0; int r1, r2; - + double pertmax; + int scoremax; + Node x, y; + int targetScore; + int added_links = 0; + int no_link=0; + int last = -1; + boolean exit = false; //fin variables //prog for(int i=0; ipertmax){ + pertmax = Double.parseDouble(x.getDirectedAssociationsTo().get(i).getCustomParam("pertinence")); + } + } + + if(Double.parseDouble(y.getCustomParam("pertinence"))>=pertmax){ + x.addDirectedAssociationTo(y); + targetScore = Integer.parseInt(y.getCustomParam("score")); + y.editCustomParameter("score", Integer.toString(targetScore+1)); + added_links++; + no_link=0; + } else { + no_link++; + } + last = r1; + if(x.getLenDirectedAssociationsTo()==(Integer.parseInt(args[0])-1)) { + popular_kids.add(r1); + } + + } + + try { + popular_kids.get(0); + if (added_links>=((Integer.parseInt(args[0])*(Integer.parseInt(args[0])+1)/2)-Integer.parseInt(args[0]))) { + exit=true; + } + /* rien */ + } catch (IndexOutOfBoundsException e) { + + /* rien */ + } finally { + if(no_link >= 10000){ + exit=true; + } + } } + + + /* affichage (dans la console) */ + System.out.println("les sites sont classés dans l'ordre du plus haut score au plus bas:"); + for(int i=0; iscoremax){ + scoremax=Integer.parseInt(pool.get(j).getCustomParam("score")); + pertmax=Double.parseDouble(pool.get(j).getCustomParam("pertinence")); + targetScore = j; + } + } + System.out.println(" "+Integer.toString(i+1)+") "+pool.get(targetScore).getVal()+" - score:"+pool.get(targetScore).getCustomParam("score")+" - pertinence:"+pool.get(targetScore).getCustomParam("pertinence")); + pool.remove(targetScore); + } + + System.out.println("\nfin programme"); + } } @@ -42,8 +131,11 @@ public class Simulation { La classe Node.java est une classe que j'avais codé anciennement; je l'ai reprise et adapté à l'exercice. Les segments du code pertinents par rapport à l'exercice sont -codés dans les sections de nommage suivantes : +codés dans les sections suivantes de la classe Node : -PARAMETRES CUSTOMISES + -methodes associations dirigées -methodes params customs -CONSTRUCTEUR(s) +J'avais, pour des raisons que j'ignore, des problèmes avec la division des pertinences par 100 pour une représentation correcte. +La représentation est donc en pourcentage. */ \ No newline at end of file