From 2a51a8993d9c7c010062879a6a7cb739fdfbe055 Mon Sep 17 00:00:00 2001 From: eslusarz Date: Sat, 20 Jun 2026 19:23:26 +0200 Subject: [PATCH] Mi sono rotto il cazzo --- asdl/bin/binary_tree/LinkedBinaryTree.class | Bin 12442 -> 13819 bytes .../Network$BreadthFirstIterator.class | Bin 2518 -> 2518 bytes .../network/Network$DepthFirstIterator.class | Bin 2530 -> 2530 bytes .../network/Network$NetworkIterator.class | Bin 1424 -> 1424 bytes asdl/bin/network/network/Network.class | Bin 7450 -> 8950 bytes asdl/bin/totale/p160726/Corriere$1.class | Bin 0 -> 1303 bytes asdl/bin/totale/p160726/Corriere.class | Bin 0 -> 3768 bytes asdl/bin/totale/p160726/Spedizione.class | Bin 0 -> 1534 bytes asdl/bin/totale/p240618/CorpoDocente$1.class | Bin 0 -> 1199 bytes asdl/bin/totale/p240618/CorpoDocente.class | Bin 0 -> 3383 bytes asdl/bin/totale/p240618/Docente.class | Bin 0 -> 1115 bytes .../totale/p240709/AssegnazioniDocenti.class | Bin 0 -> 2705 bytes asdl/src/binary_tree/LinkedBinaryTree.java | 87 ++++++++++- asdl/src/network/network/Network.java | 53 +++++++ asdl/src/totale/p160726/Corriere.java | 140 ++++++++++++++++++ asdl/src/totale/p160726/Spedizione.java | 53 +++++++ asdl/src/totale/p240618/CorpoDocente.java | 106 +++++++++++++ asdl/src/totale/p240618/Docente.java | 54 +++++++ .../totale/p240709/AssegnazioniDocenti.java | 79 ++++++++++ 19 files changed, 571 insertions(+), 1 deletion(-) create mode 100644 asdl/bin/totale/p160726/Corriere$1.class create mode 100644 asdl/bin/totale/p160726/Corriere.class create mode 100644 asdl/bin/totale/p160726/Spedizione.class create mode 100644 asdl/bin/totale/p240618/CorpoDocente$1.class create mode 100644 asdl/bin/totale/p240618/CorpoDocente.class create mode 100644 asdl/bin/totale/p240618/Docente.class create mode 100644 asdl/bin/totale/p240709/AssegnazioniDocenti.class create mode 100644 asdl/src/totale/p160726/Corriere.java create mode 100644 asdl/src/totale/p160726/Spedizione.java create mode 100644 asdl/src/totale/p240618/CorpoDocente.java create mode 100644 asdl/src/totale/p240618/Docente.java create mode 100644 asdl/src/totale/p240709/AssegnazioniDocenti.java diff --git a/asdl/bin/binary_tree/LinkedBinaryTree.class b/asdl/bin/binary_tree/LinkedBinaryTree.class index 48097788c53367b2f7d1aea193beaeb9e5eb37d8..d0a651590b48931c9aca14756627edc331eb7906 100644 GIT binary patch delta 1314 zcmZXTS!+{K5Xb*Bxm}Xp)+At!Caq$n;#C_#TEQl%ORRN^TNkV^jV4WR8(Oq+2ZJv@ z2!a?C)CU!W3id&2gZK?B>YQ_LH+@LXIkVg|^PB&9n*KH9|Ni^KEP(yg zQvoJKN@q?XbT&*p8t1hey+ zJ$!J$&Sx%XhY2mQLwk=8rmv=>`Sfrudh)_x_F|zmQMywVD)p6>ON#o$F_Su|h2XbG zd$M+Jpl~29;TN+RLcI#z8nY6uPUuOKP9aVR;vM+ip7?(Z)( z1s+n<`_F-I^+lp2nm|}1?VbnA4hUKk2+pI-Gj6HfBpn(TtASei_el(R2wu)(ot#Z4 z10k%J(}q=+u$-du^MJh4o3N2&uNasPs|%?HMV9XZH@8osZ62m9Nqw<8&!NUrtK2^Z z!xN7@L76eGLR?SM^(5*RJ(9Car=WQbjZWxBwM;6*TG!?9kmTFA&PCm><&^8TD~01QDh0t7bW@xX(q95GYLlHu!>CobBq{_2!-+DwBePYsr)c$6LWJ7Lw%aRofopwtxz@}F& zmKU}(j5GS);!iOs&GssqqFIGY@EQM)B^3+v3zV_)te#6M9&tS3NG4IoFHu=%yi$?j zNT1QSjD52r$ZtiG@6o^$BFU*D;yf*yoDuXN(aEzbblI!b2sB_1#r4ySqmJ5S#{xe{ lXJzN;(s{NLztnLpynYS6g4|^R)kN}EJEd8sF8Ae9_g~E13ykCMPn9oSY;yfl+hwXQ2~vf=rAqKqX9! Kt_+-D+6@2(sSUOO diff --git a/asdl/bin/network/network/Network$BreadthFirstIterator.class b/asdl/bin/network/network/Network$BreadthFirstIterator.class index ec0923a15a6a24d62a97011db23e465e192aa6f8..13736160d22c8f37a6e9fcb58b775801a1528e1e 100644 GIT binary patch delta 94 zcmca6d`)~jQR`$jD`%VjK&O>j3x}ejHV1xjAjg}Kz<&h<>Xx)YZz@Or*q~50PW-vCIA2c delta 94 zcmca6d`)yV8H^bWr9kmI#+=E=IMy&0OfKfk F2LNJ|7eW94 delta 103 zcmaDP{786%6uYVv11F;>g9xKEgFK@QgBGJ4gBznfLokqzWmIBFV^n4+W>lGM&pw4w zeexCdv#Qz*e2lsb%8Ysp=8XCb9*hPIF^q-`@r*_c8H~mZr9kmIM)S$XIMy&)PcG)n F2LO8x60`sS diff --git a/asdl/bin/network/network/Network$NetworkIterator.class b/asdl/bin/network/network/Network$NetworkIterator.class index 29b534ee5c784a67d49e615a1d8f4831df186a60..66276f837b771ebb3ba71a5ae133ab8a512b5c86 100644 GIT binary patch delta 46 zcmbQhJ%M|JEeq!_22O_G43Z3gCcCjXFflSr?qCUKV`OCzU}T&8kj0LPk$bWtYd!!R C6AI-3 delta 46 zcmV+}0MY-D3y=%2Jp>8G00{ub02u(slSTwU0szaChy+sx0MGys0MV1-1U>=)){`Lx EZ!;kcZU6uP diff --git a/asdl/bin/network/network/Network.class b/asdl/bin/network/network/Network.class index ac6f84c3f2f922c78e9f32f7eb735fcac24d3635..c7c501910c8457495ad662ff50bf187d914d19ed 100644 GIT binary patch literal 8950 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 SS$_XJzyE{tC3^lm&i)@iUp4>$ delta 3025 zcmZ`*YjjlA75>i5WF|9nhYW;dn3>EZkdlN+kc3AxB;~Q_@Q5S}NLo4}l|&dZJdzYb z3{b@Iu(T=yM^sX^h_q=eZBZaGj0)B&N?Ym^(WSP(^^ZTg{N*zJ&b>2tCaf}R);;%} zefHVkxA#7K-*2M>^Ig}zzw|nQ#rW(c*DRatw-?)+G_1mE`J%ne-lAb0U%if?_Z|&v zF~bEf+BCG|URmpCw#PNxhfVT?qcGTkEe>oJ@N91HZJ)KXr(^4^rg)Ert=J~dWR=*v z@N);c<$GB^>vrsrUuA`J)nPj|^x^>l>!x^*K#5%J3CM1Twp__}Y1pk~_U-X)UA=KP zy6_7Pd-0%vS zXJ>pvPkf^b0lqUvxp%@mXD)1*j2z_2#Duuh$JrF*!Y^m!d^c|z zXFs4*N>GV1%tHhGA8ACjC-EMowCJy-KtV8o;R;<%~__Q z4S9U#Ba6>k*ii=$e#rSk1ev1wTrGl?&rVPXj33JzdDEjmfrW-ZU8~)mO#)0; zE;+em!B2S*5aXMLqcd^=x#h!%DVtW^rkx7FQn@JKSJjGTocTG=H@4GSfHNwh6%CXL z6394Q9?lQ%``JlkSR``fzAcbWZ8%J?J6$TNSIf_n!E11)uP*x11=L)=Z zL*H6T_6Q7&{U_;|zD(Rv9V6U|MI2XPJ=UO2=U{}TImv?y}Y?lNl((X_UbXn8WCAt4qQBcQEZ$BUw5as4Xa9 zwVBDW8l4%a?t_muHGN9(37?2^f;uGwug717t_#(J6OBsV~>s_qH~R!5su53&%8JZ94X|Kzj@cB~tvm}YU1}+`$wgP{1 z3a*kVxP~m1Duk<2MZsnJ;!|D6A8}OKm2F(cXK$^GgYvV2(n_||!>bQI8UFH)e>HsN{Q%Xv8vZ zSS41;Zwh^Rm-Wh4#KwFDZ_wq%{4V&bEGP=zcUdoChU863)a982+ZdDF>Yz&;{Jz5& zyKxq04$R@4e@4+cM&G8lco(x7t)_y?T-Ak*mR`=r#vGE*78O{J;cxQQqM$gT&jymS zxAa*VKR9Mjof|xbtG7Ah9oauMEUw8@Q)_}7Zfoi9JT2`1=WWh-jb{{C5Ai!$;kd45 z!B=p*-S1KEU&I9XfRrrwFxitn!pEEk=&SQIbA$3xj-PNG;&_wer<7;w@=*-^4_~ez APXGV_ diff --git a/asdl/bin/totale/p160726/Corriere$1.class b/asdl/bin/totale/p160726/Corriere$1.class new file mode 100644 index 0000000000000000000000000000000000000000..6e227e9161c2bc73d9664df4e3d4a2c01e504658 GIT binary patch literal 1303 zcmaJ=T~pIQ6g}G(LQ4u2`6vR4TA?36DJqD?Dz~95>@!5lc0)wL5Z9q$Acio8bwrV12&YxRa7|ibr*(QDoIQSE3WkxI zZE$m+J5ucfV?>c+n7S@msz9VP!!Ls{)_Yjho1!54r<9DX9Lp0st(AuFZLVNt`vrL-NNjwR$7qJc_#Hp5uD zi+F&L*%0U6+KVWqG6^%5(rrW8!S+4tqcMOY)O%WB`|`K5Roh_CB|;eJcfo*_t4Wr zkh3_Blh{t;cuk0v-C0Ode2A-TVOdo+pX@4s^FPS%NKsMF>t!}6I6*~Ezx(dH%Q^Sn z*Ps3S!;b(Q!{2q(3Ebm3o|%)$eE*SyM-LrIjySGsNmuI71R5`ySIuP3w6n=G^Ot1W z6KF~oU02%PR94R0B!g4oH1QXtwW*aU9<`UZM8^695L$cW;SaT?W|S8gvN$CgYIgUrCIk0}m?fIt3p5 zp91QdQE+w}=s~YQBJJ3oY1xI-a*_B}S_o=!uxm~Md%!?a>2Hqom63h}hj5r&=8LS^ zhc`G}fly>_y@*wjb~0AlC#Vcb2q}vsFAI($ue=w6%e{>0nG8JGtEpuHL1K5;5?dyb z)NY;f%=BgUQdA;Luprq|Wvv=q!nhPJP57$89)FA(T$YQhLDpqwR}hQer>aj97{v)4 z$LXtF+1xPjI8G8#i=3OD;|jD?ogEA1G;j(j9j6IF*+8^wU>p;~!IszPy*aW_F--Vm@lO{tb?O(bR~m3YhjsXl;&RCB%`z1syD*ifJ0` z8OY)ybGT~eit@|_#pYo$yE1sKU@T;9#DBsc24Txxuy+ zXf2e6^rUnrxp$mXEhy)R4!;;uRzXe8`T-KnwvPTd7V&LmraFcMuH$tbzpR=>zPly- zTF0-VP%48|-SZnYn#L+UMHwiIETJX*-oPL5j+$n+S8kgzbqSYA4e$~ffk&#P{|90M z@hPY1rsWAs-RN7R3O%6Q2pD6wE!~lvStv-({=@_s9GB`7pupRdK=Pxkj(_}&;7a#b zo4Mu(LusAx_xL$N$u?@7ef?svgZ>ddOv~Q_bC#qXs7A@AFrZgwx{RhwG%MJw+0E#u%h?Ivx-pkmp@M1W34(oKK8=)(aF;vi0- z-;e2`z;756BfvxWvLEM39Klh-qGS)_5!%~}E)4Lrh9OE5& z6Qtxxfu*(2V=7n8&-D-y1|H?}7%#Fh?8j+ln!;h;kHeVYWp)OW{F@`4-=JLb@>9G7 z7-UNrWJ3&EsHgI+qm`pP@f0x_CU@t344&pm#b~hi4EGc&t*AHdpoO5^L4%G{!TY~h z0RkrG1BmbrBUUvsuiqG?8 z=xKhVohM(WpV|G?p_eeTdNP}5CaUrp!^~97&8S;rnQA(O&KrU~7TZ_h&4yv$!qwC&7H8QR-x}}fUBP$jP!V3x442smIfCQSb+IC}_As;tHq8(4 zLpp6`AN~k0(y;=#g}=exOQpS+DHHfHeo_kVrz$wHKdieet9XTt^J*=wXUn*THTc?X zyfvWpv}r5&MIAoH4!&w1;O!OsHimOIu$Sv-_coT6@jLCA(ssnfO+VS70{8f6J&(sP{)Ew2$A2LA52x(Vy6Hnh$}hu|Vt3d{cZ4 zAht%F0=}*Xe66vc>wN;Rv-U`#j<O-~b16g_YHMaw`76a)bUzuM^l1yoo-hy*nu7Bwj$(cMrcI9NKhow{)4@9+n> zVxfs(;=<_4#2;lm@6FgwE0AX1n|I&6=iGblo&Nsw?K^-?tR|odOn9zmRqbMZX=QPB zd8Jsc+Xv1&$F123LYV?YKH>DrH*6SYtXhP5U<-!_esy~L$^f;dAsh^9B)G)m;XOFWC;R{J%Q+!dtj#! zL0U&YG6Ipjv6lqtbtKRy-?BQANC~7%PR)MWI^MS%yME5YCAVT#_pF8^&w(-Oy>glY zlcfvAVWtD^YW-rfc_WlxyWDPbyUtA0_L#RXmk%&{PQ|jmBwe2ensxbvG>F@8T2_@g zcRBbiTQgp!a1*x^xYgBAKSdogn5FKnYHxSXf_Q;`w=);4yzH^VJ61iAD_K!PVDGvD z*YcN$W^Btu=5-XX(35JQm$5C7YPM&v$LU`^gb`SlFecs0ZmUtTA3Jgc)15pQbEg>jtO7>44kOAn#dVMXX|5TJ(K6$Q;R?oiB7mY1>P-@9B$&X}fTqY@ z-o*-EF!YHp8YFmJ8M6vdW<-Yokg{Ns7MWu>c%(OY{M_IvOb5Xmq|zjnDy~zP%n+C& z;j}^+^S#>j#F@R6iUWh|=V663^08)!HG2V;R77HNk^`*wCp~5}H(MUJ?6E$+e5f;SN3dKf!+I*(i?a96GOa9`~!e*vA^8{q%| literal 0 HcmV?d00001 diff --git a/asdl/bin/totale/p240618/CorpoDocente$1.class b/asdl/bin/totale/p240618/CorpoDocente$1.class new file mode 100644 index 0000000000000000000000000000000000000000..586cca45242ed41bba80695653383509a908b325 GIT binary patch literal 1199 zcmaJ=T~8B16g|@xmexf|g^FSUu}VLHQb0tCO|VLAQZTWE_hs3X#bvkIPJQs7_#b%j zK{P%XpZ!h7cxJnXS^~Sdvom+@oH^&-yTAT?{{dhJRSgk=jP#`8Sf%#r`pQOmvsCl^ zw)e_2EmvCEvWA#I^3?cXlpMotmEInmTBg)6EHDvxyV7=e=B#b_hV*=aVR>SAvMU5` z+<;tR;I{4BvMMl_yD>6?{L&orDv!?)EsbjB1pf!Uib%$7+`GXqJ)S-Zk6OipDG z(J_q&0&&B2?RQ77z>{ zZA!y@zh|_=lrQwd_S&b?cTwn3k_6V3$h1JB>2-b6+O<_7$NM{SS&1a?rrmN4+4Z^q z@+w--Gtipb*GZ_d-ea#_)A2gY+MXp(ykiY?P7f5XpNN27cU{Y`IYy^rv8P7%t&V)- zbtLAfBuX2CNG4Ug@^6dM;!qlIakh>KUm#H^et};2irb&LieQ}MFk`@3ilZLP6S#v3 zu2>?ZLxhivj?p($yujT>+BamXnNJwXoYON;&-?|RoHHUCpxzD`Ob~IB$msyR&_f8( ziG@Wh1vk!MnX?F^Qz&7DXUjw)v)@RG-neI4ZeVFh3N&6bt{eT1;pY3N7Oz=m zAfTHuC4uG%rBVuPr+?PBtQjj95!fPBtX4o(OpI=kisl4IVIl|llII&^H+uw9^OL;M#skL9n7Ni6oo3LFgS6W`Q{8?ksA=KL^JkxOI4BwXfNSF+++C?Vx z&?p7!jeOoNxp|`A83h?fGrJMst_vEv1oo_PBv*2rY0oBm{AX{NRw1xGH-%0#YUmL- zu%?)G94l`)r~Q0snPiJ8XV54U?bq=HjxZ|Ia|6S6nLs)oRmjGXt_xE6NgabyIbkd< zX*edZqpEljy;3-eAz6s0A3aA^y(a}~#?DB5*HVaBM!p)ZYo9B5jwc|p0^61?(==Q! z?;BTalftbtfnmNhX%wP@)E9iKC|j&5r^sU01(~+tnwH}jk~`1pID_XXw27-^3lr?@ zit#8L$wwNH#aRu1WTb1XE}!a{z$AOXwQjJDTgnz<%{?Lkn$j_X>1u^2wiM1`R>RD? z$q=6D_>-(bo%M3baEdaLc^&7ml_K9-_O7$yA{I{tze1+=S1F{dJ8i!$?; z&GI6sX36)7SyV}ZUDb3hj}U^hz6)M0lslns6Wb3RMd>9q3+=3{>N{=>o@T8D4#ufi zE?dlaIHr#OzScv$%UWF3aT3#Vbxp@{yrkwBDb`|oOSWlERuL@`EEmXBo8_%B$ddTv zt<1^ITSHCD-BG$Z&y6ykw)`2B)HXPf%7js)o^0l*9;%jYGKND~6w9*YeBScuOG9bH zh@;6A0@?lnZs>RwuQA=c#bh3j16l6;nB7Q}!W;OThQF3A$9?MfJN`koT{oPPHFZUH zP&R6zxEebkz*{=r#yfOgDAD=QCeAndj@ycb^PZ0PW!dUE6X&GsjaOQTAYF(uSN>3??mkaTKwiH%fxP32OM^ z<-?t(cJ)x-r|AT#*74+RiZQ@R}8JOpyZ52lsGVQ(h@ze^2@6b+yK7k!f74*_bKkew^ zCxZd>s93r~e^D&-%y~GsnF^}1J}b0a}=#aU_Y}z#N7Ls z@hIbYhEbg*CXdWjZ2KZ4|{PL1`}JPzRWE=GkJE3l4jKE z`U9jiWFKIshNC~TTmnn5s1S1Wie#eL#(f=Mn2i`WDGSfMbGPwyZ#nPbWNUH-`AX({ z<<>q{o36cy=5($0nS>+NBc%iLd`p4wP0zn+Hw2-Zy#QXJ^~f=fDTX(VJ$M1Vyb=d7 zLl9F;!zC06+Q}#=lC+eDM~G_`D3TAMexago zMzq_7hJ8~4 zF+`T+hm#oz$1C5ViHqca@%jqhoWG4W?!uF=@x}_?OT>O|KhhCc+LEle;@NdDfhnt!p;&u literal 0 HcmV?d00001 diff --git a/asdl/bin/totale/p240618/Docente.class b/asdl/bin/totale/p240618/Docente.class new file mode 100644 index 0000000000000000000000000000000000000000..28ae5c6a87eece6737548b4aac8c23fd0b2f3905 GIT binary patch literal 1115 zcmZvaU60aG5Qg8=LJL?vWC2%qR~Nr%%d+?tqgi8O)@-r~tBDvA_3F^A(6!sHP`vhc z_yfG+LK9JAqR}f8f0S`fTM=00eJ?=6(42f-j-_AfrPD2KH23a>cX)v7Bkc1+v zB@HT4!YXS>Lt)6b9M66*I_%nm$Gq#>qG8|SZif#X@s6E|pzjPBmRpMn&`2fSINny+ z1I?${FGt*^0_E9pB2HVz(+tj`s$%^=iV-Xgt5~A~e#~?hXPnQV?njGY$hHG+z1ZVN zao?#vANC_II!qM?(Fpf33LH0H)KEhm8^lk<(vtOOGlTr?k%q{${n5a(cN{@Ui+8^% zs-a3mW%{GYkOXS7Bmp|S2{YXaMPzV-PK{nJeNWI`GCv_})+Z>Ks}mH>#ssDJVOE9C z3e^I#6j`KYEg^>zon@RNuNmcI8K>z*l|o$>T0&V0Euk%wW)f#&#9|TpZ6OuPsbYFH|ngD_0jL)9Pd8*VLx~T&w>?QXbdMw@4<& z^&enw!uNNuJu%S+{XXKX=uHj>ix}33gH9w3^3`daMku!)m7FrH;XE#o;0htQNH8Q^ sqB=>)ijpGt#KgHRgLJ{3;Rg3qK%1p@@LQY7s>dh_+a)T3d%?fYD?UCli;nt3Sj( z_JtQ8+O=9OWv$jHU8_H;bl*FZFag%GFG=pX=bXLIKIb0z=ifj70x*H+IwArmy|QN( zt%1tW@Zjj+rGbfR)mnDU@9nZhTLz{Td<%l=U%n)h7WS7^+w-n6Pip9HS+wm;-#>>1_ z@u+qJDYPchjbl2F3bbz3#<~m~#|cVNsS$N7jOsTdtYKj33lRxS0+GonslXPKpat?~ zj-d0NnSVySK$Z@>>d%11v0zKBg22HrdJx|CP!jJmkVZxznJ+t@NsVT#)ouQDZp#0h zf%6z(Rm&EuIup)Y_X{y?)X?f$rSc0aAhr#lPG~_Ax?o^f0>u3Yfi@xqLw#*k7TgmC zt;hPHYMkdSkNqC~xYsUYeI={oQqz#$b1jP*6BzS5ec8Zg;DpDYS*x_uw>Rio13Zb( zaZSfW(?HPIz$C5{g)415JXUVX)^<`f1W^FxMs zrHU#zygF#0)`HJ4k}t8I=6AYUslU~p=Kk!eJRkm6tEbAY>~*ua{-PSImt0?7yJQQ^ z;51+CvgKxFYq|JB`$x7`?Vl%TO`w1!9o#j(gOW1{HL#2o3i84%)~q{AvTf7hms&@V zIi4DLhN5h;<1I*kwF{?x`3NR35|V<3|4UvVF<-8^d27m+8?kejoqt{q3r=v8M)}8r zEs^V#-#Skbw5Z=)!?Yx6xkfL+@AmXt80ihPJ$Q@u-_h}_^4`zSHkHSKhW*$J0|#g` z{1_a>A)W+2L1&P!L~n`Pop}$v{{xa6NHJyC-|64bk?CK@ktpuViSQ_%uL%93Xe@f;<%2S#O3o=P26w5LRac zt22bf=18qCVuTQW2S;V!#30Xc(q9TgZeWaBkI%_E*TE;bj;jLW+8Rbu+B$9syu(aR z-kwt`@H8Gv#Xcauh6AZs<_+dvA=%H%yJRgx<^_J*eBb|z5?nUyBqs>CzydCk{0N3H z%6~}4xQ#C1AK3JYtNj*Z2B{ zUQ+Pu(2PwSMvVQ|F{5)`>0D9Rt=+IXzN0Eu|^l#xqhU8b4q^e`v(TiXno_U3F6Z$;weFCXhd0sH?8g*krih^OAH8NwO#lD@ literal 0 HcmV?d00001 diff --git a/asdl/src/binary_tree/LinkedBinaryTree.java b/asdl/src/binary_tree/LinkedBinaryTree.java index 1421838..3570369 100644 --- a/asdl/src/binary_tree/LinkedBinaryTree.java +++ b/asdl/src/binary_tree/LinkedBinaryTree.java @@ -615,6 +615,91 @@ public class LinkedBinaryTree implements BinaryTree{ return Integer.compare(currentData, leftData + rightData) == 0; } - + public boolean esisteNodoConFigliUguali() { + if (root == null) return false; + return esisteNodoConFigliUguali(root); + } + + public boolean esisteNodoConFigliUguali(BinaryNode node) { + // Se è una foglia + if (node.getLeft() == null && node.getRight() == null) return false; + + // Reperiamo il valore di sx + boolean leftValue = (node.getLeft() != null) ? esisteNodoConFigliUguali(node.getLeft()) : false; + // Risali lo stack velocemente + if (leftValue) return true; + + // Reperiamo il valore di dx + boolean rightValue = (node.getRight() != null) ? esisteNodoConFigliUguali(node.getRight()) : false; + // Risali lo stack velocemente + if (rightValue) return true; + + // Controllo sui valori attuali + if (node.getLeft() != null && node.getLeft().getData() != null && node.getRight() != null && node.getRight().getData() != null) return node.getLeft().getData().equals(node.getRight().getData()); + return false; + } + + /* + * Realizzare un metodo generico statico + * public static boolean TwinChildren(BinaryNode root) + * che, dato in input l'albero radicato in root, restituisce TRUE se esiste almeno un nodo + * che ha esattamente due figli e questi figli sono uguali, FALSE altrimenti. + */ + public static boolean TwinChildren(BinaryNode root) { + // Null check (solo su ROOT) + if (root == null) throw new NullPointerException(); + + // Controllo se è una foglia + if (root.getLeft() == null && root.getRight() == null) return false; + + // A questo punto non è una foglia, scendiamo e controlliamo... + boolean leftValue = (root.getLeft() == null) ? false : TwinChildren(root.getLeft()); + // Se è presente un valore vero, puoi ignorare il resto e risalire subito lo stack + if (leftValue) return true; + + // Controlliamo il nodo destro + boolean rightValue = (root.getRight() == null) ? false : TwinChildren(root.getRight()); + if (rightValue) return true; + + // Controllo sui due figli + if (root.getLeft() == null || root.getLeft().getData() == null) return false; + if (root.getRight() == null || root.getRight().getData() == null) return false; + return root.getLeft().getData().equals(root.getRight().getData()); + } + + /* + Esercizio 2. + Un albero binario si dice bilanciato per peso se, per ogni nodo, la differenza + tra il numero di nodi del sottoalbero sinistro e quella del sottoalbero destro + è al massimo 1 in valore assoluto. Data la radice di un albero binario, + scrivere un metodo ricorsivo public static boolean isWeightBalanced(BinaryNode root) + che verifichi se l'albero è bilanciato per peso. + */ + public static boolean isWeightBalanced(BinaryNode root) { + // Null check (SOLO SUL ROOT) + if (root == null) throw new NullPointerException(); + + // Avvio la ricorsione + return getWeightBalanced(root) != -1; + } + + public static int getWeightBalanced(BinaryNode node){ + // Controllo se è un nodo foglia + if (node.getLeft() == null && node.getRight() == null) return 1; + + // Raccolgo la parte sx + int leftValue = (node.getLeft() == null) ? 0 : getWeightBalanced(node.getLeft()); + if (leftValue == -1) return -1; + + // Raccolgo la parte dx + int rightValue = (node.getRight() == null) ? 0 : getWeightBalanced(node.getRight()); + if (rightValue == -1) return -1; + + // Controllo + int diff = leftValue - rightValue; + if (diff < -1 || diff > 1) return -1; + + return leftValue + rightValue + 1; + } } diff --git a/asdl/src/network/network/Network.java b/asdl/src/network/network/Network.java index 1a56e1b..6effddb 100644 --- a/asdl/src/network/network/Network.java +++ b/asdl/src/network/network/Network.java @@ -2,6 +2,7 @@ package network.network; import network.Graph; +import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; @@ -53,6 +54,58 @@ public class Network> implements Graph } } } + + /* + TOTALE 2024-06-18 + Implementare un costruttore della classe Network + che prende in input una lista di oggetti di oggetti di tipo Vertex + e costruisce un nuovo grafo orientato come segue: + - gli oggetti presenti in lista rappresentano i vertici + - per ogni coppia di vertici distinti x e y, generare con il meotodo + Math.random() un valore double d € [0, 1) e aggiungere un arco orientato + pesato solo se d!=0 + */ + public Network(Vertex[] V, Integer v1) { + // Null check + if (V == null) throw new NullPointerException(); + // Oggetti in lista diventano i vertici + for (Vertex v : V) addVertex(v); + // Per ogni coppia di vertici distinti + for (int i = 0; i < V.length; i++) { + Vertex iVertex = V[i]; + for (int j = 0; j < V.length; j++) { + if (i == j) continue; + Vertex jVertex = V[j]; + Double weight = Math.random(); + if (Double.compare(weight, 0.0) != 0) addEdge(iVertex, jVertex, weight); + } + } + } + + /* + * Implementare un metodo costruttore della classe Network che prende in input due liste + * L1 e L2 di tipo ArrayList e costruisce un nuovo grafo orientato come segue: + * gli oggetti presenti nelle due liste rappresentano i vertici; per ogni coppia di vertici + * distinti x ∈ L1 e y ∈ L2, il grafo contiene l’arco orientato x→y, avente come peso un + * valore double -p se xy, dove p ε[0,1) è generato con il metodo + * Math.random(). + */ + public Network(ArrayList L1, ArrayList L2) { + // Null check + if (L1 == null || L2 == null) throw new NullPointerException(); + // Aggiunta di tutti i vertici + for (Vertex ss : L1) addVertex(ss); + for (Vertex ss : L2) addVertex(ss); + // Per ogni coppia di vertici disitinti (crazy AF) + for (Vertex s1 : L1) { + for (Vertex s2 : L2) { + int cmp = s1.compareTo(s2); + Double p = Math.random(); + if (cmp < 0) addEdge(s1, s2, -p); + if (cmp > 0) addEdge(s1, s2, p); + } + } + } @Override public boolean equals(Object object) { diff --git a/asdl/src/totale/p160726/Corriere.java b/asdl/src/totale/p160726/Corriere.java new file mode 100644 index 0000000..1e62d73 --- /dev/null +++ b/asdl/src/totale/p160726/Corriere.java @@ -0,0 +1,140 @@ +package totale.p160726; + +import java.util.List; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.HashMap; +import java.util.Map; +import java.util.TreeMap; + +import java.util.Set; +import java.util.TreeSet; + +import java.util.Iterator; + +import java.time.LocalDate; + +public class Corriere { + + // Classi d'instanza + private TreeMap currentSpedizioni = new TreeMap(); + private TreeSet fixedSpedizioni = new TreeSet(); + + // Metodi + + // METODO A + /* + boolean aggiungiSpedizione(String codice, double peso, LocalDate data) + Inserisce una nuova spedizione nella mappa delle spedizioni in gestione, dati codice di tracking, peso e data di presa in carico. L'inserimento deve avvenire solo se la + spedizione non è + già presente + né tra quelle in gestione né tra quelle concluse. + Restituisce true in caso di successo, false altrimenti. + */ + public boolean aggiungiSpedizione( + String codice, + Double peso, + LocalDate data + ) { + // Null check + if (codice == null || peso == null || data == null) throw new NullPointerException(); + // Creazione della spedizione + Spedizione s = new Spedizione(codice, peso); + // Controllo se è presente una spedizione uguale tra quelle presenti + if (currentSpedizioni.containsKey(s)) return false; + // Controllo se è presnete una spedizione uguale tra quelle portate a termine + if (fixedSpedizioni.contains(s)) return false; + // Aggiunta della spedizione + currentSpedizioni.put(s, data); + return true; + } + + // MEOTDO B + /* + boolean consegnaSpedizione(String codice) + Rimuove dalla mappa delle spedizioni in gestione la spedizione con + il codice indicato, solo se presente. Se la rimozione avviene con + successo, la spedizione deve essere inserita nell'insieme delle + spedizioni concluse. Restituisce true in caso di successo, + false altrimenti. + */ + public boolean consegnaSpedizione(String codice) { + // Null check + if (codice == null) throw new NullPointerException(); + // Creo l'oggetto fittizio + Spedizione s = new Spedizione(codice, null); + // Verifico la presenza della spedizione nell'elenco delle spedizioni attuali. + /* + SPIEGAZIONE: + Il controllo funziona perfettamente anche non andando ad inserire + il dato relativo al peso, dal momento che containsKey sfrutta il + compareTo che è realizzato solo sulla base del codice e non del peso. + */ + if (!currentSpedizioni.containsKey(s)) return false; + // Rimuoviamo l'oggetto + Iterator it = currentSpedizioni.keySet().iterator(); + while(it.hasNext()) { + Spedizione sTmp = it.next(); + if (!sTmp.equals(s)) continue; + it.remove(); + fixedSpedizioni.add(sTmp); + return true; + } + // Aggiungo s alle spedizioni consegnate + return false; + } + + // METODO C + /* + double pesoTotale() + Calcola e restituisce il peso complessivo di tutte le spedizioni ancora in gestione. + */ + public Double pesoTotale() { + Double tot = 0.0; + for (Spedizione s : currentSpedizioni.keySet()) { + tot += s.pesoKg(); + } + return tot; + } + + // METODO D + /* + List spedizioniPerPesoECodice() + Restituisce una lista contenente tutte le spedizioni ancora in gestione, + ordinate per peso crescente e, a parità di peso, per codice di tracking crescente. + */ + public List spedizioniPerPesoECodice() { + List tmp = new ArrayList(currentSpedizioni.keySet()); + Comparator cmp = new Comparator() { + @Override + public int compare(Spedizione s1, Spedizione s2) { + int cmp = Double.compare(s1.pesoKg(), s2.pesoKg()); + if (cmp != 0) return cmp; + return s1.codiceTraking().compareTo(s2.codiceTraking()); + } + }; + tmp.sort(cmp); + return tmp; + } + + // METODO F + /* + Map numeroSpedizioniInGestionePerData() + Restituisce una mappa che associa a ogni data di presa in carico il numero + di spedizioni ancora in gestione e non ancora concluse, + conteggiate tra quelle presenti nella struttura delle spedizioni in gestione. + */ + public Map numeroSpedizioniInGestionePerData() { + // Creazione della struttura dati + Map tmp = new HashMap(); + // Aggiunta delle occorrenze + for (Spedizione s : currentSpedizioni.keySet()) { + LocalDate d = currentSpedizioni.get(s); + + if (tmp.get(d) == null) tmp.put(d, 1); + else tmp.put(d, tmp.get(d) + 1); + } + return tmp; + } + +} diff --git a/asdl/src/totale/p160726/Spedizione.java b/asdl/src/totale/p160726/Spedizione.java new file mode 100644 index 0000000..338de36 --- /dev/null +++ b/asdl/src/totale/p160726/Spedizione.java @@ -0,0 +1,53 @@ +package totale.p160726; + +public class Spedizione implements Comparable{ + + // Variabili di istanza + private String codiceTracking; + private Double pesoKg; + + // Metodo costruttore + public Spedizione( + String codiceTracking, + Double pesoKg + ) { + this.codiceTracking = codiceTracking; + this.pesoKg = pesoKg; + } + + // Metodi + public String codiceTraking() { + return codiceTracking; + } + + public Double pesoKg() { + return pesoKg; + } + + public void setCodiceTraking(String codiceTraking) { + this.codiceTracking = codiceTraking; + } + + public void setPesoKg(Double pesoKg) { + this.pesoKg = pesoKg; + } + + // Meotdi equals e compare to + + @Override + public boolean equals(Object object) { + if (object == null) return false; + if (object == this) return true; + if (!(object instanceof Spedizione)) return false; + + Spedizione oSpedizione = (Spedizione) object; + + return this.codiceTracking.equals(oSpedizione.codiceTracking); + } + + @Override + public int compareTo(Spedizione spedizione) { + return this.codiceTracking.compareTo(spedizione.codiceTracking); + } + +} diff --git a/asdl/src/totale/p240618/CorpoDocente.java b/asdl/src/totale/p240618/CorpoDocente.java new file mode 100644 index 0000000..084e24f --- /dev/null +++ b/asdl/src/totale/p240618/CorpoDocente.java @@ -0,0 +1,106 @@ +package totale.p240618; + +import java.util.Set; +import java.util.HashSet; +import java.util.TreeSet; + +import java.util.Iterator; +import java.util.Map; +import java.util.Comparator; +import java.util.HashMap; + +public class CorpoDocente { + + /* + Mantiene in memoria tutta la lista docenti + */ + private TreeSet corpoDocente = new TreeSet(new Comparator() { + @Override + public int compare(Docente d1, Docente d2) { + int cmp = Integer.compare(d1.anniRuolo(), d2.anniRuolo()); + if (cmp != 0) return cmp; + return d1.CF().compareTo(d2.CF()); + } + }); + + /* + Mantiene in memoria tutti i CF aggiunti in modo da rispettare unicità. + */ + private HashSet cfDocenti = new HashSet(); + + // Metodo 1 + public boolean aggiungi( + String CF, + int anniRuolo, + String meccanografico + ) { + // Input Check + if (CF == null || meccanografico == null) throw new NullPointerException(); + if (anniRuolo < 0) throw new IllegalArgumentException(); + // Se non presente, si aggiunge il CF + if (cfDocenti.contains(CF)) return false; + // Aggiunta dell'oggetto + cfDocenti.add(CF); + return corpoDocente.add(new Docente(CF, anniRuolo, meccanografico)); + } + + // Metodo 2 + public boolean presente(String CF) { + // Input check + if (CF == null) throw new NullPointerException(); + // Controllo la presenza + return cfDocenti.contains(CF); + } + + // Metodo 3 + public boolean cancella(String CF) { + // Input check + if (CF == null) throw new NullPointerException(); + // Controllo la presenza + if (!cfDocenti.contains(CF)) return false; + // Se presente lo rimuovo + Iterator iterator = corpoDocente.iterator(); + while (iterator.hasNext()) { + Docente currentDocente = iterator.next(); + if (!currentDocente.CF().equals(CF)) continue; + iterator.remove(); + cfDocenti.remove(CF); + return true; + } + return false; + } + + // Metodo 4 + public Set docentiInRuoloDa4Anni(String codiceMeccanografico) { + // Creazione struttura dati + HashSet tmp = new HashSet(); + // Enumerazione con selezione dei Docenti + Iterator it = corpoDocente.iterator(); + while (it.hasNext()) { + Docente currentDocente = it.next(); + if (!currentDocente.meccanografico().equals(codiceMeccanografico)) continue; + int ar = currentDocente.anniRuolo(); + if (ar == 0 || ar >= 4) continue; + tmp.add(currentDocente); + } + return tmp; + } + + // Metodo 5 + public Map docentiNonInRuoloPerScuola() { + // Creazione struttura dati + HashMap tmp = new HashMap(); + // Aggiunta di elementi alla struttura dati + Iterator it = corpoDocente.iterator(); + while (it.hasNext()) { + Docente currentDocente = it.next(); + // Se il docente non è ancora in ruolo + if (currentDocente.anniRuolo() != 0) continue; + String codiceMeccanografico = currentDocente.meccanografico(); + if (tmp.get(codiceMeccanografico) == null) tmp.put(codiceMeccanografico, 1); + else tmp.put(codiceMeccanografico, tmp.get(codiceMeccanografico) + 1); + } + return tmp; + } + +} diff --git a/asdl/src/totale/p240618/Docente.java b/asdl/src/totale/p240618/Docente.java new file mode 100644 index 0000000..ac92de5 --- /dev/null +++ b/asdl/src/totale/p240618/Docente.java @@ -0,0 +1,54 @@ +package totale.p240618; + +import java.util.Objects; + +public class Docente { + + // Variabili + private String CF; + private int anniRuolo; + private String meccanografico; + + // Costruttore + public Docente( + String CF, + int anniRuolo, + String meccanografico + ) { + this.CF = CF; + this.anniRuolo = anniRuolo; + this.meccanografico = meccanografico; + } + + // Getter + public String CF() { + return CF; + } + + public int anniRuolo() { + return anniRuolo; + } + + public String meccanografico() { + return meccanografico; + } + + // Metodo equals + @Override + public boolean equals(Object object) { + if (object == null) return false; + if (object == this) return true; + if (!(object instanceof Docente)) return false; + + Docente docente = (Docente) object; + + return this.CF.equals(docente.CF); + } + + // Metodo hashCode + @Override + public int hashCode() { + return Objects.hash(CF); + } + +} diff --git a/asdl/src/totale/p240709/AssegnazioniDocenti.java b/asdl/src/totale/p240709/AssegnazioniDocenti.java new file mode 100644 index 0000000..a835175 --- /dev/null +++ b/asdl/src/totale/p240709/AssegnazioniDocenti.java @@ -0,0 +1,79 @@ +package totale.p240709; + +import java.util.Set; +import java.util.TreeSet; + +import java.util.Map; +import java.util.HashMap; +import java.util.TreeMap; + +import java.util.Comparator; + +public class AssegnazioniDocenti { + + /* + * Ogni docente è rappresentato, in modo univoco, dal suo codice fiscale e il codice + * meccanografico della scuola. + * + */ + private Map mappa = new HashMap(); + + // OK + public void insert( + String CF, + String CM + ) { + // Null check + if (CF == null || CM == null) throw new NullPointerException(); + // Aggiungi o aggiorna il record + mappa.put(CF, CM); + } + + // OK + public boolean isDocenteAssigned(String CF) { + // Null check + if (CF == null) throw new NullPointerException(); + // Verifica l'esistenza del record + return mappa.containsKey(CF) && mappa.get(CF) != null; + } + + // OK + public void removeDocente(String CF) { + // Null check + if (CF == null) throw new NullPointerException(); + // Rimuovi + mappa.remove(CF); + } + + // OK + public Set getDocentiByCM(String CM) { + // Null check + if (CM == null) throw new NullPointerException(); + // Creazione struttura dati + Set tmpSet = new TreeSet(); + for (String s : mappa.keySet()) { + String cm = mappa.get(s); + if (cm == null) continue; + if (cm.equals(CM)) tmpSet.add(s); + } + return tmpSet; + } + + // OK + public Map getDocentiForCM() { + // Creazione della struttura dati + Map tmpMap = new TreeMap(); + // Aggiunta dei dati + for (String s : mappa.keySet()) { + // s = CF + String CM = mappa.get(s); + // Null check + if (CM == null) continue; + // Continuo + if (tmpMap.get(CM) == null) tmpMap.put(CM, 1); + else tmpMap.put(CM, tmpMap.get(CM) + 1); + } + return tmpMap; + } + +} \ No newline at end of file