From 00a226b785191d63ecab824cd819e5a3b4ca0b23 Mon Sep 17 00:00:00 2001 From: admin Date: Sun, 16 Nov 2025 13:15:36 +0200 Subject: [PATCH 1/4] =?UTF-8?q?=D0=92=D0=B8=D0=BA=D0=BE=D0=BD=D0=B0=D0=BD?= =?UTF-8?q?=D1=96=20=D0=B7=D0=B0=D0=B2=D0=B4=D0=B0=D0=BD=D0=BD=D1=8F=20?= =?UTF-8?q?=D0=B7=20java-fundamentals-exercises?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 0 -> 10244 bytes 0-0-intro/.DS_Store | Bin 0 -> 6148 bytes 0-0-intro/src/.DS_Store | Bin 0 -> 6148 bytes .../bobocode/intro/ExerciseIntroduction.java | 39 ++---------------- 1-0-java-basics/.DS_Store | Bin 0 -> 8196 bytes .../1-3-0-hello-generics/.DS_Store | Bin 0 -> 6148 bytes .../1-3-0-hello-generics/src/.DS_Store | Bin 0 -> 6148 bytes .../1-3-1-crazy-generics/.DS_Store | Bin 0 -> 6148 bytes .../1-3-1-crazy-generics/src/.DS_Store | Bin 0 -> 6148 bytes .../1-3-2-heterogeneous-max-holder/.DS_Store | Bin 0 -> 6148 bytes .../src/.DS_Store | Bin 0 -> 6148 bytes .../1-5-0-hello-annotations/.DS_Store | Bin 0 -> 6148 bytes .../1-5-0-hello-annotations/src/.DS_Store | Bin 0 -> 6148 bytes 2-0-data-structures-and-algorithms/.DS_Store | Bin 0 -> 8196 bytes .../2-2-1-node/.DS_Store | Bin 0 -> 6148 bytes .../2-2-1-node/src/.DS_Store | Bin 0 -> 6148 bytes .../2-2-2-stack/.DS_Store | Bin 0 -> 6148 bytes .../2-2-2-stack/src/.DS_Store | Bin 0 -> 6148 bytes .../2-2-3-linked-queue/.DS_Store | Bin 0 -> 6148 bytes .../2-2-3-linked-queue/src/.DS_Store | Bin 0 -> 6148 bytes .../2-2-4-linked-list/.DS_Store | Bin 0 -> 6148 bytes .../2-2-4-linked-list/src/.DS_Store | Bin 0 -> 6148 bytes .../2-2-5-array-list/.DS_Store | Bin 0 -> 6148 bytes .../2-2-5-array-list/src/.DS_Store | Bin 0 -> 6148 bytes .../2-2-6-binary-search-tree/.DS_Store | Bin 0 -> 6148 bytes .../2-2-6-binary-search-tree/src/.DS_Store | Bin 0 -> 6148 bytes .../2-2-9-hash-table/.DS_Store | Bin 0 -> 6148 bytes .../2-2-9-hash-table/src/.DS_Store | Bin 0 -> 6148 bytes 3-0-java-core/.DS_Store | Bin 0 -> 6148 bytes 3-0-java-core/3-6-1-file-reader/.DS_Store | Bin 0 -> 6148 bytes 3-0-java-core/3-6-1-file-reader/src/.DS_Store | Bin 0 -> 6148 bytes 3-0-java-core/3-6-2-file-stats/.DS_Store | Bin 0 -> 6148 bytes 3-0-java-core/3-6-2-file-stats/src/.DS_Store | Bin 0 -> 6148 bytes 3-0-java-core/3-6-3-crazy-regex/.DS_Store | Bin 0 -> 6148 bytes 3-0-java-core/3-6-3-crazy-regex/src/.DS_Store | Bin 0 -> 6148 bytes .../3-6-4-random-field-comparator/.DS_Store | Bin 0 -> 6148 bytes .../src/.DS_Store | Bin 0 -> 6148 bytes 4-0-object-oriented-programming/.DS_Store | Bin 0 -> 6148 bytes .../4-3-1-flight-search/.DS_Store | Bin 0 -> 6148 bytes .../4-3-1-flight-search/src/.DS_Store | Bin 0 -> 6148 bytes .../4-3-1-flight-search/src/main/.DS_Store | Bin 0 -> 6148 bytes .../src/main/java/.DS_Store | Bin 0 -> 6148 bytes .../src/main/java/com/.DS_Store | Bin 0 -> 6148 bytes .../src/main/java/com/bobocode/.DS_Store | Bin 0 -> 6148 bytes .../src/main/java/com/bobocode/oop/.DS_Store | Bin 0 -> 6148 bytes 5-0-functional-programming/.DS_Store | Bin 0 -> 8196 bytes .../5-0-1-lambda-functions-map/.DS_Store | Bin 0 -> 6148 bytes .../5-0-1-lambda-functions-map/src/.DS_Store | Bin 0 -> 6148 bytes .../5-0-2-stream-sum-of-squares/.DS_Store | Bin 0 -> 6148 bytes .../5-0-2-stream-sum-of-squares/src/.DS_Store | Bin 0 -> 6148 bytes .../5-1-1-crazy-lambdas/.DS_Store | Bin 0 -> 6148 bytes .../5-1-1-crazy-lambdas/src/.DS_Store | Bin 0 -> 6148 bytes .../5-2-1-crazy-streams/.DS_Store | Bin 0 -> 6148 bytes .../5-2-1-crazy-streams/src/.DS_Store | Bin 0 -> 6148 bytes .../5-3-1-crazy-optionals/.DS_Store | Bin 0 -> 6148 bytes .../5-3-1-crazy-optionals/src/.DS_Store | Bin 0 -> 6148 bytes .../5-3-1-crazy-optionals/src/main/.DS_Store | Bin 0 -> 6148 bytes .../src/main/java/.DS_Store | Bin 0 -> 6148 bytes .../src/main/java/com/.DS_Store | Bin 0 -> 6148 bytes .../src/main/java/com/bobocode/.DS_Store | Bin 0 -> 6148 bytes .../src/main/java/com/bobocode/fp/.DS_Store | Bin 0 -> 6148 bytes .../5-4-1-fun-prime-numbers/.DS_Store | Bin 0 -> 6148 bytes .../5-4-1-fun-prime-numbers/src/.DS_Store | Bin 0 -> 6148 bytes 5-0-functional-programming/src/.DS_Store | Bin 0 -> 6148 bytes 5-0-functional-programming/src/main/.DS_Store | Bin 0 -> 6148 bytes .../src/main/java/.DS_Store | Bin 0 -> 6148 bytes .../src/main/java/com/.DS_Store | Bin 0 -> 6148 bytes .../src/main/java/com/bobocode/.DS_Store | Bin 0 -> 6148 bytes 6-0-test-driven-development/.DS_Store | Bin 0 -> 6148 bytes .../6-1-1-stack/.DS_Store | Bin 0 -> 6148 bytes .../6-1-1-stack/src/.DS_Store | Bin 0 -> 6148 bytes .../6-1-2-linked-list/.DS_Store | Bin 0 -> 6148 bytes .../6-1-2-linked-list/src/.DS_Store | Bin 0 -> 6148 bytes .../6-1-3-binary-search-tree/.DS_Store | Bin 0 -> 6148 bytes .../6-1-3-binary-search-tree/src/.DS_Store | Bin 0 -> 6148 bytes java-fundamentals-util/.DS_Store | Bin 0 -> 6148 bytes java-fundamentals-util/src/.DS_Store | Bin 0 -> 6148 bytes java-fundamentals-util/src/main/.DS_Store | Bin 0 -> 6148 bytes .../src/main/java/.DS_Store | Bin 0 -> 6148 bytes .../src/main/java/com/.DS_Store | Bin 0 -> 6148 bytes .../src/main/java/com/bobocode/.DS_Store | Bin 0 -> 6148 bytes 81 files changed, 4 insertions(+), 35 deletions(-) create mode 100644 .DS_Store create mode 100644 0-0-intro/.DS_Store create mode 100644 0-0-intro/src/.DS_Store create mode 100644 1-0-java-basics/.DS_Store create mode 100644 1-0-java-basics/1-3-0-hello-generics/.DS_Store create mode 100644 1-0-java-basics/1-3-0-hello-generics/src/.DS_Store create mode 100644 1-0-java-basics/1-3-1-crazy-generics/.DS_Store create mode 100644 1-0-java-basics/1-3-1-crazy-generics/src/.DS_Store create mode 100644 1-0-java-basics/1-3-2-heterogeneous-max-holder/.DS_Store create mode 100644 1-0-java-basics/1-3-2-heterogeneous-max-holder/src/.DS_Store create mode 100644 1-0-java-basics/1-5-0-hello-annotations/.DS_Store create mode 100644 1-0-java-basics/1-5-0-hello-annotations/src/.DS_Store create mode 100644 2-0-data-structures-and-algorithms/.DS_Store create mode 100644 2-0-data-structures-and-algorithms/2-2-1-node/.DS_Store create mode 100644 2-0-data-structures-and-algorithms/2-2-1-node/src/.DS_Store create mode 100644 2-0-data-structures-and-algorithms/2-2-2-stack/.DS_Store create mode 100644 2-0-data-structures-and-algorithms/2-2-2-stack/src/.DS_Store create mode 100644 2-0-data-structures-and-algorithms/2-2-3-linked-queue/.DS_Store create mode 100644 2-0-data-structures-and-algorithms/2-2-3-linked-queue/src/.DS_Store create mode 100644 2-0-data-structures-and-algorithms/2-2-4-linked-list/.DS_Store create mode 100644 2-0-data-structures-and-algorithms/2-2-4-linked-list/src/.DS_Store create mode 100644 2-0-data-structures-and-algorithms/2-2-5-array-list/.DS_Store create mode 100644 2-0-data-structures-and-algorithms/2-2-5-array-list/src/.DS_Store create mode 100644 2-0-data-structures-and-algorithms/2-2-6-binary-search-tree/.DS_Store create mode 100644 2-0-data-structures-and-algorithms/2-2-6-binary-search-tree/src/.DS_Store create mode 100644 2-0-data-structures-and-algorithms/2-2-9-hash-table/.DS_Store create mode 100644 2-0-data-structures-and-algorithms/2-2-9-hash-table/src/.DS_Store create mode 100644 3-0-java-core/.DS_Store create mode 100644 3-0-java-core/3-6-1-file-reader/.DS_Store create mode 100644 3-0-java-core/3-6-1-file-reader/src/.DS_Store create mode 100644 3-0-java-core/3-6-2-file-stats/.DS_Store create mode 100644 3-0-java-core/3-6-2-file-stats/src/.DS_Store create mode 100644 3-0-java-core/3-6-3-crazy-regex/.DS_Store create mode 100644 3-0-java-core/3-6-3-crazy-regex/src/.DS_Store create mode 100644 3-0-java-core/3-6-4-random-field-comparator/.DS_Store create mode 100644 3-0-java-core/3-6-4-random-field-comparator/src/.DS_Store create mode 100644 4-0-object-oriented-programming/.DS_Store create mode 100644 4-0-object-oriented-programming/4-3-1-flight-search/.DS_Store create mode 100644 4-0-object-oriented-programming/4-3-1-flight-search/src/.DS_Store create mode 100644 4-0-object-oriented-programming/4-3-1-flight-search/src/main/.DS_Store create mode 100644 4-0-object-oriented-programming/4-3-1-flight-search/src/main/java/.DS_Store create mode 100644 4-0-object-oriented-programming/4-3-1-flight-search/src/main/java/com/.DS_Store create mode 100644 4-0-object-oriented-programming/4-3-1-flight-search/src/main/java/com/bobocode/.DS_Store create mode 100644 4-0-object-oriented-programming/4-3-1-flight-search/src/main/java/com/bobocode/oop/.DS_Store create mode 100644 5-0-functional-programming/.DS_Store create mode 100644 5-0-functional-programming/5-0-1-lambda-functions-map/.DS_Store create mode 100644 5-0-functional-programming/5-0-1-lambda-functions-map/src/.DS_Store create mode 100644 5-0-functional-programming/5-0-2-stream-sum-of-squares/.DS_Store create mode 100644 5-0-functional-programming/5-0-2-stream-sum-of-squares/src/.DS_Store create mode 100644 5-0-functional-programming/5-1-1-crazy-lambdas/.DS_Store create mode 100644 5-0-functional-programming/5-1-1-crazy-lambdas/src/.DS_Store create mode 100644 5-0-functional-programming/5-2-1-crazy-streams/.DS_Store create mode 100644 5-0-functional-programming/5-2-1-crazy-streams/src/.DS_Store create mode 100644 5-0-functional-programming/5-3-1-crazy-optionals/.DS_Store create mode 100644 5-0-functional-programming/5-3-1-crazy-optionals/src/.DS_Store create mode 100644 5-0-functional-programming/5-3-1-crazy-optionals/src/main/.DS_Store create mode 100644 5-0-functional-programming/5-3-1-crazy-optionals/src/main/java/.DS_Store create mode 100644 5-0-functional-programming/5-3-1-crazy-optionals/src/main/java/com/.DS_Store create mode 100644 5-0-functional-programming/5-3-1-crazy-optionals/src/main/java/com/bobocode/.DS_Store create mode 100644 5-0-functional-programming/5-3-1-crazy-optionals/src/main/java/com/bobocode/fp/.DS_Store create mode 100644 5-0-functional-programming/5-4-1-fun-prime-numbers/.DS_Store create mode 100644 5-0-functional-programming/5-4-1-fun-prime-numbers/src/.DS_Store create mode 100644 5-0-functional-programming/src/.DS_Store create mode 100644 5-0-functional-programming/src/main/.DS_Store create mode 100644 5-0-functional-programming/src/main/java/.DS_Store create mode 100644 5-0-functional-programming/src/main/java/com/.DS_Store create mode 100644 5-0-functional-programming/src/main/java/com/bobocode/.DS_Store create mode 100644 6-0-test-driven-development/.DS_Store create mode 100644 6-0-test-driven-development/6-1-1-stack/.DS_Store create mode 100644 6-0-test-driven-development/6-1-1-stack/src/.DS_Store create mode 100644 6-0-test-driven-development/6-1-2-linked-list/.DS_Store create mode 100644 6-0-test-driven-development/6-1-2-linked-list/src/.DS_Store create mode 100644 6-0-test-driven-development/6-1-3-binary-search-tree/.DS_Store create mode 100644 6-0-test-driven-development/6-1-3-binary-search-tree/src/.DS_Store create mode 100644 java-fundamentals-util/.DS_Store create mode 100644 java-fundamentals-util/src/.DS_Store create mode 100644 java-fundamentals-util/src/main/.DS_Store create mode 100644 java-fundamentals-util/src/main/java/.DS_Store create mode 100644 java-fundamentals-util/src/main/java/com/.DS_Store create mode 100644 java-fundamentals-util/src/main/java/com/bobocode/.DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..3c420976ac6bcdd53ef55201215dde0f9bbe1755 GIT binary patch literal 10244 zcmeHMO^72!6n>p#Ooo}k!GG3+&3f^$GbX$1qKJ^qB+7_CFd5y0%50KuXR>y>Lw+X0 zI1m)YACz@(d+{uIk-dmF5z*VK7Z1zgVPQoNBBFQwUUhY*s`E3GA4H`qbieMZ_g=mF z-m6zt9U?MvZ7V}$5>W~l)8$3n1{7}RtFOdlO##$^JUQE$V#TY~`#7VD2!RNJ2!RNJ z2!RNJe+vRwv$>=ed>Y*&1R?|?1bPT?elT${%}Uz!sYo5Ti6a1L0@b46d6^$TO-Zwo zc72K#6vGz<^+gSN#4vnu)SHqoD{0rKzBn23@L|ZF4S7N_MDNgV3U)HGK8@}X0uciJ z2=LiGL94V)RcdMH_l2)+sBJYbpD#OJ8Fi`Kj(vFfPwShrdb>5Uy}qM-8(1eyGtdxq9!{9#h-YzU?=981!V-o(HvS{rbst9>ZS|SCw39 zQG>j7$E!$hb3)DGTK!8DJP{3$&~0{B26JiFUwQmniQE8v+BimXY9pdA*uGmSBS&9(%ML4_qd1mr;hsiCm#fJ=a7C>1dcAHp%Fh1mKXN0ZP-9`C{+x{prFk$afS7Z9-=yDKtEZIQWb5xsTJV2Ixa;<<(&XSHn| zomdPS)%cxKyM`eB`1}vXp=T*9XqJ!@U)KiC$P(Vn({i@@eN3*v3?gaT(EQTXArO5(ok_-QkCffoSh~ucW?k<5J}cLqYO|G2|6s)8iMd;nsbq2?`BHJm>l9n1R=b%i zHD2JiP0w@6!E>qneAVu3E#I-`xvf&wwHrd9YT00U@m$rlyiU$*yH-=k7X60Qd@8lI zeD~g7CUe3(ed^);6XxC{C)50VW`94Gy7T@AAKln`#i_a8I|5!Z5huvbsbv&03JB;lD(gSY`n<8y<3b7G@ z;iCa>p4DI*BBfzW@y+4-RWz^uRu2}wA$nEZ4(HYoA`?d75c(9RKnf(19-vNgG|KBed)kFwH2>fplFcSG9X zlVaXF(B&rpa13=8jOF4iF~KkzCPi2vtf4>+WqV?}R9egN)%94U?i|5q%B^`b8iU;+-?_0}Q+Xk}^jD literal 0 HcmV?d00001 diff --git a/0-0-intro/src/.DS_Store b/0-0-intro/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a03beddc9c500a787fbbe5320a842a539ddfab50 GIT binary patch literal 6148 zcmeHKK~BUl478yVmALGYV@}-n2VqrSupeNTB0$>Gm3F!30X%>Q@E3l~8S%ID`a<%Y5A)|+t+U%Pr7US9j>vy$(><+nFeZA5S6-P0BAXkX?%dYE$4yr)l- zyg7ClKl9f3N?ytB<_fq1u7E4>e-%K@7Hf|Uy>|s%0axHd0XZK6nqbVB4E5+hr&j=A z1GgH+`fm#i;sC~s$q*hGTPV;%IbSi@!r>2jUCfvaEu2_0W1pP){qn+^9sZ!piKC(S zu7E30DsX7inbiMtd@|Kbei`C3SHKncV+wH7ExQF?D%aL8uP3!Opk1Je$+{#17{*$P lfm(_&k#pokN#lcz!N-irP<9c&h6DXaKn3y675D)K-T=3lM-l)4 literal 0 HcmV?d00001 diff --git a/0-0-intro/src/main/java/com/bobocode/intro/ExerciseIntroduction.java b/0-0-intro/src/main/java/com/bobocode/intro/ExerciseIntroduction.java index 35d925636..67786990e 100644 --- a/0-0-intro/src/main/java/com/bobocode/intro/ExerciseIntroduction.java +++ b/0-0-intro/src/main/java/com/bobocode/intro/ExerciseIntroduction.java @@ -2,44 +2,13 @@ import com.bobocode.util.ExerciseNotCompletedException; -/** - * Welcome! This is an introduction exercise that will show you a simple example of Bobocode exercises. - *

- * JavaDoc is a way of communication with other devs. We use Java Docs in every exercise to define the task. - * So PLEASE MAKE SURE you read the Java Docs carefully. - *

- * Every exercise is covered with tests, see {@link ExerciseIntroductionTest}. - *

- * In this repo you'll find dozens of exercises covering various fundamental topics. - * They all have the same structure helping you to focus on practice and build strong skills! - * - * @author Taras Boychuk - */ +import java.util.Base64; + public class ExerciseIntroduction { - /** - * This method returns a very important message. If understood well, it can save you years of inefficient learning, - * and unlock your potential! - * - * @return "The key to efficient learning is practice!" - */ public String getWelcomeMessage() { - // todo: implement a method and return a message according to javadoc - throw new ExerciseNotCompletedException(); + return "The key to efficient learning is practice!"; } - - /** - * Method encodeMessage accepts one {@link String} parameter and returns encoded {@link String}. - *

- * PLEASE NOTE THAT YOU WILL GET STUCK ON THIS METHOD INTENTIONALLY! ;) - *

- * Every exercise has a completed solution that is stored in the branch "completed". So in case you got stuck - * and don't know what to do, go check out completed solution. - * - * @param message input message - * @return encoded message - */ public String encodeMessage(String message) { - // todo: switch to branch "completed" in order to see how it should be implemented - throw new ExerciseNotCompletedException(); + return Base64.getEncoder().encodeToString(message.getBytes()); } } diff --git a/1-0-java-basics/.DS_Store b/1-0-java-basics/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..7d80ec9a288c361ec215f3ec8aa1b2a8f012bbb4 GIT binary patch literal 8196 zcmeI1%}xR_5XYy;fy4_YCUP)l9{>~3a9;^V@5o&~43Myth$Mbo_7Qv(AHkbX;mO34 z-h2T6(^l98iCIuFafY=2rQ2zDeoHB{5Rod6T1BE95oJ(Vv+JlnF+R^_#!{{&3svwZ zD$p)<=!|-Ji3tHAAOwVf5D)@?kpT8=w#=M;-=39P2nd0HNr1l}JQP;nX=v4ab)YgS z05pweV>sq?fPFltzSGbu&cKv)g<4nTQVeC?(eAl^zSGdEbtmPL59MZ7E<;gfc8u?t z?xcLHQVRhgFiU`!%O(|(x9_7w^LLH+ZRGNOlymA*lZL%^vD(zZzz%cVPU0KrN~O`$ z4fteU?t`~GzTbO@m7mvKn0u_p_gmA5hBz01$ffC{@kFP^z2cvN@MhWZqI^>M zF`uQbG0N<_#*A^Kd*--hIF`U?dfn8qYWk$XwT{xoQGa^%9MzJK5M{NI?|-bJgx3+J zv-l`+9%el;6Ku~}r=C;aX=v4M;IjWS4KX3GIs$8U>Ky0)hx4ERukHe6W+5O1ew=_x zSE`jVrg6FT%!Hh4dnl(UY}_xjYFtp6bR25Zap?FDLmYeP%09l+&?;JB@pqow7G_#r-k*$3drA|(aP zN_*qm-MN#e@Oni=SC8FNWFaCI+)$ovnVRLzCw7vNIZ*A4WxMHj`$^rgfN^K?AosG_ z-j4a_Pv4nc-!$uOzec2LFJ4~XySK}6wmXvD-;Gbb28~7qr~nn90#x8%D}bJDR-FcN zr2tP_Vo|8!vS5ddhv@osqbSprxr0IU;-Ktx~~RA5jwM+^-*;w9_q z#33-~qJA^Z$(uDN6!qH?FJ3NM2XdtXRNzp7S!@^9|F7Ub%>RcZ?x+A2_)`k#ylI;i zUMYL)SiBVjy%l3)t@vzISL_-2I&lbeI^s?T@<+gQp;3X~P~Za| C;U|>< literal 0 HcmV?d00001 diff --git a/1-0-java-basics/1-3-0-hello-generics/src/.DS_Store b/1-0-java-basics/1-3-0-hello-generics/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..1155297d3c2750a7cbf921f0d42d24ed5be61660 GIT binary patch literal 6148 zcmeHKy-veG47MRc5iA`Uk4NYmgerZ44oFN;f&i%@m1y@o6DtcFZ^Fhq@c9SGiHH#) zYD;&Y&pw}%FUt9jhV``O&|=9deTpio6@TrU%;Oc@Iy9zG2?; zr$JtiZM(0$WBxp^eCLp0AQ%V+f`J`p05w~rJTinoSRibnKnrERVz7n7o_t>A*c)0nv1Z0Pp84bQ!hXW#q|=Ej z!{~#7U?68;--Z*Z|8x9GqnG?VBu2qNF!0Y9;G$mCGrW}7)^D#TwKkz$poz%5UK9v) nEyX}B#Tdvwa;#4CC(+@r9D74qMeG_5jDvs@5?wIx3kT(l14N(HFEp#qcG&aD4mz<-$k4@uln0V?pP6wqn2 zY!-N>?5(4hvtC=^*YHn6t(Rl*Rt)r3jE%M8vq4?4XXNX|KG5liI~~X$0n>#>1%5+; E4;ddR7XSbN literal 0 HcmV?d00001 diff --git a/1-0-java-basics/1-3-1-crazy-generics/src/.DS_Store b/1-0-java-basics/1-3-1-crazy-generics/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..bfbd4bd3a5a247fd2188230c9a5f39fa7fe70eff GIT binary patch literal 6148 zcmeHKOHRWu5S@VtMPkz(EWKpg8<;9RK`#I$2#}hl5@qir^a|X8JHP=r13T`(8_xi- zh*%;7Gm`zr^YJ84ik%@Mp53)mq6rbz7=kRyh=_UAwP(TNWZ7eNHC*5SJ1I~am@V^NRTvb7kj>97Zji-t*2(}}J5V5|Jzyl}3L{X-5X zj*31z1I|Fnz`iaga{tfq$&5DnWs0wy0cYTkF~C)`Xl8gRyIa4!p4_zo;|xPY;*uy3 m=*3R}7IKapXQ%pu=!lDkNl|tYdrk-Xk3c5GCuiUX7b7K|X*kCqa?uB2fD6prYqRe251ywimeQL`n)6 zOWwJ)J-fOo&Sw$P)uCUCEJUP%8_JU{Q?tDJ#LjAD4pcj1x!w%B{iNGcln2>t z@5cP@@;kE|+P2#c9U{%e^ULdd|8_mj_9wFY`|+s-G#VA40#twsP=SA~0D87ra~{Z* z3Qz$m@TGu#9}?U!S1f`4>A>P60MLHp-SF(Q1Ta|um@Ae*L|__JU{JM=7#eiMQ?1Jt zOJLAN{brm~Z`L}YsNarw@^aA}$dw9Efnx<`v0YgIzk&ZS{~wdMqXJamPbr}DcHOS< zO0~C6Ue0=Lg5SbF4Ygj5#al7ZTQN4)imyg>$)1tV6-%Jg5qCO}KLVx;jSBpR0v~F* BC%OOt literal 0 HcmV?d00001 diff --git a/1-0-java-basics/1-3-2-heterogeneous-max-holder/src/.DS_Store b/1-0-java-basics/1-3-2-heterogeneous-max-holder/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..ddb7770a9ee80264de635c1b4810391df289391a GIT binary patch literal 6148 zcmeHKK~BRk5L`nJMZNR}M}MI|FjcrCRotNj0aDXcqTKThKEsutaDz86vuhw05l4hz zSF*?6@p_Yy;*CWlEbg1R$V@~gXvDz5h|xVt?d8QJ1NT^8&zF~7yB*o&x4QW3m9%mp zx3Vdp|KM!MwOw7W*4+xe$?M_f`K5U}F8StLetR?2hI%9KPOjumc4gl5IOK+TAL1Zy zj%~ZoykmTs_mp|vTme_W6>tUqw*siyw8_-adsn~}a0NaT;Q0{Ih$&-ls7D7ny#fF$ zxYaP$e_LRr1DG=QhVa0Gg#s-!WYHJ9qLFUayGg;;EgB%tWMu8_KgSW3#;Z$WAgc1*)AfU#`3DZd7+HVBCp3%3ju+ zyCMJlR)|zL7Y}dm?d#<*+aAg8?uVydgGQqQRDcRl0V?pX6+q86t4;&C zQUNMJ1-=xp??Ztb)`@+fe>$-E2mrL-csD%zECDPQ0M?0pAR;ggDln*;BZdYY@sf3Q zVjmcEQNJ1ISiBVjy%l3)t@vzESL_-2I^;tvtrvBl@rVbU?>8lX*&|bzNdpFw_wK|c>Vy5s8}Kd zwv;@_j^p-KjT0i`)kCu&niElpCdi^ph?pl`2R>PxENg6U7VE3N-Ayd=TTSxp1+{cZ zchu$2KYJeg+P#=SBnRm*c=augq5)1?b!9XzZ&ly0?7AX%6qYnmxfneZ+0oflCnqcKP80yx6POkvK z0%jHHdd37MF#s#a!4MV*TPV;%*{>LE;jky4S2+%b7EY|0v5seczr3)Ya5?F8;>s}k zU?3RC8JO8{F7^K$ztZF-KM#pfFc1vq)ImXcuTAGH(zC0$ocn kP)jievX7jo)BH(v_$$Z3P*xGUh6CdupoByh4Ez8CZx{|m@Bjb+ literal 0 HcmV?d00001 diff --git a/2-0-data-structures-and-algorithms/.DS_Store b/2-0-data-structures-and-algorithms/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..d8b2a50cfa7cb1239c222060cf7d9b0d4abaac4f GIT binary patch literal 8196 zcmeHMF^|(Q6n^GzsJNvtb&SM(Lk~E?7EWbgVJRC6X>+=wOD;!~3U!ObcE5rjfDmH4 ztzv-@iJ1wB4FM7h8{e~yYd1tqp*mH04ZQk)TLcIp^RcWtZ4fN&wyvZGvFEU40r}MfdQP^oLV*KzIy9R&wyv( zzhr>-hX9#nsAZ|7+&WOm5CC!;%`%~mI6&G2T83JdN=j4osiFs=O@$6IgfhqbfYl*G zElVYpISFM>LXRwTgd*hVunVL*iBL&jdImfLRR#hyU8X(6?VPRnJvr+3hgo{6Odg)s z>7`k(H%PJp-naIq4?g~g-`=U$jT`Hpj_mQDqf6Q`ezLDQ6%^5sj$Kdlr}dh)uWxP{ zUu*hJv$?m+wOxN_?C(|M?{)Z_&|}<<9OGsr#?up;poZ*vpT28qXJdK!ssEezMq}E@ zR<(6;zG9qL49*)BoQxVX<)S=$*38Prc>nC=^B1+Y8jNQnT+PzO_nz^!4ZfSe7tt7> zh^88A1zqv8iH(izd)utVrDNI1RHQ>kn5AtF|r)1lj}no;i*9FaB;2X z_keTdK5X3aYqM_uqM!M<^I!ULd6@x{HQ%>^eFPqI%|Zm0l0_a~6isYw-1{HQTAt5$ z%~AA? zo)h=Gyfs~4&o)QJSHsbo{I;1~fA22e0rS1-X-hfS;rRb9mc73R*z_6m{&@!0&w$wO z^?L{CSI5?s5jfTkkRKs)V!cvHX@WwAn%Z9*+eCDDR(;THi5ziHfk ad&Vv;J(JxN(4YV7`eotIe_nnUlYRmC{1Jfw literal 0 HcmV?d00001 diff --git a/2-0-data-structures-and-algorithms/2-2-1-node/.DS_Store b/2-0-data-structures-and-algorithms/2-2-1-node/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..82a2eb23070d5dbc9df3e422b4398012336d1dd7 GIT binary patch literal 6148 zcmeHKJ5Iwu5S<}GvP6@Ta<7mBAeqQqfLtI-EJ2arD2U!27vN6ZgpND#<^wpgNJ#;2 zq}k`4nYSyy!s8JUT|BjOk(r28a6@^vWo(u=AK6((ra-kb=F3gD+mGr_1&lk9M>)u5 zdpG1?y?keOUDK?$-5QbV{PyAPy?wnNX4@0l{r&LN6=*anKn17(6`%tDS^@NIv+5#{ zD;1yuRNzYi`#u!7VV&3q`lkbnj{rdXjd#Pd&l1350brfj2OlB|3o}rZF(b`fj$k>AP(q$!}Hh*(>SfS{`JR zKmR0-ZC&5C%XPnmuD(3qyu7ZSPjma~Tl@BY%nehc?oMvyQFeLVWAeARjqAQ$jOto! z*MHV6*$Z`9+r=4h2AlzB;Qum!JDXA;Df;XTI0MeWo&lZ@5rfzm4vOjMz?515U5ZYPbYzK7v*LXkJ39j{GsXOK22*b_Se* zoPk5#PI>>I;gcyg`FV)%oB?Oxk1-IccG1r9Qg*j~c|G2>5#tJjLcf6v2-ew805&{F fPLfgWk!$!hhJzxrP@lqq{v(hG@yQwZ0S4XylZ8hM literal 0 HcmV?d00001 diff --git a/2-0-data-structures-and-algorithms/2-2-2-stack/.DS_Store b/2-0-data-structures-and-algorithms/2-2-2-stack/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..3742af23d5364d7fb188b146a2dce506ca335aa2 GIT binary patch literal 6148 zcmeHKF-`+P475p#lW0;>?iccdB|1Kkd;ldUks{$D5dC&^ye5C(Cv^OQvAw`WCsI4TGB(SbkL;pGra-kb=BrJ=KaA?m1&lk9M|qIV z?rz9mzI0 zsQ?wA0$&Q)_aVUzbHx(qpAIZO0s!qd-VM(_O8}DvfVpA`L=NP)NjT)^=7RTiu&z{CodPxfn2Eo6*yI365E;e{~P!Z^ZzM{J1Rg0{*(ebZCC9A zuT*>M=;f@}CipG<(@^W>SiBVjy%l3)t@vtCm+Tq&T(JZ?9dV}v`6FPu(5S#~DDVOC CK`Ctj literal 0 HcmV?d00001 diff --git a/2-0-data-structures-and-algorithms/2-2-2-stack/src/.DS_Store b/2-0-data-structures-and-algorithms/2-2-2-stack/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..034ef2fe00160857a6068234f9c5ba48ac99db8b GIT binary patch literal 6148 zcmeHKOHRWu5S@W6A`nuSEPVs$4MG)8&^>|@1eKbm5@nw?SKVl zik7s_pa0+~_4PyBE>^<=w)*H|{rc8DpXL7UNB`z7<>nNrsJo>bx~FYk_v9t@rF9>d zNnOkBhp)ONf1$3_c5w!r0cXG&*j)y2XN%N_iat97&VV!U$$*>>0Yk7c92Miyfho2C zzzXIl(507)#3yIq7Z`X40=h># literal 0 HcmV?d00001 diff --git a/2-0-data-structures-and-algorithms/2-2-3-linked-queue/.DS_Store b/2-0-data-structures-and-algorithms/2-2-3-linked-queue/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..39d89f3a7c534382beaad6fe12d4f1ac21bac72a GIT binary patch literal 6148 zcmeHKJ5Iwu5S<|@EYYN-TycZkz(l4;$^}qj35oG!jG82&sYACN}#$s{Pk({Mx3RK%;zFc?P-6-#v!)hn8mq%G| z?uPX@mp_qh*EFk5w}Pj7etCHRXy2}e(e_AmcR$?qZ!d>4C}e;PkO4A422PCu^lX#r zJdlld(^ptT~~mpALWVbkRDHmJE=ALk1?XoLT?BhW;}D9~N;%2FSokF`(0C z*(~r$*;_{+XT7#SZ=qj;Tu+DbRt)r3jD@x0i$PwoXTF1f8zF&n$$$Z^L;lZnh;TqA;_W>M9f9kfdz|`WsmjEba^%O+rlQl)g;eeQBRk2 zN1OclkDkZAerVg(dRW0$FZP?4*Y0VS`@3)b+uJcW0ja3FqicGgU0(O}eC!+7y?-3l zwcLLAtXuNub{01jEKKD#8O{O$BNyTZ_S(4tub;#xN>sIM; zH&;Xc&GUC=+cnK<)2$GxUY>5>-rLvnVYWSz-CYk)eFTk01*iZOpaN9jUn_u~ZC0HI za-{-PfC_vmVBd!VH>?x;K>u`L@eu%MzwvH(_E`d0EC8$%`#?ls8dP9VHAf5$I^rek z>cl=U=%Riz&dHlKClvMD5iedYS_g8a0#x8ofk|v<*8eZyKg|D!B<`pH75GyM=(Jfj z3%pYH*3rvZuPyLP_@|-P%dvPX26`*T##-^&psv_6@^xY#=yb%L4&;x3=|ZCdzoEbf DGchUN literal 0 HcmV?d00001 diff --git a/2-0-data-structures-and-algorithms/2-2-4-linked-list/src/.DS_Store b/2-0-data-structures-and-algorithms/2-2-4-linked-list/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..de573d9893b41e6722a1ad99ebc4997d4d23a6ee GIT binary patch literal 6148 zcmeHKOHRWu5S@W6BC#numOcW#L0W}9Qr8G5L4edWl_+~3fE@?n7~F&%ci@d@fLK^8 z5u!7a{l@e0Bu|Q+AtIhXbW@@U5!D!iEJ{JdTy*VOusB)vSlvt)S3|!kZ1Pu4^6VA$ zbV+x#&Y%DAcsnm6G2AlzBz!}(W25@JK)CY<_I|I&uGw{iPoDTs*urZ8^>FB_e zS^!`La}wy%OGr*IYz(6!JP_7Ypr*357_8~A2a9VAqoSr0Tl2wI`J;K^R2}<=6i(bI z`s@ri133fxx}3=Ue}Ye@*yQIazH$bffq%vTSM8#mJOqLt}%>?vWwVLI?#Uv5+Oc01HZt)J8N)A0{{R3 literal 0 HcmV?d00001 diff --git a/2-0-data-structures-and-algorithms/2-2-5-array-list/.DS_Store b/2-0-data-structures-and-algorithms/2-2-5-array-list/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..2d70bfb60654d5e465dfb87ad4f5a31755593985 GIT binary patch literal 6148 zcmeHKJ5Iwu5S<|@EYYN-+$-b;CNd|8(xb!@6bX(%>D_S^F2EUb6FTm|n-9p5MI;)E z=#4bz2`-gawvs`t02kI(jaJB+qxqWj0;u77(uoIxQ2WPl8i0WxrD44`M5 zRM&yDWPl8ifgc9!ekf4GIHg$fwW|R44g7BiRH}t{~h#~`Tw+tD>6U^E{Xx2 zHp^y#Ps-jp`Z(*g1$qzt7UX(5jJIN-w_+@;72gcm~ z4os;909G(3fiAs-?iccd<#fCtJOCvpL6L9~DE)T4h#w&F6FUCD*k0hG6DcWR zEP3bF_U!7WIG;sC+e5z;S%^pjHNn$@db8FEMg4Zflb4I;K(17P3LGmii|xYt{}ud)`Tv;29TlJge@X$JcdM?& zE7jgQc{%H~34R0rG}L-I7H`EsZ^hVHE4~=jC3{9bS1f@}N8IT^{s@>ZG%D~L3VZ+$ CBq`kh literal 0 HcmV?d00001 diff --git a/2-0-data-structures-and-algorithms/2-2-6-binary-search-tree/src/.DS_Store b/2-0-data-structures-and-algorithms/2-2-6-binary-search-tree/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..9b040ee07eea03e0a3a77398d53cc45c15b0b38f GIT binary patch literal 6148 zcmeHKOHRZv47H(1mDtRZWv(#d0%256Fc*NK2#}`jNDTX4Yc4QsIR!g71JAL6L{uyh z0$WO+<4@c^sYy*lym)BmL^C3)F$7tZ2@&(8>%fA=$+E}#X1=@{y3NEUzttqqUQtJv zbVq&p{Pk1r>xQOTt%ntC_3N&GerX@iN`L#Ue{-926Of9!Te_xu+Lm=s``nk;J=$k= zEw>v!>rVO0x>4%7I0MdrGvEyTZw7E@i`2)8K05=>fHUyHfSeBjLogbSis|UUlv)5_ z1#=SU(o0BAFpP$yB0Lb*RG_A^wHU1Fum_8ahNGgU6I=7aR{6bo;Zz;_hZIg66@7LF zoPm;oLtW0~{y)bjGuh;qDZX+BoPj^a09VbjS>UDYZvFCla@Pio3k(s78%2RYFMa~B hkaOfDIn^ITM_e=<6=fH(r*xqI2qZ#$at3~Yfj6a?Nf`hD literal 0 HcmV?d00001 diff --git a/2-0-data-structures-and-algorithms/2-2-9-hash-table/.DS_Store b/2-0-data-structures-and-algorithms/2-2-9-hash-table/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..625905c6f23280c4d3e71fc4424494f4575214cc GIT binary patch literal 6148 zcmeHKJ5Iwu5S<|@EYYM)xmU;yOk^6`TmU7Oph$28O7D)2vv3QpK}E+Mc=G`qS)`0+is0WHGjQ(dv9MZhS~N+c7HoO^%*o86`%rCfC^B7f2{y|wpn!^ z$dw9E0V?pNfPEhd+^|mU1O3y1#YX_3{l>fD*=Gr0u>i16>;n;jX;6Vd)f_Q2=!loB zs}uXcpo{v=I45t`oKVznN4$8sXdTFv3Q&P#1tzhbS^vL;|1kd_lenV-RNzl3pwnj6 zEb&U&TSqTvy|%!w;h%b`#ax{FZra{IU?fOT{k6~5K)aG$fAshm`7cE7A#JdJyuuK`Nhz0MmG7YCVBRX zdOD{YT9?ls?sH#1wC!>=EMcn;pVzN%-Q!8=?|$@eu5)gVk&3!ox};m$mUYjba$jEe z;U%kUx&81}cg$bbT}WLQXTTY72AqN2W&n4#NPVE_voqifI0K&y$oUX31RKMsn2rui zsRaO5Feia7y@cch!^SWw!UJJV1!^i=i@}->d$731Fe+*~u{9rTl|PynPSvr0Na4hd zqR-BNGf*0cx?%IH{zz~tRC<+96 l@e_cBoFhlcss123;u^!KD7%O~r33v(AQ9q|Gw=%xyaVlXNsRyi literal 0 HcmV?d00001 diff --git a/3-0-java-core/.DS_Store b/3-0-java-core/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..dfedf26af65694932a33d08596c50f263b4e00cd GIT binary patch literal 6148 zcmeHKK}rKL6#daIif-yo1Ys^va8$Z*HJ0%N1=qHnT9uAd+6wAwz>D-69zfi>5ch7} ziC6IbBu*z*=~P8T{)eBJ$>b+_FOy_KM5=xk`9u{WD#IB|OGrL2e$PH-3$}!Vm2ShQ zDjm`>^{6vdTM9%0QQ)sBz-xDfwyLo4IE}u~H^c>yp7LAO)7}-C{k93Ugu(`eQ+sy4xRT|O={6;i%+1>MaXU62YJ+5Wk z3dBvA%@gPFQX9-`GH=YUjrnTQC0!uTGuMTmyUea`ibdtQJ=8L81^SDV3A_0s9e#Aj z{MNI1+t!?#bc(Mrq1eu12j@(rnR8hm>{)>kYP|bi+t=S~Ew6{apXu?9@#S^;nHF9B z#;o5g!{@grnTE^#Y5jK@(0&_l$OI&&u9VlGs4E;1953T`M*wv5g4<|8}H$P}n{#(cTycKcD?seo}O@*wxJ z+1?KMmyh3>UDq`0ZMR0Gx_Wzld2e5@huQW-c7HcKbp;xY3Qz$mKn1A4zg7S}+pIbd zxXt)rK-UR&TR_@|-P%dvPX26`*T##-^kpsv_6@^xY#=yb%L4&;x3=|ZCdzoEbf DCuJyS literal 0 HcmV?d00001 diff --git a/3-0-java-core/3-6-1-file-reader/src/.DS_Store b/3-0-java-core/3-6-1-file-reader/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5e5d271b0fb0dbb83b4a3abc534b2a194728c6cc GIT binary patch literal 6148 zcmeHKK~BRk5L~A@MB+e?9Q^`Be-Ns0gCeYcy~rKCguX-%{m)G|BH0RrI`Q7bU8|sa`d%2c-+2?s@=VNZ1_vvty zH^p}SXWl73&wIkWZmxhU;0m|`|62jnY+7|-=)Ei83b+Cv3h;c0Xv8|I#VBzq`w60D#7+Sal&5V6g=J(4>(CqL>T`r+E z^xhS41#$&uHl4HnpW&04yyWL0K63?Jfj_1|D4SKY#7m{x`sMXlYa`kP8jb4)4qzB- mDF$jO#)Rj{k&?zoj=|Rn2Se^czlH<-M?eMf&K39p1>OL1DMji4 literal 0 HcmV?d00001 diff --git a/3-0-java-core/3-6-2-file-stats/.DS_Store b/3-0-java-core/3-6-2-file-stats/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..1c63618f674b33f7b741b94a48a75246007177be GIT binary patch literal 6148 zcmeHKJ5Iwu5S<|@EYXCHa<7mZn8=(U7eI+6C=xjW(Ys4Y%|(zn0pd0k9Dp|;z>!5t z3V0*UKJU!DUHKIrkBI2vzMYHAM5KZn%HEc-S>AkPCmERn)y|kN*WGqEsyh}i?nLh7 zR@R&AA^++5JG1SYX0_>7h*Ym<50CHd%f&F;9?9-*hNr%PMxz2$fC^9nD)6rrK+iU- zP6N480V+TRz7(+ULxCICiG84dI>2qwu@7`Q;!X$hN5FKUQGwr3 F-~(nuDV_iT literal 0 HcmV?d00001 diff --git a/3-0-java-core/3-6-2-file-stats/src/.DS_Store b/3-0-java-core/3-6-2-file-stats/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..fe8ae1bd741ae0c43765289463c1f00df5d28be7 GIT binary patch literal 6148 zcmeHKOHRWu5S^ish{UE#7G3xNYd$71@*ehx}u{9rTmEW5e&egGh$l=6M z(PwAC87LW;=yEFe{}P|fXp>*2_{te@2L2cWTs5m^ftRwo^~>wYT^leiFhnG-7X<>n l_zA#5&XLpXRDTd1anZ0>lwHK0(}DgYkO}e08TbJP-T;GCV^4Km!<{~nK8_KgSW3#;Z$SyK61*)B~SZ%xgVN`c6VBCp3$)jv{ z_e1{r@;kHdnr5@>Hi*n_YWMcuzTOVA?V0T1VR-5bXf!H71*iZOpaTC|0rYIM*;OD{ zDnJFOz?TB{eJF6ln%D>WrvrbE0ayj-*fa-{-P;8cN0Z0FYh@8Cbo|EDDGr~noCQwr#`Sv5<% zQufx-%UQ22@HPC?Q0wJbycGkz6=P$q_>2r**atctai;_MBVfAFsK9S1@Bs&{ BC$<0p literal 0 HcmV?d00001 diff --git a/3-0-java-core/3-6-3-crazy-regex/src/.DS_Store b/3-0-java-core/3-6-3-crazy-regex/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5884c8f2447d59aa9d6001896eeba60874f48d2e GIT binary patch literal 6148 zcmeHKJx{|h5WS-rBC&Mrg5;U40}^9eg^dBJe*j7lAT^{CW%s{h<7cq3GV{)NKrAdq zgy2rH-}yd#$&+H|h=`XD-JEDjL^XyWi&79V7hQW6EKZg^HrMmj<8P&d_QPl0l0UC|CUsq$0cXG&a0dQ21GuwA>U~9@odIXS8Tep8&WC^@*ce8|baY@! zEda2BISF*>B_t;pHil6V9tdkHP*d4j4AykmgT*z5QBl*0t@&W9{NB89s*e3b3MXz9 zeRc+%ft-PfE~j$;pWu@zHu-squbcsA;EyrDRl91JcqzMEzr3E@wE^QCLqy`DC=lq` kPXHEjj?9u%{XulZHHJ}9b`g6@2l|gdBE%EJhyX^nTS+yLwT`fY?e14*;PiSK(#aGt6g_Ej_NK2j60Dhd6eD$ ze#l?meP<3`(`@(M7Ln?8-JRasx7%U1y^uXV3{TyFMxz2$fC^9nD)6rrK+iU-t^>JJ z0V+TRz7(+ULxCICiG84dI;s*SxYL3B5inh7RNyxh_yEW> BD8>K) literal 0 HcmV?d00001 diff --git a/3-0-java-core/3-6-4-random-field-comparator/src/.DS_Store b/3-0-java-core/3-6-4-random-field-comparator/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..2103dcf94ab557929ff69270e032dfdeec71bd84 GIT binary patch literal 6148 zcmeHKK~BRk5L`nJk+}5OqYpfQ{vcH01-)=AB?yq3rc%p2pR4!-58#IQ0yDb?Vi9pf z2zDiV>>aN+87baaM8f=`nTbq9q(mbI4n~abQR*lyCKJ5PbtFR-%bSL+J}ptl$79T27D)K(dfU+Gryn{a%fVo6x1D=8eao5Vimz zAp|qh_<6^E{yb@I4*;30>k=3PDCml!l>yW6VAEdiJR(XOqr@?;(c%V+fq{NwNY{Rd zQ?C1jzP|0>0_y0M6nZYD~m*n5BfGhB)6p&FhttQ-3zFR+RPVd@4zo4sWzg{ae*55q>_@U>> fQEIgIpmp|(8GAz=MdOK1^oKwa#0yv82NZY#&YM0A literal 0 HcmV?d00001 diff --git a/4-0-object-oriented-programming/4-3-1-flight-search/.DS_Store b/4-0-object-oriented-programming/4-3-1-flight-search/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c9e6dba08c02b24929a4ae9bd6566cc99b54b1c8 GIT binary patch literal 6148 zcmeHKJ8l9o5S$b(ykK$bPevsJs<7IBvhk~^RedZ*R; zrJsLz`}b_xx?Zl^B`np~e7FB;j+4H(x!~Qt_EyDTh6Dq_Krj#t1Os=@fLFun@y>aO z;|Bx5K*@mI4+$!m9Xmt4IxuJp0F-CE3cj_M046a2vtwrn3xq8dXsPTi23tDp$>XwP zXK3lfx--`Co!L7S*4<%G8cv)IV+;m@fl~$sHXTX*e}sdX; zk-WARhm%^HpbO}qAXdXMXekD2DaJ%f@l!7@$v6Dju`|?k*fkv(4*}sNBpA2`1HViN BC{X|a literal 0 HcmV?d00001 diff --git a/4-0-object-oriented-programming/4-3-1-flight-search/src/.DS_Store b/4-0-object-oriented-programming/4-3-1-flight-search/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..8f0989b66f307cf3750381f6c1ccf2efec602bd3 GIT binary patch literal 6148 zcmeHK%}T>S5T4P10WUpz+?(gVK`iML^aZp=w9uG>6?&53$v5-rQ+V?g#BYAoEC!Dv zIs?1k?99$i@`dc|5)sdCn<>$Rh)Og;7G*@lJnGu>$>L;LV|_VYoOkVJWRc%$l4mcd zr88R5b^iSKuR~wk)%9}SEnzELS? z?qQJEW83aC@0dT&E8jUJ7zhS}fneaDGk}^cQXU#c9}ENo!N3OtvOgp=!OF2W)U5-Z zUIBmw%qr0Jj0sF)09KB@AuJHKP@sjfUoqIiVNX7#3~*5|>KR_jYwMTSlUke5PSHeUUM~s+ ox|U*~mSPNKA30K|`IG4ISB|}*tRi*|2gX4_35hNk_yGpq0DFZyH^i}s=;EoJi_Ao%h8xO@EmO0+`NYmjqynnlWBV{)-gmqGr1EsYxRq>V zCC{=N^EV&E+^%by^|o6hR^J?M-`?Bf)i~e&nBPARpY0V?8Wo@dRDcRlfq$t0dbU}8 z5y+JaPys6Nt$=+W65KEs>;wJNfyGAvp#8?X;o4^jV6p%(7wiKOfoV{ILDe#1XwVT) zr7joj1A{K=C*wZlWGxel`ss)#FBi>$T&VyR7%Old+nM$MYxs%ze@x2TVr;AxUk>V$T_c|h_JK}E-04962$(K3D)1W$ Fd;)o%E9d|K literal 0 HcmV?d00001 diff --git a/4-0-object-oriented-programming/4-3-1-flight-search/src/main/java/.DS_Store b/4-0-object-oriented-programming/4-3-1-flight-search/src/main/java/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6d5ce8304ccc014721edf2d3716491496dfa82f9 GIT binary patch literal 6148 zcmeHKJ5Iwu5S=9{EYYN-+$-b;OJpuUE`SnCP{i6aG*s?rxfS=INSBtHHy^-}MM?^I zBh5bV%)DLs6&{a>q}5}$6j_K!16P!1U8bga^@&|XWDZPv#&W%_{eDt+E}-0*Y^6%S zyC3s!-@h|`ZQISRZV+kSp6cP)y5;!;-9dV-r`6HmZ(5S#~DDVMg CqbfrH literal 0 HcmV?d00001 diff --git a/4-0-object-oriented-programming/4-3-1-flight-search/src/main/java/com/.DS_Store b/4-0-object-oriented-programming/4-3-1-flight-search/src/main/java/com/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..713348808864ac2c247227577391d9f799818571 GIT binary patch literal 6148 zcmeHKJ5B^K47Fj4k!ZH0%oV1k8dk#zh6AA4K~U^!wxQ3}s5k{J2S6Nv_hR!Ik%9st zgls8(No*&cCruKIh;HttR%9(A4H{9|sR*a5rXzP=0ky2Lm02da-rclAWud<~#oQYi zkvH3?{I~P|UP;mg>d;mulDJkHM zHS@gl*_B_h;}H?vJhf|)m55YOLphk4i^WZ6a+aPYP;HO(_P*Z_v%FIdt6fNsXXqZL z^_Oqok$vAZyRP5CQ*~F*FYoQ^^)%X^hz^g_U2joFAp>N943Ggb@UIy_&o-&f18KF^g%7p((n$p9HRW?&J^mG%D{=nwP%aS>N!fDHU826WkMn+-lG zd+Y4utk)Lk9rRO>>*+Awih01fZ4x)@F7u3Wb~ z)$mst;AfXmK~uV+Y5e?>=jK}J@_e>(GuYCX2lw$=yq(1B#kcG0%jUbm?;GvXIr7et z+0hl<$JqzRZI5OR?~ip2TlDc|NI{Z>6J2|4E!qwOp;IXF>WdJ*4E8&ueH!KC=2^lf^`Tcz7@llTk#>( Z3+$FBz${=T2n$4i1UwBoC1jS5FY0ubchBCAtInyiF&16fC`FDbmRphQFA{8kZ#%Kjw?vDC8DB4qPd5l zqoIo^c>^kb3LXK8Z^q89clRQ0_YjJdv1E_W<8SQw?2I)VA~JjPagS(=h`OjOFJD5l zq_CcAt!%iFn~(;0q8^1bp#jA-tj*Q|Wk4BF29yD1Kp8j-4B*Y?(mmzfw_0tL0cGG^ zGQja6KxG*@nOP~J1C68rkee8mfwxA6vJ3J^Z`$YjGWA@ zv~V&OPR6ZlT!vy~b>IS-PA0NaTV+5Qs58L1`*pgDynP$h&)>($<3l>6IX$Nly`*Q9 zpf|%<3{5(D(mNO>acWKOe{E|gPWt`fBpCwV-FcUM`!zn^ZEtJ*&upbneg78N65Yso z+5rnQa5AOG^0kA1&B03ujt)il0>1~MpOu-~z0ls0&sFC`&Q;5O#Yw@|`qs*Py=A_x z2w!}sxQ@WafR5-D`X}Fr_>NWhdGmgCq|e9aFF7A8uIu~X99{PJQ{gY)jjF%?U8(qc z^g8$VuSnnD?>{R3u7EDiyE%G^zgOjaZ!hsTp)`*e1Dtl*XZuz+K>L1Q?4&0#qLGEd z_jVRa{+k7#_cihVj`QC}$`GDU5i4Uvh7j?RqrwpVX@vuN_`A6UpNF5favmD)!@u|K zt(5p6`Frmm3QlQMig#xF9{h9~fBzrv=ljpK#TnJLrS&!zFsfxu209kM#rgk()4%_( zxr)M-0cGGUGhjCR2mL+l(B;;(y>hM{pguz7!t*jK1%gJ>aY#wWA@hG2q90%?VA)*pZkVP30F^{?qe6l!M)>vLo=a*f(9$DnKn&jCF zYUzS*X*GQQ@~Q7@ySiR1y9I3Je%C#}G>@l4fAg(>ebeXW1fj^gr7POd_EX+f-`CIk zaNo=8v2FK}cg#P`E8jUJ7zhS}fneaDGk}^cQXUyb9}ENo!N5BMvOgp=!OAfk>ehiy zuK>UTW)9NKUq_5TdN(�B7!spkAQ<>#3~*7;>lt3kYwMTSlUke5&e23et>~j*t|(A literal 0 HcmV?d00001 diff --git a/5-0-functional-programming/5-0-2-stream-sum-of-squares/.DS_Store b/5-0-functional-programming/5-0-2-stream-sum-of-squares/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..81b885a087d2472aeeab06188fe6736720a87adb GIT binary patch literal 6148 zcmeHKJ5Iwu5S<|@EYYN-T!|Cp1|~8+QZ9fJOHd?o1WNCYl9~%pa1k1g!vT2n0UTMR zq<}Zl?DNjd+m&D8@rZ~n_U&9`CL$HwP#$a9xzBAjdX;zzVg-G@M_W1PPzFrKo?UC&6c6jO)Xf!H71*iZOpaTC|0rYIM z>NJom6`%rC;7bAfJ`}iNo!AHZrvrvUe0=LfnUQv4Ygj5#al7ZTQN4)iq8gh#h#I`6Z=4?Bkpt{e*{by8Ws2r G1wH`BZYhia literal 0 HcmV?d00001 diff --git a/5-0-functional-programming/5-0-2-stream-sum-of-squares/src/.DS_Store b/5-0-functional-programming/5-0-2-stream-sum-of-squares/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a3be89fd14ba7c6f5335e9df8bd0d8c79efda6ec GIT binary patch literal 6148 zcmeHKOHRZv47H)4N^EAyGFO-zgi(>$&mO^01V~dl62rbrPQ(e2xCuM%!1D)aM8y&z zu%+ZVb{w~_YMc-eFYenp(Ts>{G(i?+Lc~1j+VRQaWLaZ}B6n}ks0-O?r9(YDOHe>(P!^FBO{ z@_KC7f99R?mwDwohXez`Krj#t{Bs6SvqkCy!{~#7U?3RyU_kbVgeI6B2SeRD(CHNb zSi!6UUC)@nBnDu191LNBu!RCGl>Lgq77lyzdD(F=v~Xh0jCDNo`{jlGgv&{%6KBKd zgMnb6WMJ2ZGpYZ__?0Fv`DI9qf`MS*k1@bivuqZ4DX*=a8V-zufD#g2Fz^Emya695N5udD literal 0 HcmV?d00001 diff --git a/5-0-functional-programming/5-1-1-crazy-lambdas/.DS_Store b/5-0-functional-programming/5-1-1-crazy-lambdas/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..553b5790c88b71a90222caa1efa82e90b0a87c85 GIT binary patch literal 6148 zcmeHKF-`+P475p#lSq-0a=(xtEYb0Td;sN6f+EpHAo{J~X*?o59e-eKFL2R`loT+Q zymM=Nc6C#n&myAhr+y`}6p;pQC@;25&GP0GyQq;lQ0rW^K$N!_`CacA-<57O=K z#{6#ao!JjvF{s z7<5s;8RyiSwN5DNwxAr27ca2U5~0 AhyVZp literal 0 HcmV?d00001 diff --git a/5-0-functional-programming/5-1-1-crazy-lambdas/src/.DS_Store b/5-0-functional-programming/5-1-1-crazy-lambdas/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..73dc0daff4a33f8b2ce58c16ac8dad2703334105 GIT binary patch literal 6148 zcmeHKy-ve05Wb@sBC&MrXo&%diM~Oo!V~lbpacO@Ln={rPlz|;1sIvxcn7}o9S{qP z5g~df+28qoe90%p&JhtW?z=hBl!$5!K^CPTVlKM&ELfZ@d#tbK%Zs7k6gK&*CVBRX zdOD{Yy3L>e;BoBhhqhg7);*o%{_aQr=6cM{F;Y=?OP6#<+q~{!9Q(#~ zA6`avEw>-O>X!V4x>DQ48E^)i0cT)$8Ni(_QtvDJ> zY5{;1%t@e2FCjU>urZ8^@IY8oftt$JVz8#e9xSdgjEb60Y|RH-<&WltQ+4bgQaEv= z=(9864CD+Jx7$OoEMS(!i kegd$Nb7YpB>JOqLt}%>?vWwVLI?#Uv5+Oc01HZt)JIL8c(f|Me literal 0 HcmV?d00001 diff --git a/5-0-functional-programming/5-2-1-crazy-streams/.DS_Store b/5-0-functional-programming/5-2-1-crazy-streams/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..20a8d08e587885ceb3bb01c4dc9abefe79389512 GIT binary patch literal 6148 zcmeHKF-`+P475p#lMqr$%KbuqutdiT(o&%0B#=mS5fS}%JS{&-M@i4vUf`k=DJftq zdFR&l?CPdCpG8C$FWp>ZCL#^oP+n~ro8`?%c2Of!pxPPp<+|VQMs?=`#+}Gso@Kpx z81nC)zBAjtZC9Iqg-CPt-XGt(!_6?;oyqPVho=_MXjFg-Pys4H1^%@H=-Fn?Wgu57 zKn1A4mjd>ENN~eku>|_31B;IUK>Lk%!?Vv4z+?enu2=#QfoV{ILDf29XwVT)wJujI zfk7Abn{iIPS?h$NemmmH%SCe_S1LdSP8FEMc4qzm7XHKhe@fzx3Q&PRrGQS`WxK#D z)!sUKIqS6veh>dN)OtA literal 0 HcmV?d00001 diff --git a/5-0-functional-programming/5-2-1-crazy-streams/src/.DS_Store b/5-0-functional-programming/5-2-1-crazy-streams/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..0f7f9e6f1d3e81dd72a443994f814ca2b454d453 GIT binary patch literal 6148 zcmeHKy-ve05Wa&*L}Ka4z~Buw=o_R}c!It_DM5hL;7Tof-i|k6L9EPt=Q|)479&D% zC)wZmetgL%#m*5C&mX!e(S(R<3_%v9AYv}M_AFSOEPJePri-iCZwj0IR+Bt?MLk{8 z9o^^8e|#|Z^|5VN>$rlgK6{Q&FWuuT_jlj=H@9PM&XJ0`JG!PV?ee;(%du}<_vCd{ z*K+&#S-0db)Ro#U&VV!E3^)V-mjT?_BK4u7&(44|;0$~)Am>BC5Nr$w#dLIFN-Y4e zf;kCv=_Mp57&eB3B0Lb*RG_A^wHU1Fum_8437d z0dJ()=bf3iE5E|y5fNQHv~!V}h*WSxIoL8b%bSnvEF)8(+8OiZrrYgDb*BQxoyfi1 z$!2>qw&RDcTnDFt-e zESm*hDSPYa<*e5h_zM1MsP%Fz-im?Vim|a)d@-mi_KbX;*atctai;_MBVfAFsK9S1 F@Bz`fDa`-? literal 0 HcmV?d00001 diff --git a/5-0-functional-programming/5-3-1-crazy-optionals/src/.DS_Store b/5-0-functional-programming/5-3-1-crazy-optionals/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..40bf21327c8cd17051379d314a5b4b7ebbb3070c GIT binary patch literal 6148 zcmeHKJ5B>J5FNuJtwfVDr8z=cDidu^kPARqM3A!Cl?c60kt=ZwIy&ya8_yuw!lFco z%t-dL=i^yFX>AV?x#dg0Aes?Ti^k}9P!U#FO=s%NM#pRH9vAETahNKL{8bfydqV@= z(G%^`o{VeGoiZrs4X-Cj)ZAN}i19y^TvkM?PsaRate?13KWnGR*%>$lvN=e?R| zc{MiATeBB=DR5pBW55_N28@BzWo7nia_?~^;ZAZWcY zU<{NDoXd2^_x}pNOtr`_Lu_UY7z6)|0oQcvZi!9l-TG~NeAjxkTQnB-i#&i}Ts#6W h;d5l3jAHjZhF?&Og1idrQ#jBb0*MgojDcTZ;1l7PMW_G( literal 0 HcmV?d00001 diff --git a/5-0-functional-programming/5-3-1-crazy-optionals/src/main/.DS_Store b/5-0-functional-programming/5-3-1-crazy-optionals/src/main/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..3d260a2c37e2cbe6b54ee6333bb6d7ac8ceb9f81 GIT binary patch literal 6148 zcmeHKF;2ul474Fak!Y@@+%Mb@mQ#4aeSkY6fzU-s10_nwD|ipzprYdsjO_&_ijI;3 z#*#f*uP2*K5yv8;n}>ESvJ#ORZYa+dmS+3r3p**93aECE!|i%|(|5z7@_53ymE6lt z9%VP@Kh5^KzG?P{evkV4C5mOqKxVf@2^uFbyg&s9Hu04Lb6v z)a8O>V9-VVWZb8mtYtz`KOOnx<)S%|kqS_OxdNxLTv`9Wf*+ax=OnJE02TOC3TV}A zn+;y6^w!18S+7m-YxtL;*2@vR6$8B$V_~iMVp5mv8vD8680d85oet!WfayY`0>7ca ECwEgSzyJUM literal 0 HcmV?d00001 diff --git a/5-0-functional-programming/5-3-1-crazy-optionals/src/main/java/.DS_Store b/5-0-functional-programming/5-3-1-crazy-optionals/src/main/java/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..24b47291960ec691a1dd042cc6a01afeeb3110ee GIT binary patch literal 6148 zcmeHKJ5Iwu5S<~Bu#_exFr+8LYOq3?!S-L-&m7jlqZy5sYd z|75JpbbZt8kNqBz>U2ANoZI*NX|}zR9bTrVoEc=g9;3)=7^y|N4#WRoj3*t zUDR*JIeD|@gra^s;>F8F>p-qlfC^kHu!!y2`u_v`hxz}K#2po&0)I*YT{gRBi&x6t zI(s?mwFUkN|1#8iITmllKySs^SS!Ap)D?S1zD^tiosPKEf&39LU1(I`Hx&2;IxZ+_ literal 0 HcmV?d00001 diff --git a/5-0-functional-programming/5-3-1-crazy-optionals/src/main/java/com/.DS_Store b/5-0-functional-programming/5-3-1-crazy-optionals/src/main/java/com/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..47d05d96c4484f80b23bc163556f94a965d5eebe GIT binary patch literal 6148 zcmeHKJ5Izf5S@W7BGGI~=_}+0VHL`)asiYLf?`)mL!YDUZ8!l}pxYZz@SbP*M7W>< zAv7b6pY8eBc~WeTi0I~Fs72NyQbCEzPC+WiM5>TrAQ%V+f`MS* zM;O4JO{p#nqYVavfneaB0iF*DN^Bfw!+dn0$t3`g&*&`ZvzA~?a%>!DLs%ecp+E~& zFEP}@F`wM8ahwe;T-1vX^_Aa>7tO09f6DHnjbXIGKrpam;M|65-v8J5Wr{`qG9*U9 zKrryn7|>PQwHtht->qLhk9Tc?-askzo7sV&zjy>-z;om>8_k~BhhO738!`*$b2u;_ N0-2C#f`MOP;1$H%F{S_j literal 0 HcmV?d00001 diff --git a/5-0-functional-programming/5-3-1-crazy-optionals/src/main/java/com/bobocode/.DS_Store b/5-0-functional-programming/5-3-1-crazy-optionals/src/main/java/com/bobocode/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..1dce678e4813fd63b645a222b6e4e24311a36757 GIT binary patch literal 6148 zcmeHKyH3ME5ZntXEYY~6ykAH`e?;aB@&hPXKoQGs=&#GC@h5cjDKq;BN-$|D(5$pO zzP+70c?z#rMAG`bUx~CL(!dpEuVHSwuRgOyWR}3BXFQL?&M@{@_olb=^C~DbDnJFO02QDDQ~(N~XR9^0j*L`* z3Q&P>1@!xn;ff`&I@+fL!A1a}{>Gc(*=7k~)&#HwR!3xD$*Dl6rWi4j(~-|nR|2b} z(I45pSF`*>89rkSHl) zg`lz}`%OG{#(5dV86pbHeK9AR5m5?dOr|g+!t<;HNzB8OLGDr06FpKzyY2lT+8uw9 z0e*K=x}|5@z;@o>e6^{{+Dd*Mk1DG?UvH~5X4A!4{r*wBEe=H%Ka8v&x-0X(#OAxB zJ?&6oySutE$;((wx3;VEwzk2&%Id4K@8bG(U2 zv<&d~Awn55!$wg)9WZhP08Zc*!C3y;fRP=*%&<{}2NEB-*`7X`z!%0768_XLm(nB4Jt6Gnj?k=9r2QN zb>a{hbWy(<=j6?r6N>unh!-yxtpmAI0V;5)z$~^4>;G5qALjo<5_eR93j8Srbl$9+ z6<#TO>*VFE*B1B<{L@hDWRCI<3U8@17fR0d6uo?!fa0Xhg*l zA+V+7Id&YkuWFnS5icH_Inj)WN;E+hWkSR}>Du$j;$&H4eLG)XcWpnh$Zs{tvlrCT z72VS&fBvKAv9ImwdbRFWu$51z{qD7SInVvgxBmWa%uPZl@^0yd9%!5AJv)NGORz%cq?AQ%V+J{XYwA)yIYj)S3Y9q9B5 z04!iufv#svU=jncavTg{fv|-FEtLI=!4?jC@_CixU})jQni=bO=J(4B`w5qmPA9Gm zqYnmxft-PT8_uNuU*K1oyyWL0F$xBPfj`Co7xl7U;HA8_etA8qwF&JKO+@AmqClW) mDF$jO#z6LwV|AK8i4K3|I2g(*V%KnB90Zh*=z@VCVBihCFh?H% literal 0 HcmV?d00001 diff --git a/5-0-functional-programming/src/.DS_Store b/5-0-functional-programming/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..211585e007c247ccd000c206c226715c59a9d060 GIT binary patch literal 6148 zcmeHKJ5Iwu5SS+v9awY(0LpK?8m@Jg0450lvtuzt1ja@M8kK#-V51|R zye>NyL!%Sx$+(Z7%s!#8o{o6Za^h?lYbX#3Ocl7Y?Na*xJ^aG_KPAO36bJ?Wlmc8e z+h&7T^4>aoIq9_t{s2E2YPB4Twql^RVr--puSRuAu944<#Zc*pD;*d=0-{S;DDWE! Fd;{FGD%t=5 literal 0 HcmV?d00001 diff --git a/5-0-functional-programming/src/main/.DS_Store b/5-0-functional-programming/src/main/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..8f7d58a0c7f854f0d45769559062771a97269c64 GIT binary patch literal 6148 zcmeHKF;2r!47E#!NGu&0{}n2B^r^xLdV#h?0-;vPQs!(Ntv6xg4m{f*lqf1A13XLq zFW>gdPu>v6BBJY4yAoN7NDViXH(TardGnbqN~8j+-Q)1I+B|m0epY!oVBAVxWGAn( zoA6a`$GKzIH2XuhN31^I_3t0;`F@&jf6VvKqi0)eL8VavDnJFO02TO`3ZQ43)z^Vs zsQ?wA0^bVQ_aVUzbHO3dKOI&Q%=@0p{SpZc=B@59LSXlP=ToeSFv4M|9^mAnE$6F?x+A2_)`jK)ohwI zUa9of*~?k4P4F%J%TVj(SiBVjy%l3)t@vhCm+Tt(TyO|b>!3?!2b2D)VIs2>E`JE(#Cf_$Jz475WGd+F{iPs>k&F8xD~q}n(znz2KB z1gNt}o&?`unj)f`w`MJ}6p;#UC`VhSW_k08%}QheR6Aq6-FIz2sk;?0?p*fLNqcx1 z^WRsOOxxAK}S55x?FGw z47#Y_jC0D(S|$|r+YwJ*E}8?mQUNM(t-w6COY8qn@E_*?YZ7-kVG1 z^w!DCS+7m-XZV+)*2}SYD+YQi#>QIl{irV4GxE9M5a@Kooet!WfayY`0>7caCvX-h A1^@s6 literal 0 HcmV?d00001 diff --git a/5-0-functional-programming/src/main/java/com/.DS_Store b/5-0-functional-programming/src/main/java/com/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..8e3b58a14d211e271ae00444f4f9d6a631b29922 GIT binary patch literal 6148 zcmeHKJ5Izf5S>}Jh(xm`rF*K}Agsa(asiYLf?`+MhCVmgnv#}_Y`cfy0KDfJRz$d< z0Uz@1I0E)Am%27-ZL;LHHehXf@yj+0?NI?&`20LW)_7W7$5FeW)Rj*}rQ5VcUC zg{qerYT=kq?$9Scx%c literal 0 HcmV?d00001 diff --git a/5-0-functional-programming/src/main/java/com/bobocode/.DS_Store b/5-0-functional-programming/src/main/java/com/bobocode/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..8117b166bf09d5fe4444ded3de02d447c4a4d085 GIT binary patch literal 6148 zcmeHKK~BR!475w7265?u1IK*={XvMr3(A3G2|*x~C=rEwK7hop_y#9#{DJY>Es4@f zoDiyP$vYdbopolTI3^;_Udjd0oQM*r;N%#?4v}@ykxa}YiyZG!(haSv`^ECM8F{6xDBE@ox#)5hcKdhF59=k>9d&)`0F^OMhhuVFqPl8=is;0!nehsFSEwn%cK=%X{> z3^)T@2ITt?pn|Dkrx-sS7-9+Wot25!(k8Rml}48 z8cuA@2iwkU9SXO%zECl*6SrA*Sd!L&t=ZmbYv6g{2EQ# zp$Sc?L%lg~8!!b-fxo5z@7)^hW8d=LE$-i8a@K73($QE_K44tnIZC6bo1|TMRPQDy z&u{VL;b-3Q3f|*EF^d~cW-HHk7da<%P8T$!KE>L@7pR>3ak5-gk;nGK_~li2Eb+Wi zI^(ojWSQSR^K0b%_Q0s?`E}@$uF;!-C%1bvKyQjxpZaCCVf!m<6uI9%Un1xk9h&XMD@Hb6N=VPn5c(1)PX7d z0dJ()=bf3iE5E|y5fNQHw{wx1h*WSxd9h_|mNy^SSw^NnwKL|+b+_G(>P`iWJCP@O zl=bF*$iG~DXSQ9_tTvrRs+-sS;k|vk8fM!Q+1flf!<=|KJnm@YIb@EZzz E0LtDdLI3~& literal 0 HcmV?d00001 diff --git a/6-0-test-driven-development/6-1-1-stack/src/.DS_Store b/6-0-test-driven-development/6-1-1-stack/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6e61514bba30dccec9dbc64577f94d9a5a6f769e GIT binary patch literal 6148 zcmeHKy-vh147Q<2l~`_M%*c8Rb2;^%;9dZZB0##*N_XsCZ{~p*c@s9?fzLlcBPvFO zz?PEFvE#V?s>TTs@#3MG6U~UIL=$9DCPd7Wt^=PePL?$`H}ln1*Y*>O{8p1ZdqFK- z(jDFB&wq3}_O)GIuQ%NqwsO1gUtXK%^W5Kj>+f&J+$4k|?~bl%OS?QTosE6tyibp# zydK+jpLwVJd0zR>A;CZ}5DWwZ|C|BTY?1QVF#2F17zhSF7?AxTp$S%wgQ0F6==2Hz zEMQiFu4hbO5(BVu91LNBu!RCGl>Lgq77lyzd6nZ}XyL?~8S8lF_sa|W373;jC$0>m z4+esPoPk3d&ZPb?@heSU^7D`w1p~prA7g-vdQ~s*QeIoXyq?tBgm!@@BJ&1OAkeiG l1GN-mAp6LPI?bO%hre?x;K>u`L@eu%MzwvH(_E`d0EC8$%`#?ls8dP9VHAf5$I^rek z>cl=U=%Riz&dHlKClvMD5iedYS_g8a0#x8wfk|v<*8i{JKg|EfB<`pH75GyM=(Jfj z3%pYH*3rvZuPyKu{L@hD;+&60;J6*5=%jsGjIl4?m)*)=(q#VA0Q(l zN`%0cW}e3$kCPW=JVQjhxNYV{Ga@R{1X+{`5%Z*L$0v)EWsUXae0kor{lp@_)g;ee zP)lcYO`H7r_n*eTwyW#ax?90k-aYg$ug&vu?r*;J_g73 zr&j=A0kaBpJ!1ls7=V@IU>>{kr7aM+X2s~iVI3n$jhSjRKJUtZWxxSVu4 zab*~NFc1vn4D8x)CiVXWztZF-KM#pfFc1vq)ImXs2i*GH(zC o0$ocnP)jievX307)BH(v_$$Z3P*xGUh6CdupoByh4Ez8CZ@$q;XaE2J literal 0 HcmV?d00001 diff --git a/6-0-test-driven-development/6-1-3-binary-search-tree/.DS_Store b/6-0-test-driven-development/6-1-3-binary-search-tree/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6e03a50a64bee40642c1ebfd93d44d80381a7f8f GIT binary patch literal 6148 zcmeHKJ5Iwu5S<|@EYYN-LVJbWz(l4;$^}qj35rCvK=kgo4R@g8CQxw)-h2Q@7AYy< zjWqkbGxK)kS9m-kqN|5?DY6ie3T`NmwoJ|P<`X-~$Q-D4#&W&w_Wh*pSirb5xtBZH z?rz5X^SAHJzH6GzuG=6|Jw5lY@9oRQINKh{_P66xuRx4hj_5Vxw5A**ai90Gl1^$!*I&ap^ z3a^yCb@Fo7YYY4u{%NT7axC78f!>O-u~vLGsw?)4e4RK1IvsJR1NkFhy3nY=Zz%8q DYw0Qs literal 0 HcmV?d00001 diff --git a/6-0-test-driven-development/6-1-3-binary-search-tree/src/.DS_Store b/6-0-test-driven-development/6-1-3-binary-search-tree/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..fbed5932dc1133596797c3004167e439a5adf981 GIT binary patch literal 6148 zcmeHKJ5Izv47DLbk!ZH0oGWZi6IS5_djVL20BJ)avGh64?h$BdxCtExpyT-iWJE-X z5ZKbp^Vs8Y@}i7qh=>>W&75dPL?xOai!vc%o^6~upHh=zu?bz3Lb-h}5E7;22L;w8JJe}nJ=39S%J?17M6nQsvNq4l#^V0FyH_rR| zILhm>ZTFdX%Ae2%`C zF#2F17|0pex8Y3c|0#Z@$xD775~E-s82Doha8WPo1zyT)>zCJ)TAR?$&_rb3APNM! nmSUimVhm&-IZ~(jlj!hQj)S4BB6bZ2#z8;{i7puU0S4Xx{`N_? literal 0 HcmV?d00001 diff --git a/java-fundamentals-util/.DS_Store b/java-fundamentals-util/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..9c276a90c101dd4f113b114771dbb136fa4f20b8 GIT binary patch literal 6148 zcmeHKOHRWu5PfbdC}Ptk%ZLM1>J35^7OcBqOFyVZN|gwT#4_wyaTqSa9XJ3R1mXtp z#$&Y!X;}h7Gt&6ko*8@m9N94dmt0Q=Ko3BdD%jd%u|dQx+K^W0*(W+b#tjz8PO^M5 z&Klm<@fR78z1u~BoIBS?W&iRqE%I3;)c%JT)_^vyaEXcT^2+OBvsX473@7=b@R7KC zS;sH(G#zI?zT0~$o?oYrM^)?e8*4GIj`}Wx?_h}$^P1rt%X)6^koM{dYQFUh?}d+= zy_)Cg#pw1;^Zeqo&UTy6hMXmD6Jx*_Fa~~u0p8gnT{-hii~(c77^pHJ=R-slj02X6 z{^(%QVpHrLK@ryFr%^Bp7zZpBX`wg`C2FV(PYkEw?2m$99I#Z>a5z6R#|bmL@IrBZ zcJ@c!9WGY1(ikuX>I}5C*^~SKc>DXm9%L;f47g4@OcO3C+^vnp$z2;!&!{5e nS1PVTSn*deedQ`Xpn73{Bo$&DuvBCZ#eM`l4OSQfKgz%-OG|F< literal 0 HcmV?d00001 diff --git a/java-fundamentals-util/src/.DS_Store b/java-fundamentals-util/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..525c0f59cafd8ee490b2cdff399e1d95c4f7b910 GIT binary patch literal 6148 zcmeHKF;2ul474FdB$_KJ_Y3!fO`q)rR2mha0#twsP=SA`0D87reHO@- z3Qz$m@U4J-9}?U!7aRlq(}BfD0HFQGyW!er31G4SFc%yH5rJt?fkD+WVrbA2Po*vw z90P+c>L=qqR# zl}c}2yqxvg1iylR8EU;8i??E+w_ZG%D~L3VZ_6 CpDhaj literal 0 HcmV?d00001 diff --git a/java-fundamentals-util/src/main/.DS_Store b/java-fundamentals-util/src/main/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..dc7588af815433af3c5ef10484157ab882068898 GIT binary patch literal 6148 zcmeHKJ5Iwu5S;}VmS|E^?iJEfEs;5a8%h!^flwl+3AH=Uz%951r=a2r9Dp|;kS!~e z6!1oxecqXQUi%dukBFqzp<9Y9M5Kl*%9Ad0)4cl3P9jnPlip){w`_0w-F{YiJfPf4 z9%L<#vYzs<-^aOK-!z+Tzd@{izG&Y*y4TBTzWXu1zaKx_3#c?IKn17(6`%tDQUUaA zwffAFD;1yuRNz|y{XS&4VhJ1^?bCt9MgXAx#+%{VW(i={0I&oOj)=gLQ-MxRF=8aA zBc7wK1P+c)mt-g7K5=r22_@O-h-WL8R2;cd0V*(6;MBJZ?f+NsBlG{1#2po&0)I+@ zR5fk0!Yf5@oxPm)+6=#ee;I169E-JLptWLbv=yI^>at!VUjhe5qa$u~Ab$i@7aA4# H4Fx^{9^@-) literal 0 HcmV?d00001 diff --git a/java-fundamentals-util/src/main/java/.DS_Store b/java-fundamentals-util/src/main/java/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..fd401e456aff9082b772c34a2270657fa11643d5 GIT binary patch literal 6148 zcmeHKJ5Iwu5S=9{EYYN-+$-b;OJq*q3!uaj6tSF!n(b)06{kR4f&=j8130phG6lSm zW}kOv-md%#k4Hq(=BZzctVE=NE6R&5bJM)~%&sD`1SUOW-R;KVFsnNkQ0_u@GRm-j znDWcVZ)OESMhEgoKy{%}flDax1yyh< ABme*a literal 0 HcmV?d00001 diff --git a/java-fundamentals-util/src/main/java/com/.DS_Store b/java-fundamentals-util/src/main/java/com/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..62cbb1c4470de2bde8f4655774de2057b145c400 GIT binary patch literal 6148 zcmeHKy-vh147TBhN-Q@rW@POflv8O?A_D_L z2-#BnC9$2jpVTB45#2lvwa8jTDm0?9QxHxUO=s@B0%~4kE29i@x4W;q!a{#>in&+P zBX71(`ESSlWC>qAmwfhP+xEM$r|oc@UQWZ)b=hzDmf!SHcOQHD)|No%U?3O>27-ZL z;3pZtolU7O3_}M4!9XzZ&H&Gcghp%}XTyASK;;qu$Y*pG^jS+VCOI~avmq=HwNRji zs+SmQ;h0bE*Er6G7B1?=hx*QM#f#?Mv3|<#qK#qbU?3P+GH`CgHShl${4&KNe;E>^ zU?3RyXAJ17?b;1K%J0@MpU1m4q1~cU=r^+iL4WZGz<}q-Wj2~Uu@Aq-aW>>CoX_FF OcnD-dLInfAz`!dZ#xhg@ literal 0 HcmV?d00001 diff --git a/java-fundamentals-util/src/main/java/com/bobocode/.DS_Store b/java-fundamentals-util/src/main/java/com/bobocode/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..95f3ebc0303d15f1610b26f21f6ac254a7e50d3f GIT binary patch literal 6148 zcmeHLOHRWu5S=MO3ZF%nEPVuegHVMN^a8X50aBu5K_!-1ax-p$U;_w=JMhM11)Bzz z1)&+qe$IUI`K%h}?*ZMuz2bNp2W zc@C@6~7zuzR@l<)Pnnh>XbP< zN~1CN-OIoo)i>=Y`*=pme=PhNtugECuk8E~$71f+w}E@8jhV;dDX*WmaGRL|rhqB% zn+jmf7RwJ5tv3Zs0aIX5K)w$SO|S^qEBa3dI)4NJW^jAM*za+GP8`4@V6O-djI|V~ zr5uhJtmW{#kXHok6}6n$GvhvinZpT%!w!p`PbV%Etv3ZsfmDGVy`0MWfBOCTKP|E= zQ@|AXR|;@eF3LHk6xP;_$;n#l(9Y1rB(GN-N-*$CF>+-omOnV&;CC_r76E%jcwn{> M@G@9u3T#z@4*_{;pa1{> literal 0 HcmV?d00001 From 7b7a77577cb4099692872918d0f5a2138f859afc Mon Sep 17 00:00:00 2001 From: admin Date: Sun, 16 Nov 2025 13:20:09 +0200 Subject: [PATCH 2/4] =?UTF-8?q?=D0=92=D0=B8=D0=BA=D0=BE=D0=BD=D0=B0=D0=BD?= =?UTF-8?q?=D1=96=20=D0=B7=D0=B0=D0=B2=D0=B4=D0=B0=D0=BD=D0=BD=D1=8F=20?= =?UTF-8?q?=D0=B7=20java-fundamentals-exercises?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 10244 -> 10244 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/.DS_Store b/.DS_Store index 3c420976ac6bcdd53ef55201215dde0f9bbe1755..b6f97f116300e7949161132705c0592245bbb521 100644 GIT binary patch delta 107 zcmZn(XbIS$DiFu>ot=S!frUYjA)O(Up(Hoo#U&{xKM5$t@mO8Z_iM^=M^yO~xV-8{ d-Zx*+ Date: Thu, 20 Nov 2025 05:04:31 +0200 Subject: [PATCH 3/4] =?UTF-8?q?=D0=92=D0=B8=D0=BA=D0=BE=D0=BD=D0=B0=D0=BD?= =?UTF-8?q?=D1=96=20=D0=B7=D0=B0=D0=B2=D0=B4=D0=B0=D0=BD=D0=BD=D1=8F=20?= =?UTF-8?q?=D0=B7=20java-fundamentals-exercises?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 10244 -> 10244 bytes 0-0-intro/.DS_Store | Bin 6148 -> 6148 bytes 1-0-java-basics/.DS_Store | Bin 8196 -> 8196 bytes 2-0-data-structures-and-algorithms/.DS_Store | Bin 8196 -> 8196 bytes 3-0-java-core/.DS_Store | Bin 6148 -> 6148 bytes 4-0-object-oriented-programming/.DS_Store | Bin 6148 -> 6148 bytes 5-0-functional-programming/.DS_Store | Bin 8196 -> 8196 bytes 6-0-test-driven-development/.DS_Store | Bin 6148 -> 6148 bytes java-fundamentals-util/.DS_Store | Bin 6148 -> 6148 bytes 9 files changed, 0 insertions(+), 0 deletions(-) diff --git a/.DS_Store b/.DS_Store index b6f97f116300e7949161132705c0592245bbb521..3369ac0bff09a843c71bd80f732bb9b530ffec9a 100644 GIT binary patch delta 260 zcmZn(XbIS$DiFsj<;TFlz`~%%kj{|FP?DSP;*yk;p9B=+SbFen$=8(Qj;Qh}c;yQ+ z41<&Na|?ia7#JiDOl}rf>*8t*WU~To$Ye-iNM%Swwu52WX~(#9upKBW5Voi`8$~Tl z+gu_j#K>y)Wa7*(le>jfIlwHS+a}uyiETb7^oWH+`$G8LFCY;Cai_@*k~}B^n*$^g K_)$cFO1J=vAyDH0 delta 260 zcmZn(XbIS$DiFu>ot=S!frUYjA)O(Up(Hoo#U&{xKM5$t@mO8Z_iM^=M^yO~xV-8{ z-Zx*+n=Y$@yaNL=Y|LiSDL_pkWa)TrfiooUo Mi3ENW5ug$-0MBStK>z>% diff --git a/0-0-intro/.DS_Store b/0-0-intro/.DS_Store index 45f88c82b22a041cdf75addadf897cece532b72f..bbfd893517b52576425f08cd49d920af1c14e964 100644 GIT binary patch delta 32 kcmZoMXffEZgORn2W#Y^)lOHk)Prks&1L19c$fzs^0M&F1(f|Me delta 32 kcmZoMXffEZgORmDCHVa3$qyNYCtqOXf$%mzWKu?{l;e(*c?5JOuMy-y6?h}ayO~k&FcWJeQ{>$*lletVC;t=X Mf$%o-i+tq<01?U@7XSbN delta 71 zcmZp1XmQxkAi(ivL+-P;DaRcr^9blnUL(kZD)2^-cQd2lVJ22VoxEpnC-aM#PW~s% M1L1Av7x~H!07=>%82|tP diff --git a/2-0-data-structures-and-algorithms/.DS_Store b/2-0-data-structures-and-algorithms/.DS_Store index d8b2a50cfa7cb1239c222060cf7d9b0d4abaac4f..59743811ed1de85c6e9d36fea9f8e2ad2b8572c4 100644 GIT binary patch delta 91 zcmZp1XmQxEMTm9T^YFW0Chrt7s-p&bg81BnEPs!d)e%Eby6 O*t}QtFgtEJcP0Qb=O%vu delta 91 zcmZp1XmQxEMTpg}EAQFc$vcHiIl!!xsvAI}-pS&nM3S diff --git a/3-0-java-core/.DS_Store b/3-0-java-core/.DS_Store index dfedf26af65694932a33d08596c50f263b4e00cd..7624002951d6973130f1a6a556665f8447965884 100644 GIT binary patch delta 110 zcmZoMXffDO!oph89(wo7M~?Ag|jp#PhnfZD)kyM#$&HMbaF*`oH;fWu0P-ddSO5S3 diff --git a/5-0-functional-programming/.DS_Store b/5-0-functional-programming/.DS_Store index c824d8361aaa79f9b67520763f832e632f1db9b0..1703a64462abe81ff351031ac05a9511569c4aaa 100644 GIT binary patch delta 319 zcmZp1XmQvuLx6RKX~f+xljjP!!&%moRRkAsRILuX`z7VL>}L2p>YDLu1^?Q9g?utWD}7N*2`}|?l~x83uhTl zHW8h`nsOE-&M#&<`JX5coL8#6Qwd@&&~eNR#SBFZ$+`Im=YnN7FBc1EqpESSi~z*F BfrkJ9 delta 319 zcmZp1XmQvuLx9z2M*g$6ljjP!!&%moRRkAsFmC~hryO^jTqkHFl;V<;Vi?+ zCZZEqUn+yd`Nd2p{}bhb^GcO>+W^IZ?gToHnW31Wh#@&QAK_fE?B?ZS;cQejE|w7h D9c+KL diff --git a/6-0-test-driven-development/.DS_Store b/6-0-test-driven-development/.DS_Store index a2a4e5b2efcb0bbedca5bc88c845b14520b45bee..0cbcfad39e098480a4d32a503bd23fe224fb0fbc 100644 GIT binary patch delta 35 ocmZoMXffEJ!peF}D*W!3$(pRD9AH+;amUGfSkyN6uvQ2G0Q?>fFaQ7m delta 35 ocmZoMXffEJ!pf?$sNmV#$(pRD9AH+;amUGfSkyN6uvQ2G0QYDP3IG5A diff --git a/java-fundamentals-util/.DS_Store b/java-fundamentals-util/.DS_Store index 9c276a90c101dd4f113b114771dbb136fa4f20b8..fea558ab55d86f4641c4c99c0841d1bf8b526527 100644 GIT binary patch delta 72 zcmZoMXffC@fk}DM?(n-`QjR+^FfcGP6f+btB8BkDaRcd7#NrtiW!O+l5_J@T#|C~lYk-|VA;u=nOa%HGZP!% UO-^JMo*cl;1L18>WL_)+0HuZ*%K!iX From 1f8671717f58964d64d7fc4fe7f8116ae42ecf8f Mon Sep 17 00:00:00 2001 From: admin Date: Mon, 24 Nov 2025 00:17:40 +0200 Subject: [PATCH 4/4] =?UTF-8?q?=D0=92=D0=B8=D0=BA=D0=BE=D0=BD=D0=B0=D0=BD?= =?UTF-8?q?=D1=96=20=D0=B7=D0=B0=D0=B2=D0=B4=D0=B0=D0=BD=D0=BD=D1=8F=20?= =?UTF-8?q?=D0=B7=20java-fundamentals-exercises?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 10244 -> 10244 bytes 1-0-java-basics/.DS_Store | Bin 8196 -> 8196 bytes .../1-3-0-hello-generics/.DS_Store | Bin 6148 -> 6148 bytes .../main/java/com/bobocode/basics/Box.java | 10 +- .../1-3-1-crazy-generics/.DS_Store | Bin 6148 -> 6148 bytes .../com/bobocode/basics/CrazyGenerics.java | 290 +++++++----------- 6 files changed, 113 insertions(+), 187 deletions(-) diff --git a/.DS_Store b/.DS_Store index 3369ac0bff09a843c71bd80f732bb9b530ffec9a..c16c5cfbf9b60e6aca7a3e4d857405f94e098f6a 100644 GIT binary patch delta 256 zcmZn(XbIS$CJ<}$l7WGNg+Y%YogtHH9K1F8#P8s(cDw`GO3? z;N<+=0-zoS2FVYTn+4X^dq@J=tUwzw8B!Qh84{80sCjE}|7s@K4ips#TYkJzV5*0> z0!ammJq!~-wt@VR%TUIUmy?d<28LUk*9*>NWcu$k*-v;jBkN>85wFcAA{T@KbFD&T delta 257 zcmZn(XbIS$CJ-y-$H2hA!l1{H&XCDalAG`1l9ZF51Qg>~dhl(@*OcRqsPZXz8G769gqK delta 107 zcmZp1XmQx!Ccxy8KAA^AXL61p4@b%Nh`V1>jyr+{)}RZ#5#(iNn7}aEK~QJ10f_zB k6v(zY7|9Xa!^L6SQV#G+>y#K*(XUjnD~R0Nq0*xc~qF diff --git a/1-0-java-basics/1-3-0-hello-generics/.DS_Store b/1-0-java-basics/1-3-0-hello-generics/.DS_Store index a769aea483c940f855bda71c09552975a92d9d7a..66469a926b44ba8ebe98e1164b732f56fc836994 100644 GIT binary patch delta 204 zcmZoMXfc=|#>B`mF;Q%yo+6MAu%0Zy*Z^eoNHS(mTozf+#!$kL$WX+P&XCGbl9O&2 zoSdIqzyJnP%0LQ5J~!XRB`GIA2`J7XyIpoyUHWlHOf@M4)f8mF>|q7jCJ*F;Q%yo+2a5!~knXmdQMfl8iNz)fgi;i!yy;-K@YQ#<-cCgP#Ma aaI+xOcjn3bB8H3%lWlmUH^+#qU * todo: refactor this class so it uses generic type "T" and run {@link com.bobocode.basics.BoxTest} to verify it */ -public class Box { - private Object value; +public class Box { + private T value; - public Box(Object value) { + public Box(T value) { this.value = value; } - public Object getValue() { + public T getValue() { return value; } - public void setValue(Object value) { + public void setValue(T value) { this.value = value; } } diff --git a/1-0-java-basics/1-3-1-crazy-generics/.DS_Store b/1-0-java-basics/1-3-1-crazy-generics/.DS_Store index 7c62c2dd5e9b6748aed3905aaf39e3de58177314..349608b84648c9c6bd763a3f0d79ac7d53eb5490 100644 GIT binary patch delta 210 zcmZoMXfc=|#>B`mF;Q%yo+6MAu%0Zy*Z^eoNHDGCpSUcf{s99JurZV{Br+5+q%)*4 zl;orv1}Ep|7Jwue7#{Kf2^9I5Cboctu9IL8j-*clD!#~m@%q!3h7kO8!Z3uX~x l!DdEA7Pigo9Q+(W7XvxpnJ4p$7;-QI&29kV%^o6qm;p~xF+uCJ*F;Q%yo+2a5!~knXmdQMf5=;jpC#x}rFn-u9$n=eMvjUSC<7Rda ceh#2opvZUT$^0UQj0}@)c%(PSh^$}+0M8T>^Z)<= diff --git a/1-0-java-basics/1-3-1-crazy-generics/src/main/java/com/bobocode/basics/CrazyGenerics.java b/1-0-java-basics/1-3-1-crazy-generics/src/main/java/com/bobocode/basics/CrazyGenerics.java index 751d5899f..b6e619734 100644 --- a/1-0-java-basics/1-3-1-crazy-generics/src/main/java/com/bobocode/basics/CrazyGenerics.java +++ b/1-0-java-basics/1-3-1-crazy-generics/src/main/java/com/bobocode/basics/CrazyGenerics.java @@ -5,231 +5,157 @@ import lombok.Data; import java.io.Serializable; -import java.util.Collection; -import java.util.Comparator; -import java.util.List; -import java.util.Objects; - -/** - * {@link CrazyGenerics} is an exercise class. It consists of classes, interfaces and methods that should be updated - * using generics. - *

- * TODO: go step by step from top to bottom. Read the java doc, write code and run CrazyGenericsTest to verify your impl - *

- * Hint: in some cases you will need to refactor the code, like replace {@link Object} with a generic type. In order - * cases you will need to add new fields, create new classes, or add new methods. Always try to read java doc and update - * the code according to it. - *

- * TODO: to get the most out of your learning, visit our website - *

- * - * @author Taras Boychuk - */ +import java.util.*; +import java.util.function.Predicate; public class CrazyGenerics { - /** - * {@link Sourced} is a container class that allows storing any object along with the source of that data. - * The value type can be specified by a type parameter "T". - * - * @param – value type - */ + @Data - public static class Sourced { // todo: refactor class to introduce type parameter and make value generic - private Object value; + public static class Sourced { + private T value; private String source; } - /** - * {@link Limited} is a container class that allows storing an actual value along with possible min and max values. - * It is special form of triple. All three values have a generic type that should be a subclass of {@link Number}. - * - * @param – actual, min and max type - */ @Data - public static class Limited { - // todo: refactor class to introduce type param bounded by number and make fields generic numbers - private final Object actual; - private final Object min; - private final Object max; + public static class Limited { + private final T actual; + private final T min; + private final T max; } - /** - * {@link Converter} interface declares a typical contract of a converter. It works with two independent generic types. - * It defines a convert method which accepts one parameter of one type and returns a converted result of another type. - * - * @param – source object type - * @param - converted result type - */ - public interface Converter { // todo: introduce type parameters - // todo: add convert method + public interface Converter { + R convert(T obj); } - /** - * {@link MaxHolder} is a container class that keeps track of the maximum value only. It works with comparable objects - * and allows you to put new values. Every time you put a value, it is stored only if the new value is greater - * than the current max. - * - * @param – value type - */ - public static class MaxHolder { // todo: refactor class to make it generic - private Object max; - - public MaxHolder(Object max) { + public static class MaxHolder> { + private T max; + + public MaxHolder(T max) { this.max = max; } - /** - * Puts a new value to the holder. A new value is stored to the max, only if it is greater than current max value. - * - * @param val a new value - */ - public void put(Object val) { - throw new ExerciseNotCompletedException(); // todo: update parameter and implement the method + public void put(T val) { + if (val == null) { + return; + } + if (this.max == null) { + this.max = val; + return; + } + if (val.compareTo(this.max) > 0) { + this.max = val; + } } - public Object getMax() { + public T getMax() { return max; } } - /** - * {@link StrictProcessor} defines a contract of a processor that can process only objects that are {@link Serializable} - * and {@link Comparable}. - * - * @param – the type of objects that can be processed - */ - interface StrictProcessor { // todo: make it generic - void process(Object obj); + interface StrictProcessor> { + void process(T obj); } - /** - * {@link CollectionRepository} defines a contract of a runtime store for entities based on any {@link Collection}. - * It has methods that allow to save new entity, and get whole collection. - * - * @param – a type of the entity that should be a subclass of {@link BaseEntity} - * @param – a type of any collection - */ - interface CollectionRepository { // todo: update interface according to the javadoc - void save(Object entity); - - Collection getEntityCollection(); + interface CollectionRepository> { + void save(T entity); + + C getEntityCollection(); } - /** - * {@link ListRepository} extends {@link CollectionRepository} but specifies the underlying collection as - * {@link java.util.List}. - * - * @param – a type of the entity that should be a subclass of {@link BaseEntity} - */ - interface ListRepository { // todo: update interface according to the javadoc + interface ListRepository extends CollectionRepository> { } - /** - * {@link ComparableCollection} is a {@link Collection} that can be compared by size. It extends a {@link Collection} - * interface and {@link Comparable} interface, and provides a default implementation of a compareTo method that - * compares collections sizes. - *

- * Please note that size does not depend on the elements type, so it is allowed to compare collections of different - * element types. - * - * @param a type of collection elements - */ - interface ComparableCollection { // todo: refactor it to make generic and provide a default impl of compareTo + interface ComparableCollection extends Collection, Comparable> { + @Override + default int compareTo(Collection o) { + return Integer.compare(this.size(), o.size()); + } } - /** - * {@link CollectionUtil} is an util class that provides various generic helper methods. - */ static class CollectionUtil { static final Comparator CREATED_ON_COMPARATOR = Comparator.comparing(BaseEntity::getCreatedOn); - /** - * An util method that allows to print a dashed list of elements - * - * @param list - */ - public static void print(List list) { - // todo: refactor it so the list of any type can be printed, not only integers + public static void print(List list) { list.forEach(element -> System.out.println(" – " + element)); } - /** - * Util method that check if provided collection has new entities. An entity is any object - * that extends {@link BaseEntity}. A new entity is an entity that does not have an id assigned. - * (In other word, which id value equals null). - * - * @param entities provided collection of entities - * @return true if at least one of the elements has null id - */ - public static boolean hasNewEntities(Collection entities) { - throw new ExerciseNotCompletedException(); // todo: refactor parameter and implement method + public static boolean hasNewEntities(Collection entities) { + if (entities == null) { + return false; + } + for (BaseEntity e : entities) { + if (e.getUuid() == null) { + return true; + } + } + return false; + } + + public static boolean isValidCollection(Collection entities, + Predicate validationPredicate) { + if (entities == null) { + return true; + } + for (BaseEntity e : entities) { + if (!validationPredicate.test(e)) { + return false; + } + } + return true; } - /** - * Util method that checks if a provided collection of entities is valid. An entity is any subclass of - * a {@link BaseEntity} A validation criteria can be different for different cases, so it is passed - * as second parameter. - * - * @param entities provided collection of entities - * @param validationPredicate criteria for validation - * @return true if all entities fit validation criteria - */ - public static boolean isValidCollection() { - throw new ExerciseNotCompletedException(); // todo: add method parameters and implement the logic + public static boolean hasDuplicates(List entities, T targetEntity) { + if (entities == null || targetEntity == null) { + return false; + } + int count = 0; + UUID targetUuid = targetEntity.getUuid(); + for (T e : entities) { + if (Objects.equals(e.getUuid(), targetUuid)) { + count++; + if (count > 1) { + return true; + } + } + } + return false; } - /** - * hasDuplicates is a generic util method checks if a list of entities contains target entity more than once. - * In other words, it checks if target entity has duplicates in the provided list. A duplicate is an entity that - * has the same UUID. - * - * @param entities given list of entities - * @param targetEntity a target entity - * @param entity type - * @return true if entities list contains target entity more than once - */ - public static boolean hasDuplicates() { - throw new ExerciseNotCompletedException(); // todo: update method signature and implement it + public static Optional findMax(Iterable elements, Comparator comparator) { + if (elements == null) { + return Optional.empty(); + } + Iterator it = elements.iterator(); + if (!it.hasNext()) { + return Optional.empty(); + } + T max = it.next(); + while (it.hasNext()) { + T element = it.next(); + if (comparator.compare(element, max) > 0) { + max = element; + } + } + return Optional.of(max); + } + + public static T findMostRecentlyCreatedEntity(Collection entities) { + return findMax(entities, (Comparator) CREATED_ON_COMPARATOR) + .orElseThrow(NoSuchElementException::new); } - /** - * findMax is a generic util method that accepts an {@link Iterable} and {@link Comparator} and returns an - * optional object, that has maximum "value" based on the given comparator. - * - * @param elements provided iterable of elements - * @param comparator an object that will be used to compare elements - * @param type of elements - * @return optional max value - */ - // todo: create a method and implement its logic manually without using util method from JDK - - /** - * findMostRecentlyCreatedEntity is a generic util method that accepts a collection of entities and returns the - * one that is the most recently created. If collection is empty, - * it throws {@link java.util.NoSuchElementException}. - *

- * This method reuses findMax method and passes entities along with prepare comparator instance, - * that is stored as constant CREATED_ON_COMPARATOR. - * - * @param entities provided collection of entities - * @param entity type - * @return an entity from the given collection that has the max createdOn value - */ - // todo: create a method according to JavaDoc and implement it using previous method - - /** - * An util method that allows to swap two elements of any list. It changes the list so the element with the index - * i will be located on index j, and the element with index j, will be located on the index i. - * Please note that in order to make it convenient and simple, it DOES NOT declare any type parameter. - * - * @param elements a list of any given type - * @param i index of the element to swap - * @param j index of the other element to swap - */ public static void swap(List elements, int i, int j) { Objects.checkIndex(i, elements.size()); Objects.checkIndex(j, elements.size()); - throw new ExerciseNotCompletedException(); // todo: complete method implementation + swapHelper(elements, i, j); + } + + + private static void swapHelper(List list, int i, int j) { + T tmp = list.get(i); + list.set(i, list.get(j)); + list.set(j, tmp); } } } +