From d8b87a0de06e9f59a724b421deb06b9e73ea2364 Mon Sep 17 00:00:00 2001 From: Om Raheja Date: Thu, 29 Aug 2024 12:57:25 -0400 Subject: [PATCH] almost done with weighted --- weightedrank | Bin 51104 -> 51040 bytes weightedrank.c | 52 ++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 41 insertions(+), 11 deletions(-) diff --git a/weightedrank b/weightedrank index 35129c272b1f5efb9d473499d25d7771e616fdc2..605eed383ac585b939f132c7ce7730504d2c20fd 100755 GIT binary patch delta 2624 zcmZ8j4Nw%<9sj@EJ2^NGJW;Gdy5L8EXhgh&I|RZijD^O0$h6Zoi2(&GNNPlwQIk4% zn3@?v71xK_SQ?B;Dqx&4xoEk>Ob#VXCdnlBoUt>FF?Z-B2X$Kek*S-GrN6g(XYh9B zzx)30|NZsep6HRn2c<)o<^)#|F(T@)RU&;Cq1Ez!&11GX|XhPLkOi9x-QGeshs1SKW}o zZ%O&H4=(ra|8-Zzdjlum>&V@8?kk>e_Lzbz_-6B?xlt$(iVFbZD-??7K7ha#|DVi% zFW|ci=h+>K7Il(lCAws_^W%l`k{n-1p%ecMmyxzbqTa}}N?@W)(ZUZCK+z=f9j@kI z6w1XLLCq&$UGy{soQ&p9mzhc#(cJJUB@lT`(Gbq?+T|{FF?2T)sb=zpe!z=XuD*Zx zhiwiOCTG{~IXz-!$=$@{E5(d@(;yE2hN;@6mT`4urdMCOU`YZgA1uPcmFemEQTRd* zQXjyczGf7d?xujCN4u54B|^<=oLDxj;*8$hAG(>5<~`p39LmD{$Zlt$vj1yT80z~rJzN@nTF4QFbAO3BE*v1i4><-W8~J@jS<7wEI4<1BZWlPLEt4KAqqgY${)PFb8SYQ? zhxju^3z&(&ShUFdIm8AbMr%4lK2+{g;NdFLB2}o`zf5XaCT-s)U+81(M`dKK$cRpu z5CL6BK-aTKn~$ENtvIE0$rk7)etS~ew zk&3cusOll|6su=-}0N@hL$5$AmS zEK^`}Q(oGZs4c_L_A|ksVeq%{HmB43BzE*_AR$p3N}uRkc8MBJCvAh! zh{Sa*GGfxJ1f1Ec0vPJvs11InqcxD6cx=@%ndE)GP%ZK>Q|6Q*(`X1GV{svO+)%_9 zYDo|}4k6)e7>2(eb6m_`7S_|4Ha(EjN+6m}fx#D^zKu~D#`IqEWX_t#IE2&rN!RA& zS>VPAQ+Jcwi?h6UKzP4O)?0F*s(!?JM{3jO!e%s2tm+>TZ9kP{ z%!LR_w}TTy6fYwC>MnzKDoN4e{QCTerY%6zCZTDWp&NAXU4`)>lNptkA;`F}ZcO^l z7=k>M+u&A1!ia>HlxS$cDSP7laXo|1evdvW!l;-O>8{ZkHoeAV-(`-C)rT<;_2`@3 z>e~s?-(v(B5KfEi$DN2D4C2(#b=g*ZaWWV4?O1dqZVd=+w zsryTF0apBkyM{mRNo7fVqeo7$VM~~~L;Pt^ChzmO(rVEY_tu(y#=r3tvIt*VD%a#& zzKhz5<11c15r7R&35TsXX$FN;I1*DW)F$@CNhF*fLb(s%805XB`POBOw7*KJLp)eI zciy>JGwMwf3+FPQEM0GHU#emm2J;;5 z2sW*6!qxf`;1$4mz(;^9fE$2Y023pY4Ok8+2doGD6tE4Mtgo+cY;JAuXsvJBv~yR> zc0MxpCYldY^|V@i#oa5>uR8DwZp5o^Ctl%a@EU0Wb<_4%%5HD(XlmI`xuEjV(T6gM z!P;k2vInH|mMDx6S-9gup4SYG0u|S7Iu`L?1zdzWo?U9tasTUhLy3W7TgOLS2EI0i z_r-9ufY7U3!jhgyz?%&mH)8C0E`i}d0)C7~F33e^5_bIw_&W)Bkmp{M*C6xvICCul z|0)6hTLS)X-g!~BBx5&)JI36H$7=Zcu}ap?4~#A0?~et!?*q3*$uUtX{(bIu+dIH1 z9=2;s%hu+OEloQ`O-|l8d!u>V;ZxgZ{qp%)Z&}i(

y6)>`SAM>)`qMX3Qr_*||G#bPf1mgD&9kp%^wsT| zGI8I?*2uZ%&mJ6?Q!Ot>{U0s5_-IeVrM~c%(Z??YD?UiOX?>^q&Et>!C+*dyilWy& vjr`^DaNaR3)Aj9<=G-572iIL4KWh7CZ)fY={~mwxT2tpIy_NkHhWGS;Nc%3# delta 2508 zcmZ8j4Nz276h8O8U3uW53#c1E_8y9`6816YzI)F3&d)vP zyuAc>@`rcv%@^XgSOEwCcn!GVv&AZ3nH6U))TDk@24HT>CRRfB(N$bBG17YOA~{UU z_;kxww9N&Oj0oJ?f#&$;knTb}s%+;-5YNBRcKDWh6AJ;8N19ZR~TbQ%3Lwv#HFfX-r>wdS;0bM)w&zP7$ z(WQiPK@k8h2yre&ATFh~;qE~Jr1H?S;2Sy)zTkV{>s<(n^qCZJ!QnrHPEhPL)@mY? zXogjcweqmr%W;SyB)SQR zcxf_$-QxfzV0z6k$0o<3w;1GAk50}JH9|KAbv*J$w80uqxHL3m3e9&Z5C?KR%G5mp zAA3iylmZsawtpHZfU!dJ-7bY7P*oDiw>4D?aP`p#c#vNEl7rp-)36lGnF>ZMarqu* zPMt*#fxw1P)S;wS06PmDMBGi(eT92w(-;mW)b!`8Sks}T5>CUa@jRFekJ-?a>_pN+ z^Rn-8e~vMaqdf#Y0SQ&7kPjAv(p&6Of`4&xFddYaS4n}7Q65Uiyt1|2hhq`Uvrm)) zeIh7Vc>dTP#Px}I28O*?r=636-2n38260e5vNuounReSuZb8rntF>Xp;L+kk?b~pWE%h-6*cTiDwRQ;?2VoKT^lO9QHL3Eot>A)ppq%PC)g6iL-!ep@wZo$Xbh6vs)Ek6_vr4$9rfBv=*oNp8B3qZ7o*3ci1{VR zndpgp+qhC}*XTBoi&XEhlB;y4LtIp%zf)aSO;+I@YK3Ff3L8+yDnG2V)T6wnru`RQ zIL73|zdNiO$IzA@beI#Tj+l~UB zkQ^#IA0;WY-nEeLKn$Xq^Z=i{2#Rm9b>-<w>dKd#>(^B%dzyCEc2zf@c_nbeT2b)U=FJAh^V5$7yXLqTr!1UtZEmHU zU9#c)JkMS251sG%=6dhWwd9=>#$OtRf66~XZH`+FYmj4rank_count = rsstdin(items->rank); - memcpy(items->srank, items->rank, sizeof(struct Rank) * items->rank_count); + for (int i = 0; i < items->rank_count; i++) { + strncpy(items->srank[i].name, items->rank[i], M_STR_LEN); + items->srank[i].score = 0; + } rank(items->srank, items->rank_count); if (!weighted) { @@ -68,10 +71,7 @@ main(int argc, char *argv[]) } else { // leave if any are null - if (items->srank[0].name[0] == 0 || - items->srank[1].name[0] == 0 || - items->srank[2].name[0] == 0) { - + if (items->rank_count < 3) { puts(BOLDRED "Error: not enough weights.\n" RESET); goto w_end; } @@ -88,27 +88,49 @@ main(int argc, char *argv[]) strncpy(weighted.opt3, items->srank[2].name, M_STR); char buf[16]; //enough to hold weight + float left = 1.0; // 100% char *ptr; // ask for weights - printf(BOLDGREEN "Enter weight for %s\n" RESET, weighted.opt1); + + /* weight 1 */ + printf(BOLDWHITE "Weight for %s\n" BOLDGREEN "(1.0) > " RESET, weighted.opt1); fgets(buf, 16, stdin); weighted.opt1_w = strtof(buf, &ptr); + if (weighted.opt1_w >= 1.0 || weighted.opt1_w <= 0.0) { + printf(BOLDRED "Error: weight must be between 0 and 1\n" RESET); + goto w_end; + } + if (ptr != NULL) { printf(BOLDWHITE "Using %f" RESET "\n", weighted.opt1_w); } - printf(BOLDGREEN "Enter weight for %s\n" RESET, weighted.opt2); + left -= weighted.opt1_w; + + /* weight 2 */ + printf(BOLDWHITE "Weight for %s\n" BOLDGREEN "(%f) > " RESET, weighted.opt2, left); fgets(buf, 16, stdin); weighted.opt2_w = strtof(buf, &ptr); - + if (weighted.opt2_w >= 1.0 || weighted.opt2_w <= 0.0) { + printf(BOLDRED "Error: weight must be between 0 and 1\n" RESET); + goto w_end; + } + if (ptr != NULL) { printf(BOLDWHITE "Using %f" RESET "\n", weighted.opt2_w); } - printf(BOLDGREEN "Enter weight for %s\n" RESET, weighted.opt3); + left -= weighted.opt2_w; + + /* weight 3 */ + printf(BOLDWHITE "Weight for %s\n" BOLDGREEN "(%f) > " RESET, weighted.opt3, left); fgets(buf, 16, stdin); weighted.opt3_w = strtof(buf, &ptr); - + if (weighted.opt3_w >= 1.0 || weighted.opt3_w <= 0.0) { + printf(BOLDRED "Error: weight must be between 0 and 1\n" RESET); + goto w_end; + } + if (ptr != NULL) { printf(BOLDWHITE "Using %f" RESET "\n", weighted.opt3_w); } @@ -120,7 +142,15 @@ main(int argc, char *argv[]) printf(BOLDRED "\nRank according to %s\n\n" RESET, weighted.opt3); rank(mem->rl.srank[2], mem->rl.rank_count); - + // now do some vector math :) + // nothing too performance intensive, don't need to optimize + printf("\n\n" BOLDWHITE "**FINAL RANKING**" "\n" + "%s " BOLDGREEN "(%f)" BOLDWHITE " | " + "%s " BOLDGREEN "(%f)" BOLDWHITE " | " + "%s " BOLDGREEN "(%f)" RESET "\n\n", + weighted.opt1, weighted.opt1_w, + weighted.opt2, weighted.opt2_w, + weighted.opt3, weighted.opt3_w); w_end: free(mem); }