From d9b05de8b76e6189f91385f9a59ff958dba53d0f Mon Sep 17 00:00:00 2001 From: Daniel Olsen Date: Tue, 24 Nov 2020 23:16:49 +0100 Subject: [PATCH] start case3 --- Commissions/flis/IMT/Case3/.envrc | 1 + Commissions/flis/IMT/Case3/case3 | Bin 0 -> 18736 bytes Commissions/flis/IMT/Case3/case3.c | 80 +++++++++++++++++++++++++++ Commissions/flis/IMT/Case3/shell.nix | 5 ++ 4 files changed, 86 insertions(+) create mode 100644 Commissions/flis/IMT/Case3/.envrc create mode 100755 Commissions/flis/IMT/Case3/case3 create mode 100644 Commissions/flis/IMT/Case3/case3.c create mode 100644 Commissions/flis/IMT/Case3/shell.nix diff --git a/Commissions/flis/IMT/Case3/.envrc b/Commissions/flis/IMT/Case3/.envrc new file mode 100644 index 0000000..17d6464 --- /dev/null +++ b/Commissions/flis/IMT/Case3/.envrc @@ -0,0 +1 @@ +use_nix \ No newline at end of file diff --git a/Commissions/flis/IMT/Case3/case3 b/Commissions/flis/IMT/Case3/case3 new file mode 100755 index 0000000000000000000000000000000000000000..9d7d7a1eaa5c80b62e15d3ae38172094af5577b2 GIT binary patch literal 18736 zcmb<-^>JfjWMqH=CI&kO5YIu#0W1U|85lOe7z_*y4h$9y+zbv3N(_n&YzzzxEMPIP zas~$mh(Z{h!2}V9(Hsyi12a_L3aI=FCWt;59RO7aqd{&034v&keIPajL-c`M1>)ZT zIf#LQ0Y)E<|64EkqxTo&oju0w@jB2jYVC&4B8g0o4bi1waZI7#LtQEIdJO1mPc0 z`5(~mgwb&4L!1MSGY~W2X-Nu5p9fTd2h?9M+6JVEfq?-=gVchA0-u(ofZPdU6N6#F z9t5=ySGZI_-4COo!ONhZmsz1-T#{dus$Y?AmYI`enQmE?k!e(wZkSS#X;PJ3U}RxY zl#y4KSFD?!lbMvPYoupvpr4bOq@RzN>@kWAC$yh4j&^K_H!!pZ`J3IpTZqU7`(v!X&HGoz|9Gu>p} z;*8Xs98mHwGqFNSTcqej)<}sb{2TpbJjTnMn-s@#(qwdC=gAXJBApVqj)qW?%uAs>}?abjirT3@-CP zX&e-{BAJ=IpprTPRCX{hFqBGVaxyS5Gh{*eC6XXM6GItDF#`j`2YX0)1^28Ik!cjx5=Fuw}K2Q~Fx9su); zKzvXW@8t$CKMTYMHSJz50P~YTd{7hf<%IwL|2u{|hB<~hhJ*%tG{5mk@#tnz)nH&? z@aS|=u`oRFBA1DQ!K2sIi=TmEKgdpyxP(XNA;SYNHvRwq-=o(>Mc?B%iweknAUO_? zZWa}f1|G?`Jvv?PGPqj)tCRKUJj%b#HNeHXMn$0Xe9Hm;*69ok498pp7+)Wq;L*&Y z!U%R`^A8sOR$q|S-7YE?DIUfUpYyl2g8bin#KZ7FbgW~HW2|GGWBg%$`4*5L84M42 z^qM;HL4)JP+JFE5ySDzXQ+Di)|L@bCqQc?B_!<;%j{N&`)WX^*7jBf<{tG#X~(hpT4O3|Ns9nR&`wl2FBRKVE3S_f8B>_KPZ3fj{pUf)8GI9 zL2i{j<`BT((Rs+D*CQZpg2!=CQfKgJKE&Z+d8+gSIQJlonBW-h*?HYD%(L^GW2j^2 zU&j!iUR41t28K|NUR@9!?4$V6^~3-FCm0wQeti7@AJm1q@#+8n z4Gatn5}*J7mtbUIsQCQz zfTr_5{r_(Y5^&)YDB$B@@L^zJh+$x0sCfVX|3Z-4ocIL#nVk3}`k0;g6na^l_%wQ0 z9r+B}*c|yRn%Q0W8W@>*8M*i@ocRnK`81sP6rA`ZocIKs_&7X4bEP0V)n0cZ6BT#cB zp?uhSV`(TKwnk10%AWvTUkvIqfrMc4pb1(KUxFFpuCM?8=Y#kGP(EnF7R2{pfyjgU zeIR}TR30?92;$d3Jpk$pf%u^HsUTVuL?B_%1Tl!a0=k|LJgdgQz%T(Mh}1uXt^E^+ zihHm@?1za09#7(ms5W_LkMnEi4f4g&)NOx^GQ5dT4)%kU4%zrhMI|38!ulm7ta zAA!n4jiVU_TmOx2ff;oDx*L=ZgVJeGx(rIUL1}dT==?$k28Jjd28N6Jj0`SMm>Jxi zovjo!-2Fl|6)g0O^$d^&z>8AR4A23uMg<8%LKe1<0J-lDl7(SVx?^I{Ly8HQ41@-a zDKIhQA>^U{fUT8=rFU3*h3G<%5dEN31aXfLR6i{Jo`B{T7$2b%!qP(c2ORY<|71h+ zDM%G4FM-k-V*|)G7VuaG2cs(k0|Sp80|Ns{8Z@N9B+SUbz$ngb#lXP8$qd^_z|6v$ znODNVVhl0~lq#7RJVCx?Yz7H1FfbT0LX3de08tSQR`CM5@4^d31*0H?0GlAA5F<06 zG@mM;Fvw?&f{dzs!rUMc0dWQfCKCo`J}Yi(ZcA=YVS7m?2?hpc6$Wl@J8otU1_l;2 z22WwoPz=bRP&SYzxG@X@Y$zh2VI3w0u+tcS^YJn;GBSdK3FJ{dJ^kX!;*`{aV*LsW zvv@NT28QC2#G(?tVDQ3Z22LheSTfr&G7IQADckv~sFap53zTFqF)}bRDuaU_RPZsP zo6V4!msz5h3=W}0urhs+gVB{?aYAxYNhZPtu+o$HAOoXMsjWT}69Xe711A$KRWV;? zU}R!pU}OXh-7qnbU`Zar5?GRBR%i4EdyIjT36|`bwV`4dPSuA6mVQ!cW=@Je(x!&w z;!*~8zfc9oUMF*#eepeVm2HMu0eNI^HPB&S$6H$Npc#}*W=nTa{NsTHZo4Dp`+ z@x>)6nR)T0#i=Qv#8Z-)tXq_tlb@`Y%zznS(5S^K0g4WAY5^@d0%0%*L_o^}SR}z> z9u`3$CCC`07ldJAFn!`sb71<;LdzAHI$~(hihbDrCuH@Y75%V%JgDN#46yncRh)$Z zR!^gfvogTyXH;=E23S3gD$dS;t$t%>;9!8&i>T^38DRA{=VpNAKvZ!a z1_fw%qKfk}fYuWsi-Fk8415f*cmwfan3;hev0n=&$N<{)Ai&@O-RFcP%)rbb$k2gR zT!;bIjzU#0%m8aYp^A$zV5_g08AKUi?Hg3}Vhjupkah;DxHto7-4n7Hh|SCZYsG+g z2+Yg?YxN<-KrCi(6$E0TVrB+ds}NlrR4b#3fq2Xepu!l$LdDDspjru43{(rSFns)v zDhg?DVG{?n=dg*(gZBwyn$r$0^?4Zzkm_NOU7b+z1!&@PpyIIhHApQ8ZvxdD42W*Y5G;-vzo0soiGh~^)?Npx1!2(GJR<{UIsw)B*!)!qsv;Q#8TKe*#yd9k?O=xq zVWhViU~@3j8+h&li+i?!&B09n$HC@crq8>KpnYk)44_qgAb*0jGcYi`1&f13P%$SH zNIj|;h*!o0+GmED&gGaG7z7x^Fw*&RkoioQ`C1i+`Ib1uLve_gK zConNE2r`K=aG>SWxgc?*at788T?4k4mjSd45@Zsn0Rf`-fW<*9R6Lmx6b|AH8ffNM zfz|Uez}iZ%cJu|X`w{6DX4)O7dRRFLNe2uJ55eLvRS5bw$o)*1;m^*@z#zyV#sFG4 z3sMc+N45=Q4ijd%&Cd*qcU}esXuSuXQv+!PRq1-k=(TrpVsWamUNZ8gy(HtR;%t-5 zjGThZ%-k~Lva~b{v!o=`q>A*6^pvV3OT<1n(6&AO^yFk{yHd9_FFP;4JP*3dGd-_V zAKWw1PcAA+N=?tq)5~W_Ni9lE&nzxUEs8J6jZeuUnk5A9ZPfE;*PbtYS zDvnPqtzbyb&n?JFElEw$GdH#{z^*7hEi*4OKC!4Mu`)h2ucWAwA+0DeH#I(`G&i@B zAwC|77Y_;m6s1Vp4Qb-%)VvhEe1`aVw;)Gf*LYVym-u*wcvNSkFvPn=`Z@Y~I-|;f z+nfyX@$P=1@va_F6Fgjk7~M)*c10)! z`8Ym4#Mc=b{(0cZ^J0d))N;T4lvD-=z2eH;lEfqiz2cH02%Q0AW#*Nn78Nk)<>i;8 z>Nz@j>Xsy?Gw7w~mFi_A7H2T%rBvn>SLQG>rLdJr>`ii;WalJj#xYXcbcQc{yj)8iA167$kii(%Z%ytI56J25G#D76g619dE5 z>|&7LAo`)&LB$EB7}Vkc)nTylC0KhKb`AmTyaAX!Ahj?yhz4~^L1RrY{jhd9Y~MZl zUTRo<0MZM>pmGt^BZujSwcjP617M(i*C2HuH6R)?Y60503*s>_fcAZV`~N>5rXSYM z4}j{2wcOD4Lv%ARSTis%fX3or`eFTn0;v8QP=%oJJdodE_QP77&fxYlXvZ-`A*|ov z0reOk!8Ke)U9yH(p8k>XhVf~OB zPz|uw6uSFCW`J-yxIKw*KdiqZ0n)(003ON!se>8^A0LGIA2dD&@~RU^5onDIbiC06 zsvk7c1d;;j2aR!}hhH_gT?si?0HhAy|AAJppms1=97=%ff-=DrXn!^+UZB>&`$-B= z{opk(V3iO8Dhysf0upINvme$@m;hC12u%kdwIB=?1~I`H)b2*MAJ*?W0va&_4Qzo` zAqaH$_d@N5#UE@K40Z^C2SO{D1q(kghk=1%Dw=*+KMr<&1!x2grWQn_+rJo1Kdisk z0nNA;AkTp`LNU7iYZ(|A_@H?Jqy*M4>;UaD0gcLm1d%XIKaAeVzyNA3f_LhJl)?Is z6NuD*6nZ8FESg~bOxSrLuya9R=>ujjEFRB6{SVU*>yNGgjcqY7Fo5zG$XzfD(+{IB zqv?mYpFv}Qp!HNRjZhk9FO +#include +#include +#include + + +struct Node { + struct Node* children[10]; + bool isEnd; +}; + +struct Node* newNode(void) { + struct Node *nNode = NULL; + nNode = (struct Node *) malloc(sizeof(struct Node)); + if (nNode) { + nNode->isEnd = false; + for (int i = 0; i < 10; i++) { + nNode->children[i] = NULL; + } + } + return nNode; +} + +int numbers[] = {113, 11354, 77777, 255044}; + +int main(void) { + struct Node* root = newNode(); + printf("%p\n", root); + + int n_numbers = sizeof(numbers)/sizeof(int); + + for (int i = 0; i < n_numbers; i++) { // Go through all the phone numbers in the global list + struct Node* pointer = root; // Create a pointer that points to whatever part of the trie we're working on + char number[9]; // A number has 8 + \0 chars + snprintf(number, 9, "%i", numbers[i]); // Convert int to string + int len_number = strlen(number); + for (int j = 0; j < len_number - 1; j++) { // loop over chars in the phone number + if (j == len_number - 1) { // if we are at the last iteration + if (pointer->isEnd == true) { // Check if we've seen the number before + printf("Duplicate Number found at element %i, number %s", i, number); + break; + } + else { // if we're at the last iteration, and isEnd isnt true, its either a new number OR we found a prefix + bool continues = false; + for (int k = 0; k < 10; k++) { + if( pointer->children[k] != NULL) { + continues = true; + }; + }; + if (continues == true) { + printf("FOUND PREFIX IN NUMBER\n"); + printf("%s and %s", number, number); + while (pointer->isEnd != true) { // follow the first paths you can find + for (int k = 0; k < 10; k++) { + if( pointer->children[k] != NULL) { + pointer = pointer->children[k]; + printf("%c", k + '0'); + break; + }; + }; + }; + printf("\n"); + return 0; + }; + }; + pointer->isEnd = true; + } + else if (pointer->isEnd == true) { // if we've already seen a shorter number with this prefix + printf("Found prefix!"); + for (int k = 0; k < j; k++) { + printf("%c", number[k]); + } + printf("\n"); + }; + int index = number[j+1] - '0'; + pointer->children[index] = newNode(); + pointer = pointer->children[index]; + }; + }; +} \ No newline at end of file diff --git a/Commissions/flis/IMT/Case3/shell.nix b/Commissions/flis/IMT/Case3/shell.nix new file mode 100644 index 0000000..d364c29 --- /dev/null +++ b/Commissions/flis/IMT/Case3/shell.nix @@ -0,0 +1,5 @@ +with import {}; +stdenv.mkDerivation { + name = "c-shell"; + buildInputs = [ gcc gnumake ]; +}