From d2cdd6b949f7c640eb6d33dbe1ac66c4f0fc1739 Mon Sep 17 00:00:00 2001 From: MRyabchikov <110342451+MRyabchikov@users.noreply.github.com> Date: Thu, 29 Feb 2024 20:12:54 +0000 Subject: [PATCH 01/11] Task1 --- task_01/src/main.cpp | 19 ++++++++++++++++++- task_01/src/test.cpp | 31 ++++++++++++++++++++++++++++--- task_01/src/topology_sort.cpp | 1 - task_01/src/topology_sort.hpp | 1 - task_01/src/utils.cpp | 14 ++++++++++++++ task_01/src/utils.hpp | 7 +++++++ 6 files changed, 67 insertions(+), 6 deletions(-) delete mode 100644 task_01/src/topology_sort.cpp delete mode 100644 task_01/src/topology_sort.hpp create mode 100644 task_01/src/utils.cpp create mode 100644 task_01/src/utils.hpp diff --git a/task_01/src/main.cpp b/task_01/src/main.cpp index 0e4393ba..4c2428bc 100644 --- a/task_01/src/main.cpp +++ b/task_01/src/main.cpp @@ -1,3 +1,20 @@ #include +#include +#include "utils.hpp" -int main() { return 0; } +int main() { + int size; + std::cin >> size; + std::vector v(size); + for (int i = 0; i < v.size(); i++) + std::cin >> v[i]; + int targetSum; + std::cin >> targetSum; + std::pair ans = FindTargetSumInArray(v, targetSum); + if (ans.first != -1) + std::cout << ans.first << " " << ans.second; + else + std::cout << "Not found"; + + return 0; +} diff --git a/task_01/src/test.cpp b/task_01/src/test.cpp index ef5a86ae..22f8d29a 100644 --- a/task_01/src/test.cpp +++ b/task_01/src/test.cpp @@ -1,8 +1,33 @@ #include -#include "topology_sort.hpp" +#include +#include + +#include "utils.hpp" TEST(TopologySort, Simple) { - ASSERT_EQ(1, 1); // Stack [] -} + std::vector v1{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + ASSERT_EQ(FindTargetSumInArray(v1, 0), std::make_pair(-1, -1)); + ASSERT_EQ(FindTargetSumInArray(v1, 1), std::make_pair(0, 1)); + ASSERT_EQ(FindTargetSumInArray(v1, 9), std::make_pair(4, 5)); + ASSERT_EQ(FindTargetSumInArray(v1, 11), std::make_pair(1, 10)); + ASSERT_EQ(FindTargetSumInArray(v1, -5), std::make_pair(-1, -1)); + + std::vector v2{0}; + ASSERT_EQ(FindTargetSumInArray(v2, 0), std::make_pair(-1, -1)); + ASSERT_EQ(FindTargetSumInArray(v2, 47), std::make_pair(-1, -1)); + ASSERT_EQ(FindTargetSumInArray(v2, -47), std::make_pair(-1, -1)); + + std::vector v3{-11, -6, 0, 1, 2, 4, 10, 16}; + ASSERT_EQ(FindTargetSumInArray(v3, -6), std::make_pair(1, 2)); + ASSERT_EQ(FindTargetSumInArray(v3, -7), std::make_pair(0, 5)); + ASSERT_EQ(FindTargetSumInArray(v3, -8), std::make_pair(-1, -1)); + ASSERT_EQ(FindTargetSumInArray(v3, 5), std::make_pair(0, 7)); + ASSERT_EQ(FindTargetSumInArray(v3, 4), std::make_pair(1, 6)); + ASSERT_EQ(FindTargetSumInArray(v3, 10), std::make_pair(1, 7)); + ASSERT_EQ(FindTargetSumInArray(v3, -60), std::make_pair(-1, -1)); + ASSERT_EQ(FindTargetSumInArray(v3, -12), std::make_pair(-1, -1)); + ASSERT_EQ(FindTargetSumInArray(v3, 17), std::make_pair(-1, -1)); + ASSERT_EQ(FindTargetSumInArray(v3, 11), std::make_pair(3, 6)); +} \ No newline at end of file diff --git a/task_01/src/topology_sort.cpp b/task_01/src/topology_sort.cpp deleted file mode 100644 index e53f670c..00000000 --- a/task_01/src/topology_sort.cpp +++ /dev/null @@ -1 +0,0 @@ -#include "topology_sort.hpp" diff --git a/task_01/src/topology_sort.hpp b/task_01/src/topology_sort.hpp deleted file mode 100644 index 6f70f09b..00000000 --- a/task_01/src/topology_sort.hpp +++ /dev/null @@ -1 +0,0 @@ -#pragma once diff --git a/task_01/src/utils.cpp b/task_01/src/utils.cpp new file mode 100644 index 00000000..0f1278f6 --- /dev/null +++ b/task_01/src/utils.cpp @@ -0,0 +1,14 @@ +#include "utils.hpp" + +std::pair FindTargetSumInArray(std::vector v, int targetSum) { + int i = 0, j = v.size() - 1; + while (v[i] < v[j]) { + if (v[i] + v[j] > targetSum) + j--; + else if (v[i] + v[j] < targetSum) + i++; + else + return std::pair(i, j); + } + return std::pair(-1, -1); +} \ No newline at end of file diff --git a/task_01/src/utils.hpp b/task_01/src/utils.hpp new file mode 100644 index 00000000..927ab5a2 --- /dev/null +++ b/task_01/src/utils.hpp @@ -0,0 +1,7 @@ +#pragma once +#include +#include +// Returns pair of indices, which gives in sum target sum +// If target sun is not presented returns pair -1; -1 +// If we target sum presented in several ways returns i, j so that i is minimumal index and j is maximum index +std::pair FindTargetSumInArray(std::vector v, int targetSum); \ No newline at end of file From 1dac1407af757a164365a012e4d97ecb920e1cdc Mon Sep 17 00:00:00 2001 From: MRyabchikov <110342451+MRyabchikov@users.noreply.github.com> Date: Thu, 29 Feb 2024 20:34:16 +0000 Subject: [PATCH 02/11] Fux tests and clang --- task_01/src/main.cpp | 3 ++- task_01/src/test.cpp | 2 +- task_01/src/utils.hpp | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/task_01/src/main.cpp b/task_01/src/main.cpp index 4c2428bc..cc20e0b3 100644 --- a/task_01/src/main.cpp +++ b/task_01/src/main.cpp @@ -6,8 +6,9 @@ int main() { int size; std::cin >> size; std::vector v(size); - for (int i = 0; i < v.size(); i++) + for (int i = 0; i < v.size(); i++) { std::cin >> v[i]; + } int targetSum; std::cin >> targetSum; std::pair ans = FindTargetSumInArray(v, targetSum); diff --git a/task_01/src/test.cpp b/task_01/src/test.cpp index 22f8d29a..786b7d56 100644 --- a/task_01/src/test.cpp +++ b/task_01/src/test.cpp @@ -10,7 +10,7 @@ TEST(TopologySort, Simple) { std::vector v1{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; ASSERT_EQ(FindTargetSumInArray(v1, 0), std::make_pair(-1, -1)); ASSERT_EQ(FindTargetSumInArray(v1, 1), std::make_pair(0, 1)); - ASSERT_EQ(FindTargetSumInArray(v1, 9), std::make_pair(4, 5)); + ASSERT_EQ(FindTargetSumInArray(v1, 9), std::make_pair(0, 9)); ASSERT_EQ(FindTargetSumInArray(v1, 11), std::make_pair(1, 10)); ASSERT_EQ(FindTargetSumInArray(v1, -5), std::make_pair(-1, -1)); diff --git a/task_01/src/utils.hpp b/task_01/src/utils.hpp index 927ab5a2..894134ef 100644 --- a/task_01/src/utils.hpp +++ b/task_01/src/utils.hpp @@ -3,5 +3,6 @@ #include // Returns pair of indices, which gives in sum target sum // If target sun is not presented returns pair -1; -1 -// If we target sum presented in several ways returns i, j so that i is minimumal index and j is maximum index +// If we target sum presented in several ways returns i, j +// So that i is minimumal index and j is maximum index std::pair FindTargetSumInArray(std::vector v, int targetSum); \ No newline at end of file From 7b6bf9edf70c59b867b10163441f8538fbe661cd Mon Sep 17 00:00:00 2001 From: MRyabchikov <110342451+MRyabchikov@users.noreply.github.com> Date: Thu, 29 Feb 2024 20:46:00 +0000 Subject: [PATCH 03/11] Fix 2 --- task_01/src/main.cpp | 1 + task_01/src/test.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/task_01/src/main.cpp b/task_01/src/main.cpp index cc20e0b3..43690ca5 100644 --- a/task_01/src/main.cpp +++ b/task_01/src/main.cpp @@ -1,5 +1,6 @@ #include #include + #include "utils.hpp" int main() { diff --git a/task_01/src/test.cpp b/task_01/src/test.cpp index 786b7d56..985460eb 100644 --- a/task_01/src/test.cpp +++ b/task_01/src/test.cpp @@ -28,6 +28,6 @@ TEST(TopologySort, Simple) { ASSERT_EQ(FindTargetSumInArray(v3, 10), std::make_pair(1, 7)); ASSERT_EQ(FindTargetSumInArray(v3, -60), std::make_pair(-1, -1)); ASSERT_EQ(FindTargetSumInArray(v3, -12), std::make_pair(-1, -1)); - ASSERT_EQ(FindTargetSumInArray(v3, 17), std::make_pair(-1, -1)); + ASSERT_EQ(FindTargetSumInArray(v3, 47), std::make_pair(-1, -1)); ASSERT_EQ(FindTargetSumInArray(v3, 11), std::make_pair(3, 6)); } \ No newline at end of file From b131d111523040ff17febdbe73b8a3ee69c8faed Mon Sep 17 00:00:00 2001 From: MRyabchikov <110342451+MRyabchikov@users.noreply.github.com> Date: Mon, 11 Mar 2024 21:03:34 +0300 Subject: [PATCH 04/11] Add files via upload MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Амортизационный анализ --- ...70\321\202\320\274\320\276\320\262 (1).pdf" | Bin 0 -> 107926 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 "doc/\320\220\320\274\320\276\321\200\321\202\320\270\320\267\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\271 \320\260\320\275\320\260\320\273\320\270\320\267 \320\260\320\273\320\263\320\276\321\200\320\270\321\202\320\274\320\276\320\262 (1).pdf" diff --git "a/doc/\320\220\320\274\320\276\321\200\321\202\320\270\320\267\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\271 \320\260\320\275\320\260\320\273\320\270\320\267 \320\260\320\273\320\263\320\276\321\200\320\270\321\202\320\274\320\276\320\262 (1).pdf" "b/doc/\320\220\320\274\320\276\321\200\321\202\320\270\320\267\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\271 \320\260\320\275\320\260\320\273\320\270\320\267 \320\260\320\273\320\263\320\276\321\200\320\270\321\202\320\274\320\276\320\262 (1).pdf" new file mode 100644 index 0000000000000000000000000000000000000000..cfb5ccc5ea7b964e46107a0635393aca1c2d0a95 GIT binary patch literal 107926 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%0D185-FxVeF&)E^ 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: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 Wm0F@y_Y@_Miev-^2KEab1pfgut7}*Q literal 0 HcmV?d00001 From 8dd910af8ac1597eae972744239dbb70a9923018 Mon Sep 17 00:00:00 2001 From: MRyabchikov <110342451+MRyabchikov@users.noreply.github.com> Date: Mon, 11 Mar 2024 21:06:18 +0300 Subject: [PATCH 05/11] =?UTF-8?q?Rename=20=D0=90=D0=BC=D0=BE=D1=80=D1=82?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=BE=D0=BD=D0=BD=D1=8B=D0=B9=20?= =?UTF-8?q?=D0=B0=D0=BD=D0=B0=D0=BB=D0=B8=D0=B7=20=D0=B0=D0=BB=D0=B3=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D1=82=D0=BC=D0=BE=D0=B2=20(1).pdf=20to=20=D0=90?= =?UTF-8?q?=D0=BC=D0=BE=D1=80=D1=82=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=BE?= =?UTF-8?q?=D0=BD=D0=BD=D1=8B=D0=B9=20=D0=B0=D0=BD=D0=B0=D0=BB=D0=B8=D0=B7?= =?UTF-8?q?=20=D0=B0=D0=BB=D0=B3=D0=BE=D1=80=D0=B8=D1=82=D0=BC=D0=BE=D0=B2?= =?UTF-8?q?.pdf?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...200\320\270\321\202\320\274\320\276\320\262.pdf" | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename "doc/\320\220\320\274\320\276\321\200\321\202\320\270\320\267\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\271 \320\260\320\275\320\260\320\273\320\270\320\267 \320\260\320\273\320\263\320\276\321\200\320\270\321\202\320\274\320\276\320\262 (1).pdf" => "doc/\320\220\320\274\320\276\321\200\321\202\320\270\320\267\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\271 \320\260\320\275\320\260\320\273\320\270\320\267 \320\260\320\273\320\263\320\276\321\200\320\270\321\202\320\274\320\276\320\262.pdf" (100%) diff --git "a/doc/\320\220\320\274\320\276\321\200\321\202\320\270\320\267\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\271 \320\260\320\275\320\260\320\273\320\270\320\267 \320\260\320\273\320\263\320\276\321\200\320\270\321\202\320\274\320\276\320\262 (1).pdf" "b/doc/\320\220\320\274\320\276\321\200\321\202\320\270\320\267\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\271 \320\260\320\275\320\260\320\273\320\270\320\267 \320\260\320\273\320\263\320\276\321\200\320\270\321\202\320\274\320\276\320\262.pdf" similarity index 100% rename from "doc/\320\220\320\274\320\276\321\200\321\202\320\270\320\267\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\271 \320\260\320\275\320\260\320\273\320\270\320\267 \320\260\320\273\320\263\320\276\321\200\320\270\321\202\320\274\320\276\320\262 (1).pdf" rename to "doc/\320\220\320\274\320\276\321\200\321\202\320\270\320\267\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\271 \320\260\320\275\320\260\320\273\320\270\320\267 \320\260\320\273\320\263\320\276\321\200\320\270\321\202\320\274\320\276\320\262.pdf" From 7bf3712d773b332a553b0b9875a4f3016a0ca0f4 Mon Sep 17 00:00:00 2001 From: MRyabchikov <110342451+MRyabchikov@users.noreply.github.com> Date: Mon, 11 Mar 2024 21:07:36 +0300 Subject: [PATCH 06/11] =?UTF-8?q?Delete=20doc/=D0=90=D0=BC=D0=BE=D1=80?= =?UTF-8?q?=D1=82=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=BE=D0=BD=D0=BD=D1=8B?= =?UTF-8?q?=D0=B9=20=D0=B0=D0=BD=D0=B0=D0=BB=D0=B8=D0=B7=20=D0=B0=D0=BB?= =?UTF-8?q?=D0=B3=D0=BE=D1=80=D0=B8=D1=82=D0=BC=D0=BE=D0=B2.pdf?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\270\321\202\320\274\320\276\320\262.pdf" | Bin 107926 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 "doc/\320\220\320\274\320\276\321\200\321\202\320\270\320\267\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\271 \320\260\320\275\320\260\320\273\320\270\320\267 \320\260\320\273\320\263\320\276\321\200\320\270\321\202\320\274\320\276\320\262.pdf" diff --git "a/doc/\320\220\320\274\320\276\321\200\321\202\320\270\320\267\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\271 \320\260\320\275\320\260\320\273\320\270\320\267 \320\260\320\273\320\263\320\276\321\200\320\270\321\202\320\274\320\276\320\262.pdf" "b/doc/\320\220\320\274\320\276\321\200\321\202\320\270\320\267\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\271 \320\260\320\275\320\260\320\273\320\270\320\267 \320\260\320\273\320\263\320\276\321\200\320\270\321\202\320\274\320\276\320\262.pdf" deleted file mode 100644 index cfb5ccc5ea7b964e46107a0635393aca1c2d0a95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107926 zcmaI7byQSg7cWeSbV-Ypbax{SlF~?br=&0b`&WliQ(lpimrDSPapque1B;iIht}Q72}?qPTi4Os#gGHo9iTv+H8npaa+=`Aa-rz{wiY}Jkw(_>t?l!hq+-kON_TCP(d;&Z#UeJ1Zd)ivM zV!h3=wy==sLPFy}$H8g!XH<|m(!e52)WU+}laq%K;1DIpVv~EI=6`ixpmpLt*wl)| z_9!hTWk%h@m*&txYou~uz)#>z!n0%#hA9&?V@8>pX=|d`K!RZkbTZ@8zBmb0iSfM} zvR2Gw#38dSNQ*+Pq9sEZe*Axmcf!%-uK8$#f$;mmsgN1%29mP0iV*y(o?xKBz zO;=hU91=p~aMXN;!7Klon1PfrH2igN1}kS=$i|E(I{NBMbo32u92}FWTBNQGrUZXJ zoFklT>5TD&9|>5*CpLrDFYP8#>pzm?kmFE{A{nDdX8v2%|DO7P*H`#|OQ-AaVN1*X z`jwTFt+h86w~mjM_kW&IcD1wz>u2C-^Kbe11+chZ+B(`hc+>I=3t@4~xx2V~>UdaM z+tM0yE6d5rT6)>q(Eht3+NR)YIeL3(+Iq^lyL!00*}8etiu}K?4!@v~fXM&<`oN(| zDO3Zg_sc|as~u%?9eqK(-u$X>?1ZrslN1|r`IRW+U-l&Yq1|}4!HKE#w!jiYNkrv2 zr64ZH1}8EG(gt$RGU;S3uDdes*VW^#%l*&NHhTK{1?>$o^DX7c6cmXRnHSq*PYD-_ zXBblwB((AA_l{CDWszCxTEdjb7!hfIb_;t~iKtCeV8%T~u|yEnx87P-?wFqhRAxB~ z!iZE@{xAQ1U%NUme=yS0I=NkYxSumH4?L)9fvLACF{TiZNj+Roj0_Kd4%lafji9$H zUzUdvZKC+cuFo}REEVtDSxMFEP@GspZA4dZkiBM$BH8CwWUl zz8NHj@Xm+VEl6h9E$CwJ(FyuEw`s~OVWj50zuBYtyQ}0~nm?k<%~m+~359q`vrT{1 z_-yxPn7!st&ifxOamwfARJ04^*F%(A z^OKF`jFc1bs3k-SN#;6c`a7t~e8h*Uxqh!?4Z!?R;L9zq+Ff9%+%Llk?9cHP*Bd5Y zJQZ@uIP6(wMw#UZDJhy?$Bd0&=cFM*n0=ceW0T+6qOV=0J$C$NJr|{K8*;Nnx-*AX z|DLdrdw{Wc;w^oatFpzVuBE8~k0o{pV~A*0Dseub_z$LfF^(Ss62+`Q5kc8cE7;Gqf8KrE_KcF;LgY>pjzP^soAEXyYZK%Z^YA zS$2FsZ56@4vk}JK7%q&8rj8CKkJ6kl2=wXNd=5yNY9+aj_4rWi=i&npa7=|6wgmyVgj!v~M&C+mGrZini=_E)p`hYeOq#riQF2Lyr3oS;IRC<0u7*AdjL= z`rVeo`#(J{pEHb7!n=zONNPr;`<521WNGU(S#4se8LaV;n9jj;1V7C4w{0+&juA+fkceX1Jiv3@P#RR$vwC0w%&kUX< zp7bGAOlZC&=z4Dvi}pnilQeknHJtPjoFVp>n$OPbmK>)x`G=Ib0=ZV{e?Fdfu%|t; zrrIsj2)Oww9=m%QDLb_4QPC(zvXURz?ZZ|zD>qd?*+^b1`@S_WdE#a=Y_7`N&DEqK zF`z+Y?o-g+FK=2?OD1pIbvwbJ>k)JMWLGkTkPD2*R2E6{ta4gT?JPpq?(^1gPUSB` z=aHI3hJ$P?o`ZPrh-EkCAE-n1A4~F7A;~Qp`h@A&Ygy;WWGQ~w`3GMo^(9Byy4qt1 zGoCE{m|gGTdJHMScZk6W?`H5QLRu=-P(HpOD42|}P49kswH(Ai-%T+?WwIML7@#r! z{6k!nMw`tO{=$?{ zkLQOF`;efK-^rNpT1QqLO5B>tL+^x%;~NlH4BG_XF?U`bCGt12~B8I#qFX|wy3+(nv9L{>1)DWdlsM8%fMh$V#47_X* z^7h|--}?haYSS}7yb!ZezdADps&n*`^PtIPb}vw+{}asvD5-~EQun`h#KF zPDnj;Jfjrz-c6=}uXRej^V^HGtKm$CH704zM*JvMX{{;i|79C8?nwQl+SX|4{iLgC7ni^-fadi~02is#aP zoN~=6Q@Of(V-nHq=t-M=Ms z#aP#H9cu8D(g=)A|MH}P816P$1?gu%kDfF?3^uZ+^JuG{#^*Qmm|9JqYvmYp?Sz}` z{DykZ>)XaV%7+bGwor9@;U7gVyKyevaU7OY5n+@%ZcV?%4Y)UBZ$B|4rJNUFAVrrDY?U@I#G(5MX!eQ z1mdf57ueEa=j)PkPYT{}+2hOSwTe`A*qZB96)je9tA5iH@ODOM&_SLGI1rR2Q)AiI z91x`7iRIzhCHL|g@bV-%bLoyrA}A#gX`*h#)v}v6;;Ms)wE=4`O@g{7xiTbd4zgZZasEQox z)hg>gc77IWRKl;~GCHiNE2{qPX0PlLHH-u<_Uo)D%47%GpHQc%B2k|ZHE&6J74xn# zLD?9*a^&>%luj<LijCA_TMtGq9LwwR5DJD^SBN>{3(-BT3Wk@U5>#uyEv zlUXALhra)Nvptf|ZQ9n$y)2CS^Lya!vU?}g@0j{&3rcNOvZ_4`;T0sfW41~a5s)QU z{ka(Bi|V5*OwktC<>oiP`Z#L*m-PAf95N){}gX9x&nwH_K;S#oUhgrorzWS708N|j$@!JU=<((+>kZc^mJ#BPckJUBZo-4X)a~~5Q*{efS8KXmYf2|0 zQs(Qgk%2VzW^eAUPGVkuu|NGq^N_Jx`V2u2dAKlt@Yxhs$)I%R*o%jnae|^5-CID?F%>G2EP*P z?E5Uk?{5o{RCw69Asel?MtuV0%_i1M+p;EHREneRIbzqN{1Y%ONK*CAADV{~nvpcl zUoM-!2WWy!%*DEQiC}ll&P4-8d_Hg#cr#2t$KqKQdC!Mf2J5t ze(8fB^Gme<-ET69%gYlmE!qyI+;vEVl8T(-U`2fIIA3Az@C0)eA4E3 zd{k%fLoyv2bi2H!kt5Pwu6|~bwL=0Stkop*UoLw^0~3GyXZ;%aI|dTOeWlH|Sdda_ z?WHU2!Gqa{A+Cc`sXpijCWV!=t&1Vt1`Rs7=jGW=$s{Kz_Wqaj2*kkx_uu@wLgpKR z7E(LzSJTPRS~8;^<1n7(NfLxpJsGqGT#eex!V9_2NBKu zxmH74N7-ctzgk~cPfy0kv4N$_1^<~?Bj^tN_TypYdGAh@2jZW#`yPt-MkFm^WDO zBQu{(soyGVsuwdP>lhvxsY*WLue-TCS`iO8XX%*ZsNUMoyFX{{<*p%@53lRsaG?zY zWiR($>i)`_&3&m66METx{5^Tv>i5Sp0w*f0XQg_BXg(2SD}#I$pR8~{rr<2%P&nY*Q=2o_$<1D zK_4v8?Q+#9>3){l;LE=o)dfOcl2{ZBKqT$N_k||7wWgEac%VE?>?ADX@-?iF;=5X=ja<4G>jaFW0QUT z`c))=Gnh?>r3NcibIs@tF>mbpcDieBa+V#nq2`3@l^Okg=W)_}?pIlcQ^NQ*t86ZW4zElLZkZqUH+;_aLFY#2OJtT}j z#)KPsH;4)o13W^7Q+av5fz=07i`;1ui#tOq=st#oo%Rp7QkLtXkFa0d>=sG=-FpRy z^cRll2P$dBJ-ff<(eP84^RTPdRd5XzJn>s%7HAnV%V zDQ-A9qkpIO4Go|1>i>$kS$$!6bOy*LB`7xmhSnxlEN3npKYVjSSYjzq6J z<|?`Wb+V5Uky*m32~d(uZ=s72sF76DJ8j!*qOUL1*tvP3w!(wUlVdSNovG!wo#tJV~M&FF4aAi>yqv2PHE>AA+GVVaCHw-dY76c3=ZYY)VJt3h8q;ruPZu)>{iK`-+iw9gM)9?jAd{( z{sd5J6sNgD1#D~Xtya%%tY2RgVoAHXUJi19Md8MVD_pEVA(x;W7D4m+TdbVC#fZ$z zXqQ+`VCM88dJ$}e?o~5rK;~?!2K^#7q~hz>(b)m?PgBC$kaA{tU?UuY?WETjSd%V| zizRt~_3Ln{=?vEHx-8UhMU`rDI9VWfwlnq^kLsJtcAfz#M-bb~+Rvx#CFa9Ax-B^xpm#c&=E!BzB#GLJS{OhRViM8u3TC2t#! zmaEq<9NI@iKjpY9-03Ua>PwuB^7}73^V@k!7RAHFEql=X+kdnHfcC@eeaQjk(~aLW zsI(#KxQfRmqG1NtkrYt~PMQsk=gs{)WcRMb)HVD_CNw>!DW( z$!uY9uOv>;oPsMZSHHdaP(V>nhB7iw_$79WO5$y8gdNYHF(g!UoCI`i60kQ>dG%-T zvb=(!e_A^_I@Gg;{@z^7c!x2CF-De%nsmIKdRm$a%YJVY$i6w6;m=R!AIRQow#5u@ zl0O6=CJcJ?k%B`O@&0T~*c0pibcB0~wErUoD#Wcm+gc0Xf@6sz zXO^u$55;5m@8wz~G*`?gOTwS;YhRA2*Hx2$H11QOjMW2#(D9RU+&@U1eZHF`u2NKM zF&#O=PcwpUTY^4x#i2->M(7HSWZ}VLS7YG{Tkq45?|@2HL(0meo)tzM-u6cscZif2^iZ_w~G_IIGra8ma)#M zz7a7zZ0>)`BV7~*-v2!?A9y$0zxwy~@;M~+6N#8(_(Nb?|Ctu|>*lGViyr_l0F3`Z`0 ziKHIo$QS2%9toP7#fT0c`y1}rV#KnZo?ZYUONaN~ zbRW`E0ynyo+)ejoIe0sxwy36j#Z~$ly+kpU7iERV@v3Bb6or7$_w%)9Q)~vyDarN2;#*mKrF?jl7^`6Da~jsm zvwP#rXgX8u4tZ+F_F%P_vDmAk@SMv%R?L+SXlGp}vZ+zKOl}KMm$}DNP%}J0VB^vg zm+28QjL!YJ|9~N!9z2$X-e)E9TJZcaF;dumS>Ai6C!O_T*#LV1^_uB%1`x-=5{+@m z9(Y&iS8Y}w$O#a&73}@39a7OQ$Dkj?Jh?3rzzs$5?L*F!<)p%RlQudXpDw?uPmN0P z7@8yl;7sA8FR@1}?VXeiuL@Gr=ZBp)N%YY+ymt#sSxDr0K0tOGchT#y(p*37_}GtS zJ#tt2L@jAIngQ6~Kf2?&s60IF0;=5suT*Q<$NI$?WtgGE@*3e8O(o;&>I84vpRo93 zW2G=M$2m5>2T>==XrcsY!1Ob?tMO9oW z9FP%N-`k;>HLzHeM~lB-xBI6e_kC%2>c5j|Ps}XQrl&6+*?|x;Jf!k$@?2!+>Xtq< zqL0Qvlzy-X&?H+tXqMGgZ1KF^sWUL@^;-*MhWde#>wxEl()Dlj2s+Q>bc%-z2@!3*7|Zu_yy*DUm9IKeJF=n;Xr{2l{1t0s zsP6C1CX~!I=#)*{Yef2~sejKD{Mq3$>8^0n-;7=}NrwQ**RqBYbGrWf0R=Ixwfk@; z&3y0DShjE?^y45w)lSAWKvz9x3_R^WSyO_c#~o+!mEK!V2D)%b290@@B^Y$o8emIu zZ{SrJ+M-Ae!WenX?B^4O60f6)qjyL4Si_CC1KhX_Vl9rXk$d2A-vy7UB@rqo-vA{2 zED8C3wHf;`6wGVXfTUBZ7Bb<`VdefG{+Gvh1sXGeJC0%>G_pk?rUr}he-hw6s+$c9 zf9HF7aqx_j6+16@7qeB7$A?!t3=KLUTWm*#8Bu<>2-iA;apyaFmp(JJ8V=uLQ2`ei z!B}^pWY_8wW{rHvH!_tp=mnjY-LnQ^i7LY1o`OBA-h;y{jY^+>e0r?;d0sc+r)HqW zb_C>t2jW_|4hGyV6q}SIVTKV+2!S|WqglibS$q2n7q(n&DsEV&D*t2k*TAQs+ryR% zd9TT2wRgkmuYw5S3hEcI0}T^-X*t;z%B)&(yV00GyV5`EOnj3pp$6NQhybn6x=)~F z2z|6gZ6vj#$SmJK2|jEv*g@a%_Plw-47&4V ztMI6OLzc#yF~3n_%Aan{_}+HxZ@&pQsdX!T&EX94W+TxdXS^X*`e-A+R%MeA1Ka3% zjE~BE{Jj7f1d7ihXm{JVy^|jw7uwV~5CR?= z-bO$^J^aQjfV;A~va(oo_ycMFlN2a5k)Nxoy&4AAVYGJgA7cj`{#yYy5v#t=-STb%!*MtS0r#PDlZIf>SEBq0O zZ{FxYXp%Z^fjvC93P87c=X+C2hU0|~80Cz!$R^wR=q=R+BR}$fKC4lfP$&-lXb?47 zW!zG22Bqvjy#?kk_^j&pWa55D625R)Cck~N`x>69=+}fvs7(y9qrnf-Y&jHT;BKNE{d00nX&}NInbatCC*8CgZ9N1QOMArFhLAty$|- z4`QDdK-1dVD4Rl(-x|gcy{iSEOTx45;k{TqYQ(YJwM9l?5%M6BiksMvvoSKHmAS_KEB3a~)h+S&fqN;A#g}W{sTSic@No zQ?^aE6rIe2X-%23W2uY}w0mX7vWGn+AC4Z}ybLFCKGR+z9*F>{V*@FY>fJw37qpK3 z-FhJ26lj1L{aQ=Ik~;4RTr}f!o?%LF01$C?GqVNuR7%j_iv^cs{95}7>hT|$tTI6G zW9}sCbMX?&%6DfOX|_NAd_Kcj;JY!-{5H9Sr~^X`R&V(Oy#O zHeb;FJ9NVlR2I{|uX+^#wM50MsK;jwgh{M9hNG(r_Fc_=(beJlqngfTT5l80)hG~r z$2v<;+s(D2L&b0H-d241o`#TGjKX?lBNbM$mHP2xezNQ;tAET}mQWe$zP&086q$qa zcm6M~x1OZ3(1kw=YvlM5Gnb!fEJVEA&E!c^EyFv;vc*ECCpTX6g5`1;RPYqLz;eP> zdE7wBVn)kq0Q(~Ga;O9uRxWL!-Ul44+&;EVL~GbiiTT@&@Tg45Pc27PpdpX#|D0fO zRdRjZ`CjsT1|CyFg#`Qws*8dHCgM z=*!quEZQ$>q$(XfH6Q69=evN+YGz*St0Oysy2TQ(Q8tb3OUHmT>7Jh<*`7>G&azpA z>f`Qa%&%-}ChAY1<=4-zSP{KO&OOg^=%&XD8H*3quNAgqU!lYuQXpw%!}{gbpzxLN`6V$UsCVA zcNtC&;+Mwrq$UPm29#ppXjyWbdzIV)y^^Rn^aoYy_#Xu%Wotp3WvfF_du0E_yjS+g zg7M)emq|^mgHrCjVVF{}?ZtyA}lK>PslBqC0-XOa{IJWEs#t7>(%cE07#IVo5nep);lG zAE55vuS+YsWksiqha(0#gg1b*@q<`JQ%A`cn{;ALR>?_%Mb5jwY8&h)NFk4L$Ss_h;kLSr z3cB=5cGL`SrQXmkVsrSVQZ1{8dz@LQSVl~gFV?2h1#h)h7h<`%0D185-FxVeF&)E^ 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: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 Wm0F@y_Y@_Miev-^2KEab1pfgut7}*Q From 8d5137e1702f8e5bf4178134ef66083ed3861efa Mon Sep 17 00:00:00 2001 From: MRyabchikov <110342451+MRyabchikov@users.noreply.github.com> Date: Tue, 11 Jun 2024 12:24:04 +0000 Subject: [PATCH 07/11] Task2 --- task_02/src/main.cpp | 4 ++ task_02/src/stack.cpp | 21 ---------- task_02/src/stack.hpp | 94 +++++++++++++++++++++++++++++++++++++++---- task_02/src/test.cpp | 60 +++++++++++++-------------- 4 files changed, 121 insertions(+), 58 deletions(-) delete mode 100644 task_02/src/stack.cpp diff --git a/task_02/src/main.cpp b/task_02/src/main.cpp index 0e4393ba..0db7939b 100644 --- a/task_02/src/main.cpp +++ b/task_02/src/main.cpp @@ -1,3 +1,7 @@ #include +#include "stack.hpp" + +using namespace std; + int main() { return 0; } diff --git a/task_02/src/stack.cpp b/task_02/src/stack.cpp deleted file mode 100644 index 8ca89902..00000000 --- a/task_02/src/stack.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include "stack.hpp" - -#include - -void Stack::Push(int value) { data_.push(value); } - -int Stack::Pop() { - auto result = data_.top(); - data_.pop(); - return result; -} - -void MinStack::Push(int value) { data_.push_back(value); } - -int MinStack::Pop() { - auto result = data_.back(); - data_.pop_back(); - return result; -} - -int MinStack::GetMin() { return *std::min_element(data_.begin(), data_.end()); } \ No newline at end of file diff --git a/task_02/src/stack.hpp b/task_02/src/stack.hpp index 138ec40f..6a939a8b 100644 --- a/task_02/src/stack.hpp +++ b/task_02/src/stack.hpp @@ -1,23 +1,103 @@ #pragma once +#include +#include #include +#include +#include #include +template +class StackNode { + public: + explicit StackNode(T _data, StackNode *_prev = nullptr) + : data(_data), prevptr(_prev) {} + StackNode() : data(), prevptr(nullptr) {} + T data; + StackNode *prevptr; +}; + +template class Stack { public: - void Push(int value); - int Pop(); + Stack() : top(nullptr), size(0) {} + void push(T value); + T pop(); + T getTop(); + int getSize(); private: - std::stack data_; + StackNode *top; + int size; }; +template +void Stack::push(T value) { + StackNode *newElem = new StackNode(value, top); + size++; + top = newElem; +} + +template +T Stack::pop() { + if (size == 0) { + throw std::out_of_range("Empty stack"); + } + T returningValue = top->data; + StackNode *oldTop = top; + top = top->prevptr; + delete oldTop; + size--; + return returningValue; +} + +template +int Stack::getSize() { + return size; +} + +template +T Stack::getTop() { + if (size == 0) { + throw std::out_of_range("Empty stack"); + } + return top->data; +} +template class MinStack { public: - void Push(int value); - int Pop(); - int GetMin(); + MinStack() : mainStack(), minStack() {} + void push(T value); + T pop(); + T getMin(); + int getSize(); private: - std::vector data_; + Stack mainStack; + Stack minStack; }; + +template +void MinStack::push(T value) { + mainStack.push(value); + if (minStack.getSize() == 0) + minStack.push(value); + else + minStack.push(std::min(value, minStack.getTop())); +} + +template +T MinStack::pop() { + minStack.pop(); + return mainStack.pop(); +} + +template +T MinStack::getMin() { + return minStack.getTop(); +} + +template +int MinStack::getSize() { + return mainStack.getSize(); +} diff --git a/task_02/src/test.cpp b/task_02/src/test.cpp index 54e7ce90..03f20441 100644 --- a/task_02/src/test.cpp +++ b/task_02/src/test.cpp @@ -6,37 +6,37 @@ #include "stack.hpp" TEST(StackTest, Simple) { - Stack stack; - stack.Push(1); // Stack [1] - ASSERT_EQ(stack.Pop(), 1); // Stack [] - stack.Push(1); // Stack [1] - stack.Push(2); // Stack [1, 2] - ASSERT_EQ(stack.Pop(), 2); // Stack [1] - ASSERT_EQ(stack.Pop(), 1); // Stack [] - stack.Push(1); // Stack [1] - stack.Push(2); // Stack [1, 2] - ASSERT_EQ(stack.Pop(), 2); // Stack [1] - stack.Push(3); // Stack [1, 3] - ASSERT_EQ(stack.Pop(), 3); // Stack [1] - ASSERT_EQ(stack.Pop(), 1); // Stack [] + Stack stack; + stack.push(1); // Stack [1] + ASSERT_EQ(stack.pop(), 1); // Stack [] + stack.push(1); // Stack [1] + stack.push(2); // Stack [1, 2] + ASSERT_EQ(stack.pop(), 2); // Stack [1] + ASSERT_EQ(stack.pop(), 1); // Stack [] + stack.push(1); // Stack [1] + stack.push(2); // Stack [1, 2] + ASSERT_EQ(stack.pop(), 2); // Stack [1] + stack.push(3); // Stack [1, 3] + ASSERT_EQ(stack.pop(), 3); // Stack [1] + ASSERT_EQ(stack.pop(), 1); // Stack [] } TEST(MinStackTest, Simple) { - MinStack stack; - stack.Push(1); // Stack [1] - ASSERT_EQ(stack.GetMin(), 1); - ASSERT_EQ(stack.Pop(), 1); // Stack [] - stack.Push(1); // Stack [1] - stack.Push(2); // Stack [1, 2] - ASSERT_EQ(stack.GetMin(), 1); - ASSERT_EQ(stack.Pop(), 2); // Stack [1] - ASSERT_EQ(stack.Pop(), 1); // Stack [] - stack.Push(1); // Stack [1] - stack.Push(2); // Stack [1, 2] - ASSERT_EQ(stack.GetMin(), 1); - ASSERT_EQ(stack.Pop(), 2); // Stack [1] - stack.Push(3); // Stack [1, 3] - ASSERT_EQ(stack.GetMin(), 1); - ASSERT_EQ(stack.Pop(), 3); // Stack [1] - ASSERT_EQ(stack.Pop(), 1); // Stack [] + MinStack stack; + stack.push(1); // Stack [1] + ASSERT_EQ(stack.getMin(), 1); + ASSERT_EQ(stack.pop(), 1); // Stack [] + stack.push(1); // Stack [1] + stack.push(2); // Stack [1, 2] + ASSERT_EQ(stack.getMin(), 1); + ASSERT_EQ(stack.pop(), 2); // Stack [1] + ASSERT_EQ(stack.pop(), 1); // Stack [] + stack.push(1); // Stack [1] + stack.push(2); // Stack [1, 2] + ASSERT_EQ(stack.getMin(), 1); + ASSERT_EQ(stack.pop(), 2); // Stack [1] + stack.push(3); // Stack [1, 3] + ASSERT_EQ(stack.getMin(), 1); + ASSERT_EQ(stack.pop(), 3); // Stack [1] + ASSERT_EQ(stack.pop(), 1); // Stack [] } \ No newline at end of file From 50af8f01ea42c30dd4ed926f674862de2262ae66 Mon Sep 17 00:00:00 2001 From: MRyabchikov <110342451+MRyabchikov@users.noreply.github.com> Date: Wed, 12 Jun 2024 00:36:21 +0000 Subject: [PATCH 08/11] tasks 3-9 --- task_02/src/stack.hpp | 4 +- task_03/README.md | 3 +- task_03/src/WeatherReport.cpp | 20 ++++++ task_03/src/WeatherReport.h | 4 ++ task_03/src/main.cpp | 1 + task_03/src/test.cpp | 17 +++-- task_03/src/topology_sort.cpp | 1 - task_03/src/topology_sort.hpp | 1 - task_04/src/heap.hpp | 82 +++++++++++++++++++++ task_04/src/test.cpp | 47 +++++++++++- task_05/src/quickSort.hpp | 26 +++++++ task_05/src/test.cpp | 20 +++++- task_06/src/nStatistics.hpp | 34 +++++++++ task_06/src/test.cpp | 18 ++++- task_07/src/BinaryTree.hpp | 131 ++++++++++++++++++++++++++++++++++ task_07/src/test.cpp | 18 ++++- task_08/src/HashTable.hpp | 86 ++++++++++++++++++++++ task_08/src/test.cpp | 34 ++++++++- task_09/src/MinCoins.hpp | 18 +++++ task_09/src/test.cpp | 16 ++++- 20 files changed, 561 insertions(+), 20 deletions(-) create mode 100644 task_03/src/WeatherReport.cpp create mode 100644 task_03/src/WeatherReport.h delete mode 100644 task_03/src/topology_sort.cpp delete mode 100644 task_03/src/topology_sort.hpp create mode 100644 task_04/src/heap.hpp create mode 100644 task_05/src/quickSort.hpp create mode 100644 task_06/src/nStatistics.hpp create mode 100644 task_07/src/BinaryTree.hpp create mode 100644 task_08/src/HashTable.hpp create mode 100644 task_09/src/MinCoins.hpp diff --git a/task_02/src/stack.hpp b/task_02/src/stack.hpp index 6a939a8b..ed715167 100644 --- a/task_02/src/stack.hpp +++ b/task_02/src/stack.hpp @@ -41,7 +41,7 @@ void Stack::push(T value) { template T Stack::pop() { if (size == 0) { - throw std::out_of_range("Empty stack"); + throw std::underflow_error("Empty stack"); } T returningValue = top->data; StackNode *oldTop = top; @@ -59,7 +59,7 @@ int Stack::getSize() { template T Stack::getTop() { if (size == 0) { - throw std::out_of_range("Empty stack"); + throw std::underflow_error("Empty stack"); } return top->data; } diff --git a/task_03/README.md b/task_03/README.md index 0819a478..9dad9b69 100644 --- a/task_03/README.md +++ b/task_03/README.md @@ -1,3 +1,4 @@ # Задача на количество дней перед потеплением -Написать функцию в которую передается темепература за каждый день в определенный момент день, нужно вернуть количество дней до повышения температуры для каждого дня, если температура не повысится, то для этого дня поставить в результирующий массив 0. +Написать функцию в которую передается темепература за каждый день в определенный момент дня. Вернуть количество дней до повышения температуры для каждого дня. Если температура не повысится, для этого дня поставить в результирующий массив 0. + diff --git a/task_03/src/WeatherReport.cpp b/task_03/src/WeatherReport.cpp new file mode 100644 index 00000000..60252411 --- /dev/null +++ b/task_03/src/WeatherReport.cpp @@ -0,0 +1,20 @@ +#include "WeatherReport.h" + +#include +#include + +std::vector findNextGreater(std::vector v) { + std::vector res(v.size(), -1); + std::stack stack; + + for (int i = v.size() - 1; i >= 0; i--) { + while (stack.size() != 0 && v[i] >= v[stack.top()]) { + stack.pop(); + } + if (stack.size() == 0) { + res[i] = stack.top() - i; + } + stack.push(i); + } + return res; +} \ No newline at end of file diff --git a/task_03/src/WeatherReport.h b/task_03/src/WeatherReport.h new file mode 100644 index 00000000..5923acf9 --- /dev/null +++ b/task_03/src/WeatherReport.h @@ -0,0 +1,4 @@ +#include +#include + +std::vector findNextGreater(std::vector v); \ No newline at end of file diff --git a/task_03/src/main.cpp b/task_03/src/main.cpp index 0e4393ba..f63b146c 100644 --- a/task_03/src/main.cpp +++ b/task_03/src/main.cpp @@ -1,3 +1,4 @@ #include +#include "WeatherReport.h" int main() { return 0; } diff --git a/task_03/src/test.cpp b/task_03/src/test.cpp index ef5a86ae..61e30ab4 100644 --- a/task_03/src/test.cpp +++ b/task_03/src/test.cpp @@ -1,8 +1,17 @@ #include -#include "topology_sort.hpp" +#include "WeatherReport.h" -TEST(TopologySort, Simple) { - ASSERT_EQ(1, 1); // Stack [] -} +TEST(findNextGreater, Simple) { + ASSERT_EQ(findNextGreater(std::vector{1}), (std::vector{-1})); + ASSERT_EQ(findNextGreater(std::vector{}), (std::vector{})); + ASSERT_EQ(findNextGreater(std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}), + (std::vector{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1})); + ASSERT_EQ( + findNextGreater(std::vector{16, 19, 10, 14, 22, 27, 12, 10, 16, 24}), + (std::vector{{1, 3, 1, 1, 1, -1, 2, 1, 1, -1}})); + ASSERT_EQ(findNextGreater( + std::vector{-29, 0, -7, -14, 0, -11, -13, -3, -27, -25}), + (std::vector{{1, -1, 2, 1, -1, 2, 1, -1, 1, -1}})); +} \ No newline at end of file diff --git a/task_03/src/topology_sort.cpp b/task_03/src/topology_sort.cpp deleted file mode 100644 index e53f670c..00000000 --- a/task_03/src/topology_sort.cpp +++ /dev/null @@ -1 +0,0 @@ -#include "topology_sort.hpp" diff --git a/task_03/src/topology_sort.hpp b/task_03/src/topology_sort.hpp deleted file mode 100644 index 6f70f09b..00000000 --- a/task_03/src/topology_sort.hpp +++ /dev/null @@ -1 +0,0 @@ -#pragma once diff --git a/task_04/src/heap.hpp b/task_04/src/heap.hpp new file mode 100644 index 00000000..c058e909 --- /dev/null +++ b/task_04/src/heap.hpp @@ -0,0 +1,82 @@ +#include +#include +#include +#include + +template +class BinaryHeap { + public: + BinaryHeap() : data() {} + BinaryHeap(std::initializer_list _data) : data(_data) { + for (int i = data.size() - 1; i >= 0; i--) heapify(i); + } + void insert(T newElem); + + int extractMin(); + + void decreaseKey(int i, T newKey); + + private: + std::vector data; + int getParentIdx(int i) { return (i - 1) / 2; } + int getLefrChildIdx(int i) { return 2 * i + 1; } + int getRightChildIdx(int i) { return 2 * i + 2; } + + void heapify(int i); +}; + +template +void BinaryHeap::insert(T newElem) { + data.push_back(newElem); + int i = data.size() - 1; + while (i != 0 && data[getParentIdx(i)] > data[i]) { + std::swap(data[i], data[getParentIdx(i)]); + i = getParentIdx(i); + } +} + +template +void BinaryHeap::decreaseKey(int i, T newKey) { + if (newKey > data[i]) { + throw std::logic_error("New element is greater"); + } + data[i] = newKey; + while (i != 0 && data[getParentIdx(i)] > data[i]) { + swap(data[i], data[getParentIdx(i)]); + i = getParentIdx(i); + } +} + +template +int BinaryHeap::extractMin() { + if (data.size() == 0) { + throw std::underflow_error("Heap is empty"); + } + if (data.size() == 1) { + T returningValue = data[0]; + data.pop_back(); + return returningValue; + } + int root = data[0]; + data[0] = data[data.size() - 1]; + data.pop_back(); + heapify(0); + return root; +} + +template +void BinaryHeap::heapify(int i) { + int l = getLefrChildIdx(i); + int r = getRightChildIdx(i); + int smallest = i; + if (l < data.size() && data[l] < data[i]) { + smallest = l; + } + if (r < data.size() && data[r] < data[smallest]) { + smallest = r; + } + if (smallest != i) { + std::swap(data[i], data[smallest]); + heapify(smallest); + } +} \ No newline at end of file diff --git a/task_04/src/test.cpp b/task_04/src/test.cpp index 5e11617e..4fa2643d 100644 --- a/task_04/src/test.cpp +++ b/task_04/src/test.cpp @@ -1,6 +1,49 @@ #include -TEST(TopologySort, Simple) { - ASSERT_EQ(1, 1); // Stack [] +#include +#include + +TEST(BinaryHeap, Simple) { + BinaryHeap heap; + heap.insert(37); + heap.insert(212); + heap.insert(0); + ASSERT_EQ(heap.extractMin(), 0); + ASSERT_EQ(heap.extractMin(), 37); + ASSERT_EQ(heap.extractMin(), 212); + heap.insert(34); + ASSERT_EQ(heap.extractMin(), 34); + heap.insert(201); + heap.insert(0); + heap.insert(16); + ASSERT_EQ(heap.extractMin(), 0); + heap.insert(345); + ASSERT_EQ(heap.extractMin(), 16); + ASSERT_EQ(heap.extractMin(), 201); + ASSERT_EQ(heap.extractMin(), 345); +} + +TEST(BinaryHeap, Vectors) { + BinaryHeap heap{98, 29, 4, 92, 48, 35, 11, 41, 84, 49}; + ASSERT_EQ(heap.extractMin(), 4); + ASSERT_EQ(heap.extractMin(), 11); + ASSERT_EQ(heap.extractMin(), 29); + ASSERT_EQ(heap.extractMin(), 35); + ASSERT_EQ(heap.extractMin(), 41); + ASSERT_EQ(heap.extractMin(), 48); + ASSERT_EQ(heap.extractMin(), 49); + ASSERT_EQ(heap.extractMin(), 84); + ASSERT_EQ(heap.extractMin(), 92); + ASSERT_EQ(heap.extractMin(), 98); +} + +TEST(BinaryHeap, Exceptions) { + BinaryHeap heap; + ASSERT_THROW(heap.extractMin(), std::underflow_error); + heap.insert(12); + heap.insert(13); + ASSERT_EQ(heap.extractMin(), 12); + ASSERT_EQ(heap.extractMin(), 13); + ASSERT_THROW(heap.extractMin(), std::underflow_error); } diff --git a/task_05/src/quickSort.hpp b/task_05/src/quickSort.hpp new file mode 100644 index 00000000..650c0c4e --- /dev/null +++ b/task_05/src/quickSort.hpp @@ -0,0 +1,26 @@ +#include + +template +int partition(std::vector& v, int low, int high) { + int pivot = v[high]; + int i = low - 1; + + for (int j = low; j <= high - 1; j++) { + if (v[j] <= pivot) { + i++; + std::swap(v[i], v[j]); + } + } + std::swap(v[i + 1], v[high]); + return (i + 1); +} + +template +void quickSort(std::vector& v, int low = 0, int high = -1) { + if (high == -1) high = v.size() - 1; + if (low < high) { + int partitionIdx = partition(v, low, high); + quickSort(v, low, partitionIdx - 1); + quickSort(v, partitionIdx + 1, high); + } +} \ No newline at end of file diff --git a/task_05/src/test.cpp b/task_05/src/test.cpp index 5e11617e..2897163a 100644 --- a/task_05/src/test.cpp +++ b/task_05/src/test.cpp @@ -1,6 +1,22 @@ #include -TEST(TopologySort, Simple) { - ASSERT_EQ(1, 1); // Stack [] +#include + +#include "quickSort.hpp" + +TEST(quickSort, Simple) { + std::vector data = {1, 2, 3, 4, 5}; + quickSort(data); + for (auto curr : data) std::cout << curr << " "; + ASSERT_EQ(data, (std::vector{1, 2, 3, 4, 5})); + data = (std::vector{5, 4, 3, 2, 1}); + quickSort(data); + ASSERT_EQ(data, (std::vector{1, 2, 3, 4, 5})); + data = (std::vector{3, 4, 2, 1, 5}); + quickSort(data); + ASSERT_EQ(data, (std::vector{1, 2, 3, 4, 5})); + data = (std::vector{1, 1, 8, 1, 2, 2, 9, 6, 4, 3}); + quickSort(data); + ASSERT_EQ(data, (std::vector{1, 1, 1, 2, 2, 3, 4, 6, 8, 9})); } diff --git a/task_06/src/nStatistics.hpp b/task_06/src/nStatistics.hpp new file mode 100644 index 00000000..c841bddd --- /dev/null +++ b/task_06/src/nStatistics.hpp @@ -0,0 +1,34 @@ +#include + +template +int partition(std::vector& v, int low, int high) { + int pivot = v[high]; + int i = low - 1; + + for (int j = low; j <= high - 1; j++) { + if (v[j] <= pivot) { + i++; + std::swap(v[i], v[j]); + } + } + std::swap(v[i + 1], v[high]); + return (i + 1); +} + +template +int findNthStatistic(std::vector v, int n) { + int low = 0; + int high = v.size() - 1; + + while (low <= high) { + int partitionIdx = partition(v, low, high); + if (partitionIdx == n) { + return v[partitionIdx]; + } else if (partitionIdx >= n) { + high = partitionIdx - 1; + } else + low = partitionIdx + 1; + } + + return -1; +} \ No newline at end of file diff --git a/task_06/src/test.cpp b/task_06/src/test.cpp index 5e11617e..2f51eea0 100644 --- a/task_06/src/test.cpp +++ b/task_06/src/test.cpp @@ -1,6 +1,20 @@ #include -TEST(TopologySort, Simple) { - ASSERT_EQ(1, 1); // Stack [] +#include "nStatistics.hpp" + +TEST(NStatistic, Simple) { + std::vector v1 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; + for (int i = 0; i < v1.size(); i++) { + ASSERT_EQ(findNthStatistic(v1, i), i); + } + std::vector v2 = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0}; + for (int i = 0; i < v2.size(); i++) { + ASSERT_EQ(findNthStatistic(v2, i), i); + } + std::vector v3 = {-1, 7, 1, 9, 2, 0, -3, 10, -7, 3}; + std::vector ans = {-7, -3, -1, 0, 1, 2, 3, 7, 9, 10}; + for (int i = 0; i < v3.size(); i++) { + ASSERT_EQ(findNthStatistic(v3, i), ans[i]); + } } diff --git a/task_07/src/BinaryTree.hpp b/task_07/src/BinaryTree.hpp new file mode 100644 index 00000000..0217912a --- /dev/null +++ b/task_07/src/BinaryTree.hpp @@ -0,0 +1,131 @@ +#include +#include + +template +struct Node { + Node(T value) : data(value), leftptr(nullptr), rightptr(nullptr) {} + T data; + Node* leftptr; + Node* rightptr; +}; + +template +class BinaryTree { + public: + BinaryTree() : root(nullptr) {} + ~BinaryTree() { destroyTree(root); } + + void insert(int value) { root = insertRecursive(root, value); } + + bool search(int value) { return searchRecursive(root, value); } + + std::vector inorderTraversal(); + std::vector preorderTraversal(); + std::vector postorderTraversal(); + + private: + Node* root; + Node* insertRecursive(Node* node, int value); + bool searchRecursive(Node* node, int value); + void inorderTraversalRecursive(Node* node, std::vector& ans); + void preorderTraversalRecursive(Node* node, std::vector& ans); + void postorderTraversalRecursive(Node* node, std::vector& ans); + void destroyTree(Node* node); +}; + +template +std::vector BinaryTree::inorderTraversal() { + std::vector ans; + inorderTraversalRecursive(root, ans); + return ans; +} + +template +std::vector BinaryTree::preorderTraversal() { + std::vector ans; + preorderTraversalRecursive(root, ans); + return ans; +} + +template +std::vector BinaryTree::postorderTraversal() { + std::vector ans; + postorderTraversalRecursive(root, ans); + return ans; +} + +template +void BinaryTree::inorderTraversalRecursive(Node* node, + std::vector& ans) { + if (node == nullptr) { + return; + } + inorderTraversalRecursive(node->leftptr, ans); + ans.push_back(node->data); + inorderTraversalRecursive(node->rightptr, ans); +} + +template +void BinaryTree::preorderTraversalRecursive(Node* node, + std::vector& ans) { + if (node == nullptr) { + return; + } + ans.push_back(node->data); + preorderTraversalRecursive(node->leftptr, ans); + preorderTraversalRecursive(node->rightptr, ans); +} + +template +void BinaryTree::postorderTraversalRecursive(Node* node, + std::vector& ans) { + if (node == nullptr) { + return; + } + postorderTraversalRecursive(node->leftptr, ans); + postorderTraversalRecursive(node->rightptr, ans); + ans.push_back(node->data); +} + +template +bool BinaryTree::searchRecursive(Node* node, int value) { + if (node == nullptr) { + return false; + } + + if (value == node->data) { + return true; + } + + if (value < node->data) { + return searchRecursive(node->leftptr, value); + } else { + return searchRecursive(node->rightptr, value); + } +} + +template +Node* BinaryTree::insertRecursive(Node* node, int value) { + if (node == nullptr) { + return new Node(value); + } + + if (value < node->data) { + node->leftptr = insertRecursive(node->leftptr, value); + } else if (value > node->data) { + node->rightptr = insertRecursive(node->rightptr, value); + } + + return node; +} + +template +void BinaryTree::destroyTree(Node* node) { + if (node == nullptr) { + return; + } + + destroyTree(node->leftptr); + destroyTree(node->rightptr); + delete node; +} \ No newline at end of file diff --git a/task_07/src/test.cpp b/task_07/src/test.cpp index 5e11617e..98eb0c6c 100644 --- a/task_07/src/test.cpp +++ b/task_07/src/test.cpp @@ -1,6 +1,20 @@ #include -TEST(TopologySort, Simple) { - ASSERT_EQ(1, 1); // Stack [] +#include "BinaryTree.hpp" + +TEST(BinaryTree, Total) { + BinaryTree tree; + std::vector data = {35, 38, 12, -30, 25, 22, -12, -21, 30, -13, 40}; + for (int i = 0; i < data.size(); i++) tree.insert(data[i]); + for (int i = -40; i <= 40; i++) { + bool ans = std::find(data.begin(), data.end(), i) != data.end(); + ASSERT_EQ(tree.search(i), ans); + } + std::vector ansIn = {-30, -21, -13, -12, 12, 22, 25, 30, 35, 38, 40}; + std::vector ansPre = {35, 12, -30, -12, -21, -13, 25, 22, 30, 38, 40}; + std::vector ansPost = {-13, -21, -12, -30, 22, 30, 25, 12, 40, 38, 35}; + ASSERT_EQ(tree.inorderTraversal(), ansIn); + ASSERT_EQ(tree.preorderTraversal(), ansPre); + ASSERT_EQ(tree.postorderTraversal(), ansPost); } diff --git a/task_08/src/HashTable.hpp b/task_08/src/HashTable.hpp new file mode 100644 index 00000000..cfc4315c --- /dev/null +++ b/task_08/src/HashTable.hpp @@ -0,0 +1,86 @@ +#include +#include +#include +#include + +template +class HashTable { + public: + HashTable(size_t size = 10) : table(size), load_factor(0.0) {} + + void insert(const Key& key, const Value& value); + + bool search(const Key& key); + + bool erase(const Key& key); + + size_t size() const; + + private: + void rehash(); + std::vector>> table; + std::hash hash; + double load_factor; +}; + +template +void HashTable::insert(const Key& key, const Value& value) { + if (load_factor >= 0.75) { + rehash(); + } + size_t index = hash(key) % table.size(); + for (auto& pair : table[index]) { + if (pair.first == key) { + pair.second = value; + return; + } + } + table[index].emplace_back(key, value); + load_factor = static_cast(size()) / table.size(); +} + +template +bool HashTable::search(const Key& key) { + size_t index = hash(key) % table.size(); + for (const auto& pair : table[index]) { + if (pair.first == key) { + return true; + } + } + return false; +} + +template +bool HashTable::erase(const Key& key) { + size_t index = hash(key) % table.size(); + for (auto it = table[index].begin(); it != table[index].end(); ++it) { + if (it->first == key) { + table[index].erase(it); + load_factor = static_cast(size()) / table.size(); + return true; + } + } + return false; +} + +template +size_t HashTable::size() const { + size_t count = 0; + for (const auto& list : table) { + count += list.size(); + } + return count; +} + +template +void HashTable::rehash() { + std::vector>> new_table(table.size() * 2); + for (const auto& list : table) { + for (const auto& pair : list) { + size_t index = hash(pair.first) % new_table.size(); + new_table[index].emplace_back(pair); + } + } + table = std::move(new_table); + load_factor = static_cast(size()) / table.size(); +} \ No newline at end of file diff --git a/task_08/src/test.cpp b/task_08/src/test.cpp index 5e11617e..bc32ecf9 100644 --- a/task_08/src/test.cpp +++ b/task_08/src/test.cpp @@ -1,6 +1,36 @@ #include -TEST(TopologySort, Simple) { - ASSERT_EQ(1, 1); // Stack [] +#include +#include + +#include "HashTable.hpp" + +TEST(HashTable, Simple) { + HashTable table; + std::vector keys = { + "Lobachevskiy", "Euler", "Ferma", "Lagrange", "Burbaki", + "Kholmogorov", "Landau", "Raigorodskiy", "Vinberg", "Arnold"}; + std::vector values = {1792, 1707, 1601, 1736, 1935, + 1903, 1908, 1976, 1937, 1937}; + for (int i = 0; i < keys.size(); i++) { + table.insert(keys[i], values[i]); + } + for (int i = 0; i < keys.size(); i++) { + ASSERT_EQ(table.search(keys[i]), true); + } + ASSERT_EQ(table.search("Gauss"), false); + ASSERT_EQ(table.search("Newton"), false); + ASSERT_EQ(table.search("Bool"), false); + ASSERT_EQ(table.search("Koshi"), false); + ASSERT_EQ(table.search("Abele"), false); + for (int i = 0; i < keys.size() / 2; i++) { + table.erase(keys[i]); + } + for (int i = 0; i < keys.size() / 2; i++) { + ASSERT_EQ(table.search(keys[i]), false); + } + for (int i = keys.size() / 2; i < keys.size(); i++) { + ASSERT_EQ(table.search(keys[i]), true); + } } diff --git a/task_09/src/MinCoins.hpp b/task_09/src/MinCoins.hpp new file mode 100644 index 00000000..0dba0bdc --- /dev/null +++ b/task_09/src/MinCoins.hpp @@ -0,0 +1,18 @@ +#include +#include +#include + +int minCoins(int amount, const std::vector& coins) { + std::vector dp(amount + 1, amount + 1); + dp[0] = 0; + + for (int i = 1; i <= amount; i++) { + for (int coin : coins) { + if (coin <= i) { + dp[i] = std::min(dp[i], dp[i - coin] + 1); + } + } + } + + return (dp[amount] > amount) ? -1 : dp[amount]; +} diff --git a/task_09/src/test.cpp b/task_09/src/test.cpp index 869094dd..630fd991 100644 --- a/task_09/src/test.cpp +++ b/task_09/src/test.cpp @@ -1,4 +1,18 @@ #include -TEST(TopologySort, Simple) { ASSERT_EQ(1, 1); } +#include "MinCoins.hpp" + +TEST(Coins, Simple) { + ASSERT_EQ(3, minCoins(14, (std::vector{1, 2, 5, 10}))); + ASSERT_EQ(4, minCoins(19, (std::vector{1, 2, 5, 10}))); + ASSERT_EQ(4, minCoins(100, std::vector{1, 5, 10, 25})); + ASSERT_EQ(10, minCoins(500, std::vector{1, 5, 10, 25, 50})); + ASSERT_EQ(-1, minCoins(3, std::vector{5, 7, 9})); + ASSERT_EQ(3, minCoins(11, std::vector{2, 5, 7})); + ASSERT_EQ(0, minCoins(0, std::vector{1, 2, 5, 10})); + ASSERT_EQ(1, minCoins(14, std::vector{14})); + ASSERT_EQ(1, minCoins(1, std::vector{1})); + ASSERT_EQ(2, minCoins(12, std::vector{2, 2, 5, 10})); + ASSERT_EQ(3, minCoins(16, std::vector{1, 5, 5, 10})); +} From b0026d6dcdde3e6b57d4e4eedd031fe11a5ef12f Mon Sep 17 00:00:00 2001 From: MRyabchikov <110342451+MRyabchikov@users.noreply.github.com> Date: Wed, 12 Jun 2024 02:06:25 +0000 Subject: [PATCH 09/11] Bug fix --- task_03/src/WeatherReport.cpp | 4 +++- task_03/src/test.cpp | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/task_03/src/WeatherReport.cpp b/task_03/src/WeatherReport.cpp index 60252411..8f2a353f 100644 --- a/task_03/src/WeatherReport.cpp +++ b/task_03/src/WeatherReport.cpp @@ -11,8 +11,10 @@ std::vector findNextGreater(std::vector v) { while (stack.size() != 0 && v[i] >= v[stack.top()]) { stack.pop(); } - if (stack.size() == 0) { + if (stack.size() != 0) { res[i] = stack.top() - i; + } else { + res[i] = -1; } stack.push(i); } diff --git a/task_03/src/test.cpp b/task_03/src/test.cpp index 61e30ab4..b1850b08 100644 --- a/task_03/src/test.cpp +++ b/task_03/src/test.cpp @@ -7,7 +7,7 @@ TEST(findNextGreater, Simple) { ASSERT_EQ(findNextGreater(std::vector{1}), (std::vector{-1})); ASSERT_EQ(findNextGreater(std::vector{}), (std::vector{})); ASSERT_EQ(findNextGreater(std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}), - (std::vector{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1})); + (std::vector{1, 1, 1, 1, 1, 1, 1, 1, 1, -1})); ASSERT_EQ( findNextGreater(std::vector{16, 19, 10, 14, 22, 27, 12, 10, 16, 24}), (std::vector{{1, 3, 1, 1, 1, -1, 2, 1, 1, -1}})); From 27b4939e74023d7094046aa0b861ef92b04ccb1c Mon Sep 17 00:00:00 2001 From: MRyabchikov <110342451+MRyabchikov@users.noreply.github.com> Date: Sun, 16 Jun 2024 12:00:05 +0000 Subject: [PATCH 10/11] Fixes --- task_02/src/stack.hpp | 92 +++++------ task_02/src/test.cpp | 56 +++---- task_03/src/WeatherReport.cpp | 2 +- task_03/src/WeatherReport.h | 2 +- task_03/src/test.cpp | 10 +- task_04/src/heap.hpp | 72 ++++----- task_04/src/test.cpp | 64 ++++---- task_05/src/{quickSort.hpp => QuickSort.hpp} | 8 +- task_05/src/test.cpp | 16 +- task_06/src/nStatistics.hpp | 14 +- task_06/src/test.cpp | 8 +- task_07/src/BinaryTree.hpp | 162 ++++++++++++++----- task_07/src/main.cpp | 5 +- task_07/src/test.cpp | 14 +- task_08/src/HashTable.hpp | 77 +++++---- task_08/src/test.cpp | 21 +-- task_09/src/MinCoins.hpp | 2 +- task_09/src/test.cpp | 22 +-- 18 files changed, 371 insertions(+), 276 deletions(-) rename task_05/src/{quickSort.hpp => QuickSort.hpp} (65%) diff --git a/task_02/src/stack.hpp b/task_02/src/stack.hpp index ed715167..a2d6e74d 100644 --- a/task_02/src/stack.hpp +++ b/task_02/src/stack.hpp @@ -11,93 +11,93 @@ template class StackNode { public: explicit StackNode(T _data, StackNode *_prev = nullptr) - : data(_data), prevptr(_prev) {} - StackNode() : data(), prevptr(nullptr) {} + : data(_data), prev_ptr(_prev) {} + StackNode() : data(), prev_ptr(nullptr) {} T data; - StackNode *prevptr; + StackNode *prev_ptr; }; template class Stack { public: - Stack() : top(nullptr), size(0) {} - void push(T value); - T pop(); - T getTop(); - int getSize(); + Stack() : top_(nullptr), size_(0) {} + void Push(T value); + T Pop(); + T GetTop(); + int GetSize(); private: - StackNode *top; - int size; + StackNode *top_; + int size_; }; template -void Stack::push(T value) { - StackNode *newElem = new StackNode(value, top); - size++; - top = newElem; +void Stack::Push(T value) { + StackNode *new_elem = new StackNode(value, top_); + size_++; + top_ = new_elem; } template -T Stack::pop() { - if (size == 0) { +T Stack::Pop() { + if (size_ == 0) { throw std::underflow_error("Empty stack"); } - T returningValue = top->data; - StackNode *oldTop = top; - top = top->prevptr; - delete oldTop; - size--; - return returningValue; + T returning_value = top_->data; + StackNode *old_top = top_; + top_ = top_->prev_ptr; + delete old_top; + size_--; + return returning_value; } template -int Stack::getSize() { - return size; +int Stack::GetSize() { + return size_; } template -T Stack::getTop() { - if (size == 0) { +T Stack::GetTop() { + if (size_ == 0) { throw std::underflow_error("Empty stack"); } - return top->data; + return top_->data; } template class MinStack { public: - MinStack() : mainStack(), minStack() {} - void push(T value); - T pop(); - T getMin(); - int getSize(); + MinStack() : main_stack_(), min_stack_() {} + void Push(T value); + T Pop(); + T GetMin(); + int GetSize(); private: - Stack mainStack; - Stack minStack; + Stack main_stack_; + Stack min_stack_; }; template -void MinStack::push(T value) { - mainStack.push(value); - if (minStack.getSize() == 0) - minStack.push(value); +void MinStack::Push(T value) { + main_stack_.Push(value); + if (min_stack_.GetSize() == 0) + min_stack_.Push(value); else - minStack.push(std::min(value, minStack.getTop())); + min_stack_.Push(std::min(value, min_stack_.GetTop())); } template -T MinStack::pop() { - minStack.pop(); - return mainStack.pop(); +T MinStack::Pop() { + min_stack_.Pop(); + return main_stack_.Pop(); } template -T MinStack::getMin() { - return minStack.getTop(); +T MinStack::GetMin() { + return min_stack_.GetTop(); } template -int MinStack::getSize() { - return mainStack.getSize(); +int MinStack::GetSize() { + return main_stack_.GetSize(); } diff --git a/task_02/src/test.cpp b/task_02/src/test.cpp index 03f20441..9960b93c 100644 --- a/task_02/src/test.cpp +++ b/task_02/src/test.cpp @@ -7,36 +7,36 @@ TEST(StackTest, Simple) { Stack stack; - stack.push(1); // Stack [1] - ASSERT_EQ(stack.pop(), 1); // Stack [] - stack.push(1); // Stack [1] - stack.push(2); // Stack [1, 2] - ASSERT_EQ(stack.pop(), 2); // Stack [1] - ASSERT_EQ(stack.pop(), 1); // Stack [] - stack.push(1); // Stack [1] - stack.push(2); // Stack [1, 2] - ASSERT_EQ(stack.pop(), 2); // Stack [1] - stack.push(3); // Stack [1, 3] - ASSERT_EQ(stack.pop(), 3); // Stack [1] - ASSERT_EQ(stack.pop(), 1); // Stack [] + stack.Push(1); // Stack [1] + ASSERT_EQ(stack.Pop(), 1); // Stack [] + stack.Push(1); // Stack [1] + stack.Push(2); // Stack [1, 2] + ASSERT_EQ(stack.Pop(), 2); // Stack [1] + ASSERT_EQ(stack.Pop(), 1); // Stack [] + stack.Push(1); // Stack [1] + stack.Push(2); // Stack [1, 2] + ASSERT_EQ(stack.Pop(), 2); // Stack [1] + stack.Push(3); // Stack [1, 3] + ASSERT_EQ(stack.Pop(), 3); // Stack [1] + ASSERT_EQ(stack.Pop(), 1); // Stack [] } TEST(MinStackTest, Simple) { MinStack stack; - stack.push(1); // Stack [1] - ASSERT_EQ(stack.getMin(), 1); - ASSERT_EQ(stack.pop(), 1); // Stack [] - stack.push(1); // Stack [1] - stack.push(2); // Stack [1, 2] - ASSERT_EQ(stack.getMin(), 1); - ASSERT_EQ(stack.pop(), 2); // Stack [1] - ASSERT_EQ(stack.pop(), 1); // Stack [] - stack.push(1); // Stack [1] - stack.push(2); // Stack [1, 2] - ASSERT_EQ(stack.getMin(), 1); - ASSERT_EQ(stack.pop(), 2); // Stack [1] - stack.push(3); // Stack [1, 3] - ASSERT_EQ(stack.getMin(), 1); - ASSERT_EQ(stack.pop(), 3); // Stack [1] - ASSERT_EQ(stack.pop(), 1); // Stack [] + stack.Push(1); // Stack [1] + ASSERT_EQ(stack.GetMin(), 1); + ASSERT_EQ(stack.Pop(), 1); // Stack [] + stack.Push(1); // Stack [1] + stack.Push(2); // Stack [1, 2] + ASSERT_EQ(stack.GetMin(), 1); + ASSERT_EQ(stack.Pop(), 2); // Stack [1] + ASSERT_EQ(stack.Pop(), 1); // Stack [] + stack.Push(1); // Stack [1] + stack.Push(2); // Stack [1, 2] + ASSERT_EQ(stack.GetMin(), 1); + ASSERT_EQ(stack.Pop(), 2); // Stack [1] + stack.Push(3); // Stack [1, 3] + ASSERT_EQ(stack.GetMin(), 1); + ASSERT_EQ(stack.Pop(), 3); // Stack [1] + ASSERT_EQ(stack.Pop(), 1); // Stack [] } \ No newline at end of file diff --git a/task_03/src/WeatherReport.cpp b/task_03/src/WeatherReport.cpp index 8f2a353f..f3db70e5 100644 --- a/task_03/src/WeatherReport.cpp +++ b/task_03/src/WeatherReport.cpp @@ -3,7 +3,7 @@ #include #include -std::vector findNextGreater(std::vector v) { +std::vector FindNextGreater(std::vector v) { std::vector res(v.size(), -1); std::stack stack; diff --git a/task_03/src/WeatherReport.h b/task_03/src/WeatherReport.h index 5923acf9..d1ebd320 100644 --- a/task_03/src/WeatherReport.h +++ b/task_03/src/WeatherReport.h @@ -1,4 +1,4 @@ #include #include -std::vector findNextGreater(std::vector v); \ No newline at end of file +std::vector FindNextGreater(std::vector v); \ No newline at end of file diff --git a/task_03/src/test.cpp b/task_03/src/test.cpp index b1850b08..d64ad9d0 100644 --- a/task_03/src/test.cpp +++ b/task_03/src/test.cpp @@ -4,14 +4,14 @@ #include "WeatherReport.h" TEST(findNextGreater, Simple) { - ASSERT_EQ(findNextGreater(std::vector{1}), (std::vector{-1})); - ASSERT_EQ(findNextGreater(std::vector{}), (std::vector{})); - ASSERT_EQ(findNextGreater(std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}), + ASSERT_EQ(FindNextGreater(std::vector{1}), (std::vector{-1})); + ASSERT_EQ(FindNextGreater(std::vector{}), (std::vector{})); + ASSERT_EQ(FindNextGreater(std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}), (std::vector{1, 1, 1, 1, 1, 1, 1, 1, 1, -1})); ASSERT_EQ( - findNextGreater(std::vector{16, 19, 10, 14, 22, 27, 12, 10, 16, 24}), + FindNextGreater(std::vector{16, 19, 10, 14, 22, 27, 12, 10, 16, 24}), (std::vector{{1, 3, 1, 1, 1, -1, 2, 1, 1, -1}})); - ASSERT_EQ(findNextGreater( + ASSERT_EQ(FindNextGreater( std::vector{-29, 0, -7, -14, 0, -11, -13, -3, -27, -25}), (std::vector{{1, -1, 2, 1, -1, 2, 1, -1, 1, -1}})); } \ No newline at end of file diff --git a/task_04/src/heap.hpp b/task_04/src/heap.hpp index c058e909..69ff49b2 100644 --- a/task_04/src/heap.hpp +++ b/task_04/src/heap.hpp @@ -6,77 +6,77 @@ template class BinaryHeap { public: - BinaryHeap() : data() {} - BinaryHeap(std::initializer_list _data) : data(_data) { - for (int i = data.size() - 1; i >= 0; i--) heapify(i); + BinaryHeap() : data_() {} + BinaryHeap(std::initializer_list _data) : data_(_data) { + for (int i = data_.size() - 1; i >= 0; i--) heapify(i); } - void insert(T newElem); + void Insert(T new_elem); - int extractMin(); + int ExtractMin(); - void decreaseKey(int i, T newKey); + void DecreaseKey(int i, T newKey); private: - std::vector data; - int getParentIdx(int i) { return (i - 1) / 2; } - int getLefrChildIdx(int i) { return 2 * i + 1; } - int getRightChildIdx(int i) { return 2 * i + 2; } + std::vector data_; + int GetParentIndex(int i) { return (i - 1) / 2; } + int GetLefrChildIndex(int i) { return 2 * i + 1; } + int GetRightChildIndex(int i) { return 2 * i + 2; } void heapify(int i); }; template -void BinaryHeap::insert(T newElem) { - data.push_back(newElem); - int i = data.size() - 1; - while (i != 0 && data[getParentIdx(i)] > data[i]) { - std::swap(data[i], data[getParentIdx(i)]); - i = getParentIdx(i); +void BinaryHeap::Insert(T new_elem) { + data_.push_back(new_elem); + int i = data_.size() - 1; + while (i != 0 && data_[GetParentIndex(i)] > data_[i]) { + std::swap(data_[i], data_[GetParentIndex(i)]); + i = GetParentIndex(i); } } template -void BinaryHeap::decreaseKey(int i, T newKey) { - if (newKey > data[i]) { +void BinaryHeap::DecreaseKey(int i, T new_key) { + if (new_key > data_[i]) { throw std::logic_error("New element is greater"); } - data[i] = newKey; - while (i != 0 && data[getParentIdx(i)] > data[i]) { - swap(data[i], data[getParentIdx(i)]); - i = getParentIdx(i); + data_[i] = new_key; + while (i != 0 && data_[GetParentIndex(i)] > data_[i]) { + swap(data_[i], data_[GetParentIndex(i)]); + i = GetParentIndex(i); } } template -int BinaryHeap::extractMin() { - if (data.size() == 0) { +int BinaryHeap::ExtractMin() { + if (data_.size() == 0) { throw std::underflow_error("Heap is empty"); } - if (data.size() == 1) { - T returningValue = data[0]; - data.pop_back(); - return returningValue; + if (data_.size() == 1) { + T returning_value = data_[0]; + data_.pop_back(); + return returning_value; } - int root = data[0]; - data[0] = data[data.size() - 1]; - data.pop_back(); + int root = data_[0]; + data_[0] = data_[data_.size() - 1]; + data_.pop_back(); heapify(0); return root; } template void BinaryHeap::heapify(int i) { - int l = getLefrChildIdx(i); - int r = getRightChildIdx(i); + int l = GetLefrChildIndex(i); + int r = GetRightChildIndex(i); int smallest = i; - if (l < data.size() && data[l] < data[i]) { + if (l < data_.size() && data_[l] < data_[i]) { smallest = l; } - if (r < data.size() && data[r] < data[smallest]) { + if (r < data_.size() && data_[r] < data_[smallest]) { smallest = r; } if (smallest != i) { - std::swap(data[i], data[smallest]); + std::swap(data_[i], data_[smallest]); heapify(smallest); } } \ No newline at end of file diff --git a/task_04/src/test.cpp b/task_04/src/test.cpp index 4fa2643d..67675131 100644 --- a/task_04/src/test.cpp +++ b/task_04/src/test.cpp @@ -6,44 +6,44 @@ TEST(BinaryHeap, Simple) { BinaryHeap heap; - heap.insert(37); - heap.insert(212); - heap.insert(0); - ASSERT_EQ(heap.extractMin(), 0); - ASSERT_EQ(heap.extractMin(), 37); - ASSERT_EQ(heap.extractMin(), 212); - heap.insert(34); - ASSERT_EQ(heap.extractMin(), 34); - heap.insert(201); - heap.insert(0); - heap.insert(16); - ASSERT_EQ(heap.extractMin(), 0); - heap.insert(345); - ASSERT_EQ(heap.extractMin(), 16); - ASSERT_EQ(heap.extractMin(), 201); - ASSERT_EQ(heap.extractMin(), 345); + heap.Insert(37); + heap.Insert(212); + heap.Insert(0); + ASSERT_EQ(heap.ExtractMin(), 0); + ASSERT_EQ(heap.ExtractMin(), 37); + ASSERT_EQ(heap.ExtractMin(), 212); + heap.Insert(34); + ASSERT_EQ(heap.ExtractMin(), 34); + heap.Insert(201); + heap.Insert(0); + heap.Insert(16); + ASSERT_EQ(heap.ExtractMin(), 0); + heap.Insert(345); + ASSERT_EQ(heap.ExtractMin(), 16); + ASSERT_EQ(heap.ExtractMin(), 201); + ASSERT_EQ(heap.ExtractMin(), 345); } TEST(BinaryHeap, Vectors) { BinaryHeap heap{98, 29, 4, 92, 48, 35, 11, 41, 84, 49}; - ASSERT_EQ(heap.extractMin(), 4); - ASSERT_EQ(heap.extractMin(), 11); - ASSERT_EQ(heap.extractMin(), 29); - ASSERT_EQ(heap.extractMin(), 35); - ASSERT_EQ(heap.extractMin(), 41); - ASSERT_EQ(heap.extractMin(), 48); - ASSERT_EQ(heap.extractMin(), 49); - ASSERT_EQ(heap.extractMin(), 84); - ASSERT_EQ(heap.extractMin(), 92); - ASSERT_EQ(heap.extractMin(), 98); + ASSERT_EQ(heap.ExtractMin(), 4); + ASSERT_EQ(heap.ExtractMin(), 11); + ASSERT_EQ(heap.ExtractMin(), 29); + ASSERT_EQ(heap.ExtractMin(), 35); + ASSERT_EQ(heap.ExtractMin(), 41); + ASSERT_EQ(heap.ExtractMin(), 48); + ASSERT_EQ(heap.ExtractMin(), 49); + ASSERT_EQ(heap.ExtractMin(), 84); + ASSERT_EQ(heap.ExtractMin(), 92); + ASSERT_EQ(heap.ExtractMin(), 98); } TEST(BinaryHeap, Exceptions) { BinaryHeap heap; - ASSERT_THROW(heap.extractMin(), std::underflow_error); - heap.insert(12); - heap.insert(13); - ASSERT_EQ(heap.extractMin(), 12); - ASSERT_EQ(heap.extractMin(), 13); - ASSERT_THROW(heap.extractMin(), std::underflow_error); + ASSERT_THROW(heap.ExtractMin(), std::underflow_error); + heap.Insert(12); + heap.Insert(13); + ASSERT_EQ(heap.ExtractMin(), 12); + ASSERT_EQ(heap.ExtractMin(), 13); + ASSERT_THROW(heap.ExtractMin(), std::underflow_error); } diff --git a/task_05/src/quickSort.hpp b/task_05/src/QuickSort.hpp similarity index 65% rename from task_05/src/quickSort.hpp rename to task_05/src/QuickSort.hpp index 650c0c4e..edc11587 100644 --- a/task_05/src/quickSort.hpp +++ b/task_05/src/QuickSort.hpp @@ -16,11 +16,11 @@ int partition(std::vector& v, int low, int high) { } template -void quickSort(std::vector& v, int low = 0, int high = -1) { +void QuickSort(std::vector& v, int low = 0, int high = -1) { if (high == -1) high = v.size() - 1; if (low < high) { - int partitionIdx = partition(v, low, high); - quickSort(v, low, partitionIdx - 1); - quickSort(v, partitionIdx + 1, high); + int partitionIndex = partition(v, low, high); + QuickSort(v, low, partitionIndex - 1); + QuickSort(v, partitionIndex + 1, high); } } \ No newline at end of file diff --git a/task_05/src/test.cpp b/task_05/src/test.cpp index 2897163a..146641c2 100644 --- a/task_05/src/test.cpp +++ b/task_05/src/test.cpp @@ -3,20 +3,22 @@ #include -#include "quickSort.hpp" +#include "QuickSort.hpp" -TEST(quickSort, Simple) { +TEST(QuickSort, Simple) { + std::vector empty; + QuickSort(empty); + ASSERT_EQ(empty, std::vector{}); std::vector data = {1, 2, 3, 4, 5}; - quickSort(data); - for (auto curr : data) std::cout << curr << " "; + QuickSort(data); ASSERT_EQ(data, (std::vector{1, 2, 3, 4, 5})); data = (std::vector{5, 4, 3, 2, 1}); - quickSort(data); + QuickSort(data); ASSERT_EQ(data, (std::vector{1, 2, 3, 4, 5})); data = (std::vector{3, 4, 2, 1, 5}); - quickSort(data); + QuickSort(data); ASSERT_EQ(data, (std::vector{1, 2, 3, 4, 5})); data = (std::vector{1, 1, 8, 1, 2, 2, 9, 6, 4, 3}); - quickSort(data); + QuickSort(data); ASSERT_EQ(data, (std::vector{1, 1, 1, 2, 2, 3, 4, 6, 8, 9})); } diff --git a/task_06/src/nStatistics.hpp b/task_06/src/nStatistics.hpp index c841bddd..93cd8009 100644 --- a/task_06/src/nStatistics.hpp +++ b/task_06/src/nStatistics.hpp @@ -16,18 +16,18 @@ int partition(std::vector& v, int low, int high) { } template -int findNthStatistic(std::vector v, int n) { +int FindNthStatistic(std::vector v, int n) { int low = 0; int high = v.size() - 1; while (low <= high) { - int partitionIdx = partition(v, low, high); - if (partitionIdx == n) { - return v[partitionIdx]; - } else if (partitionIdx >= n) { - high = partitionIdx - 1; + int partitionIndex = partition(v, low, high); + if (partitionIndex == n) { + return v[partitionIndex]; + } else if (partitionIndex >= n) { + high = partitionIndex - 1; } else - low = partitionIdx + 1; + low = partitionIndex + 1; } return -1; diff --git a/task_06/src/test.cpp b/task_06/src/test.cpp index 2f51eea0..ab7954a7 100644 --- a/task_06/src/test.cpp +++ b/task_06/src/test.cpp @@ -4,17 +4,19 @@ #include "nStatistics.hpp" TEST(NStatistic, Simple) { + std::vector empty; + ASSERT_EQ(FindNthStatistic(empty, 5), -1); std::vector v1 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; for (int i = 0; i < v1.size(); i++) { - ASSERT_EQ(findNthStatistic(v1, i), i); + ASSERT_EQ(FindNthStatistic(v1, i), i); } std::vector v2 = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0}; for (int i = 0; i < v2.size(); i++) { - ASSERT_EQ(findNthStatistic(v2, i), i); + ASSERT_EQ(FindNthStatistic(v2, i), i); } std::vector v3 = {-1, 7, 1, 9, 2, 0, -3, 10, -7, 3}; std::vector ans = {-7, -3, -1, 0, 1, 2, 3, 7, 9, 10}; for (int i = 0; i < v3.size(); i++) { - ASSERT_EQ(findNthStatistic(v3, i), ans[i]); + ASSERT_EQ(FindNthStatistic(v3, i), ans[i]); } } diff --git a/task_07/src/BinaryTree.hpp b/task_07/src/BinaryTree.hpp index 0217912a..cd831368 100644 --- a/task_07/src/BinaryTree.hpp +++ b/task_07/src/BinaryTree.hpp @@ -3,92 +3,99 @@ template struct Node { - Node(T value) : data(value), leftptr(nullptr), rightptr(nullptr) {} + Node(T value) : data(value), left_ptr(nullptr), right_ptr(nullptr) {} T data; - Node* leftptr; - Node* rightptr; + Node* left_ptr; + Node* right_ptr; + int height; }; template class BinaryTree { public: - BinaryTree() : root(nullptr) {} - ~BinaryTree() { destroyTree(root); } + BinaryTree() : root_(nullptr) {} + ~BinaryTree() { DestroyTree(root_); } - void insert(int value) { root = insertRecursive(root, value); } + void insert(int value) { root_ = InsertRecursive(root_, value); } - bool search(int value) { return searchRecursive(root, value); } + bool search(int value) { return SearchRecursive(root_, value); } - std::vector inorderTraversal(); - std::vector preorderTraversal(); - std::vector postorderTraversal(); + std::vector InorderTraversal(); + std::vector PreorderTraversal(); + std::vector PostorderTraversal(); private: - Node* root; - Node* insertRecursive(Node* node, int value); - bool searchRecursive(Node* node, int value); - void inorderTraversalRecursive(Node* node, std::vector& ans); - void preorderTraversalRecursive(Node* node, std::vector& ans); - void postorderTraversalRecursive(Node* node, std::vector& ans); - void destroyTree(Node* node); + Node* root_; + Node* InsertRecursive(Node* node, int value); + bool SearchRecursive(Node* node, int value); + void InorderTraversalRecursive(Node* node, std::vector& ans); + void PreorderTraversalRecursive(Node* node, std::vector& ans); + void PostorderTraversalRecursive(Node* node, std::vector& ans); + void DestroyTree(Node* node); + int GetHeight(Node* node); + int GetBalance(Node* node); + void UpdateHeight(Node* node); + Node* RotateRight(Node* node); + Node* RotateLeft(Node* node); + Node* Balance(Node* node); }; template -std::vector BinaryTree::inorderTraversal() { +std::vector BinaryTree::InorderTraversal() { std::vector ans; - inorderTraversalRecursive(root, ans); + InorderTraversalRecursive(root_, ans); return ans; } template -std::vector BinaryTree::preorderTraversal() { +std::vector BinaryTree::PreorderTraversal() { std::vector ans; - preorderTraversalRecursive(root, ans); + PreorderTraversalRecursive(root_, ans); return ans; } template -std::vector BinaryTree::postorderTraversal() { +std::vector BinaryTree::PostorderTraversal() { std::vector ans; - postorderTraversalRecursive(root, ans); + PostorderTraversalRecursive(root_, ans); return ans; } template -void BinaryTree::inorderTraversalRecursive(Node* node, +void BinaryTree::InorderTraversalRecursive(Node* node, std::vector& ans) { if (node == nullptr) { return; } - inorderTraversalRecursive(node->leftptr, ans); + InorderTraversalRecursive(node->left_ptr, ans); ans.push_back(node->data); - inorderTraversalRecursive(node->rightptr, ans); + InorderTraversalRecursive(node->right_ptr, ans); } template -void BinaryTree::preorderTraversalRecursive(Node* node, +void BinaryTree::PreorderTraversalRecursive(Node* node, std::vector& ans) { if (node == nullptr) { return; } ans.push_back(node->data); - preorderTraversalRecursive(node->leftptr, ans); - preorderTraversalRecursive(node->rightptr, ans); + PreorderTraversalRecursive(node->left_ptr, ans); + PreorderTraversalRecursive(node->right_ptr, ans); } template -void BinaryTree::postorderTraversalRecursive(Node* node, +void BinaryTree::PostorderTraversalRecursive(Node* node, std::vector& ans) { if (node == nullptr) { return; } - postorderTraversalRecursive(node->leftptr, ans); - postorderTraversalRecursive(node->rightptr, ans); + PostorderTraversalRecursive(node->left_ptr, ans); + PostorderTraversalRecursive(node->right_ptr, ans); ans.push_back(node->data); } template -bool BinaryTree::searchRecursive(Node* node, int value) { +bool BinaryTree::SearchRecursive(Node* node, int value) { if (node == nullptr) { return false; } @@ -98,34 +105,101 @@ bool BinaryTree::searchRecursive(Node* node, int value) { } if (value < node->data) { - return searchRecursive(node->leftptr, value); + return SearchRecursive(node->left_ptr, value); } else { - return searchRecursive(node->rightptr, value); + return SearchRecursive(node->right_ptr, value); } } template -Node* BinaryTree::insertRecursive(Node* node, int value) { +Node* BinaryTree::InsertRecursive(Node* node, int value) { if (node == nullptr) { return new Node(value); } if (value < node->data) { - node->leftptr = insertRecursive(node->leftptr, value); + node->left_ptr = InsertRecursive(node->left_ptr, value); } else if (value > node->data) { - node->rightptr = insertRecursive(node->rightptr, value); + node->right_ptr = InsertRecursive(node->right_ptr, value); } - - return node; + return Balance(node); } template -void BinaryTree::destroyTree(Node* node) { +void BinaryTree::DestroyTree(Node* node) { if (node == nullptr) { return; } - destroyTree(node->leftptr); - destroyTree(node->rightptr); + DestroyTree(node->left_ptr); + DestroyTree(node->right_ptr); delete node; -} \ No newline at end of file +} + +template +int BinaryTree::GetHeight(Node* node) { + if (node == nullptr) return 0; + return node->height; +} + +template +int BinaryTree::GetBalance(Node* node) { + if (node == nullptr) return 0; + return GetHeight(node->left_ptr) - GetHeight(node->right_ptr); +} + +template +void BinaryTree::UpdateHeight(Node* node) { + node->height = + std::max(GetHeight(node->left_ptr), GetHeight(node->right_ptr)) + 1; +} + +template +Node* BinaryTree::RotateRight(Node* node) { + Node* l_child = node->left_ptr; + Node* lr_child = l_child->right_ptr; + + l_child->right_ptr = node; + node->left_ptr = lr_child; + + UpdateHeight(node); + UpdateHeight(l_child); + + return l_child; +} + +template +Node* BinaryTree::RotateLeft(Node* node) { + Node* r_child = node->right_ptr; + Node* rl_child = r_child->left_ptr; + + r_child->left_ptr = node; + node->right_ptr = rl_child; + + UpdateHeight(node); + UpdateHeight(r_child); + + return r_child; +} + +template +Node* BinaryTree::Balance(Node* node) { + UpdateHeight(node); + + int balance = GetBalance(node); + + if (balance > 1) { + if (GetBalance(node->left_ptr) < 0) { + node->left_ptr = RotateLeft(node->left_ptr); + } + return RotateRight(node); + } + if (balance < -1) { + if (GetBalance(node->right_ptr) > 0) { + node->right_ptr = RotateRight(node->right_ptr); + } + return RotateLeft(node); + } + + return node; +} diff --git a/task_07/src/main.cpp b/task_07/src/main.cpp index 0e4393ba..de20bc4a 100644 --- a/task_07/src/main.cpp +++ b/task_07/src/main.cpp @@ -1,3 +1,6 @@ +#include #include -int main() { return 0; } +using namespace std; + +int main(void) { return 0; } \ No newline at end of file diff --git a/task_07/src/test.cpp b/task_07/src/test.cpp index 98eb0c6c..e1660071 100644 --- a/task_07/src/test.cpp +++ b/task_07/src/test.cpp @@ -5,16 +5,16 @@ TEST(BinaryTree, Total) { BinaryTree tree; - std::vector data = {35, 38, 12, -30, 25, 22, -12, -21, 30, -13, 40}; + std::vector data = {35, 38, 12, 30, 25, 22, 18, 21, 39, 13, 40}; for (int i = 0; i < data.size(); i++) tree.insert(data[i]); for (int i = -40; i <= 40; i++) { bool ans = std::find(data.begin(), data.end(), i) != data.end(); ASSERT_EQ(tree.search(i), ans); } - std::vector ansIn = {-30, -21, -13, -12, 12, 22, 25, 30, 35, 38, 40}; - std::vector ansPre = {35, 12, -30, -12, -21, -13, 25, 22, 30, 38, 40}; - std::vector ansPost = {-13, -21, -12, -30, 22, 30, 25, 12, 40, 38, 35}; - ASSERT_EQ(tree.inorderTraversal(), ansIn); - ASSERT_EQ(tree.preorderTraversal(), ansPre); - ASSERT_EQ(tree.postorderTraversal(), ansPost); + std::vector ans_in = {12, 13, 18, 21, 22, 25, 30, 35, 38, 39, 40}; + std::vector ans_pre = {25, 18, 12, 13, 22, 21, 35, 30, 38, 39, 40}; + std::vector ans_post = {13, 12, 21, 22, 18, 30, 40, 39, 38, 35, 25}; + ASSERT_EQ(tree.InorderTraversal(), ans_in); + ASSERT_EQ(tree.PreorderTraversal(), ans_pre); + ASSERT_EQ(tree.PostorderTraversal(), ans_post); } diff --git a/task_08/src/HashTable.hpp b/task_08/src/HashTable.hpp index cfc4315c..f6a8f859 100644 --- a/task_08/src/HashTable.hpp +++ b/task_08/src/HashTable.hpp @@ -1,48 +1,50 @@ #include #include #include +#include #include template class HashTable { public: - HashTable(size_t size = 10) : table(size), load_factor(0.0) {} + HashTable(size_t size = 10) : table_(size), load_factor_(0.0) {} - void insert(const Key& key, const Value& value); + void Insert(const Key& key, const Value& value); - bool search(const Key& key); + bool Search(const Key& key); + Value Get(const Key& key); - bool erase(const Key& key); + bool Erase(const Key& key); - size_t size() const; + size_t Size() const; private: - void rehash(); - std::vector>> table; - std::hash hash; - double load_factor; + void Rehash(); + std::vector>> table_; + std::hash hash_; + double load_factor_; }; template -void HashTable::insert(const Key& key, const Value& value) { - if (load_factor >= 0.75) { - rehash(); +void HashTable::Insert(const Key& key, const Value& value) { + if (load_factor_ >= 0.75) { + Rehash(); } - size_t index = hash(key) % table.size(); - for (auto& pair : table[index]) { + size_t index = hash_(key) % table_.size(); + for (auto& pair : table_[index]) { if (pair.first == key) { pair.second = value; return; } } - table[index].emplace_back(key, value); - load_factor = static_cast(size()) / table.size(); + table_[index].emplace_back(key, value); + load_factor_ = static_cast(Size()) / table_.size(); } template -bool HashTable::search(const Key& key) { - size_t index = hash(key) % table.size(); - for (const auto& pair : table[index]) { +bool HashTable::Search(const Key& key) { + size_t index = hash_(key) % table_.size(); + for (const auto& pair : table_[index]) { if (pair.first == key) { return true; } @@ -51,12 +53,23 @@ bool HashTable::search(const Key& key) { } template -bool HashTable::erase(const Key& key) { - size_t index = hash(key) % table.size(); - for (auto it = table[index].begin(); it != table[index].end(); ++it) { +Value HashTable::Get(const Key& key) { + size_t index = hash_(key) % table_.size(); + for (const auto& pair : table_[index]) { + if (pair.first == key) { + return pair.second; + } + } + throw std::logic_error("No such key in table"); +} + +template +bool HashTable::Erase(const Key& key) { + size_t index = hash_(key) % table_.size(); + for (auto it = table_[index].begin(); it != table_[index].end(); ++it) { if (it->first == key) { - table[index].erase(it); - load_factor = static_cast(size()) / table.size(); + table_[index].erase(it); + load_factor_ = static_cast(Size()) / table_.size(); return true; } } @@ -64,23 +77,23 @@ bool HashTable::erase(const Key& key) { } template -size_t HashTable::size() const { +size_t HashTable::Size() const { size_t count = 0; - for (const auto& list : table) { + for (const auto& list : table_) { count += list.size(); } return count; } template -void HashTable::rehash() { - std::vector>> new_table(table.size() * 2); - for (const auto& list : table) { +void HashTable::Rehash() { + std::vector>> new_table(table_.size() * 2); + for (const auto& list : table_) { for (const auto& pair : list) { - size_t index = hash(pair.first) % new_table.size(); + size_t index = hash_(pair.first) % new_table.size(); new_table[index].emplace_back(pair); } } - table = std::move(new_table); - load_factor = static_cast(size()) / table.size(); + table_ = std::move(new_table); + load_factor_ = static_cast(Size()) / table_.size(); } \ No newline at end of file diff --git a/task_08/src/test.cpp b/task_08/src/test.cpp index bc32ecf9..2af26450 100644 --- a/task_08/src/test.cpp +++ b/task_08/src/test.cpp @@ -14,23 +14,24 @@ TEST(HashTable, Simple) { std::vector values = {1792, 1707, 1601, 1736, 1935, 1903, 1908, 1976, 1937, 1937}; for (int i = 0; i < keys.size(); i++) { - table.insert(keys[i], values[i]); + table.Insert(keys[i], values[i]); } for (int i = 0; i < keys.size(); i++) { - ASSERT_EQ(table.search(keys[i]), true); + ASSERT_EQ(table.Search(keys[i]), true); + ASSERT_EQ(table.Get(keys[i]), values[i]); } - ASSERT_EQ(table.search("Gauss"), false); - ASSERT_EQ(table.search("Newton"), false); - ASSERT_EQ(table.search("Bool"), false); - ASSERT_EQ(table.search("Koshi"), false); - ASSERT_EQ(table.search("Abele"), false); + ASSERT_EQ(table.Search("Gauss"), false); + ASSERT_EQ(table.Search("Newton"), false); + ASSERT_EQ(table.Search("Bool"), false); + ASSERT_EQ(table.Search("Koshi"), false); + ASSERT_EQ(table.Search("Abele"), false); for (int i = 0; i < keys.size() / 2; i++) { - table.erase(keys[i]); + table.Erase(keys[i]); } for (int i = 0; i < keys.size() / 2; i++) { - ASSERT_EQ(table.search(keys[i]), false); + ASSERT_EQ(table.Search(keys[i]), false); } for (int i = keys.size() / 2; i < keys.size(); i++) { - ASSERT_EQ(table.search(keys[i]), true); + ASSERT_EQ(table.Search(keys[i]), true); } } diff --git a/task_09/src/MinCoins.hpp b/task_09/src/MinCoins.hpp index 0dba0bdc..525f6dd6 100644 --- a/task_09/src/MinCoins.hpp +++ b/task_09/src/MinCoins.hpp @@ -2,7 +2,7 @@ #include #include -int minCoins(int amount, const std::vector& coins) { +int MinCoins(int amount, const std::vector& coins) { std::vector dp(amount + 1, amount + 1); dp[0] = 0; diff --git a/task_09/src/test.cpp b/task_09/src/test.cpp index 630fd991..3b21441b 100644 --- a/task_09/src/test.cpp +++ b/task_09/src/test.cpp @@ -4,15 +4,15 @@ #include "MinCoins.hpp" TEST(Coins, Simple) { - ASSERT_EQ(3, minCoins(14, (std::vector{1, 2, 5, 10}))); - ASSERT_EQ(4, minCoins(19, (std::vector{1, 2, 5, 10}))); - ASSERT_EQ(4, minCoins(100, std::vector{1, 5, 10, 25})); - ASSERT_EQ(10, minCoins(500, std::vector{1, 5, 10, 25, 50})); - ASSERT_EQ(-1, minCoins(3, std::vector{5, 7, 9})); - ASSERT_EQ(3, minCoins(11, std::vector{2, 5, 7})); - ASSERT_EQ(0, minCoins(0, std::vector{1, 2, 5, 10})); - ASSERT_EQ(1, minCoins(14, std::vector{14})); - ASSERT_EQ(1, minCoins(1, std::vector{1})); - ASSERT_EQ(2, minCoins(12, std::vector{2, 2, 5, 10})); - ASSERT_EQ(3, minCoins(16, std::vector{1, 5, 5, 10})); + ASSERT_EQ(3, MinCoins(14, (std::vector{1, 2, 5, 10}))); + ASSERT_EQ(4, MinCoins(19, (std::vector{1, 2, 5, 10}))); + ASSERT_EQ(4, MinCoins(100, std::vector{1, 5, 10, 25})); + ASSERT_EQ(10, MinCoins(500, std::vector{1, 5, 10, 25, 50})); + ASSERT_EQ(-1, MinCoins(3, std::vector{5, 7, 9})); + ASSERT_EQ(3, MinCoins(11, std::vector{2, 5, 7})); + ASSERT_EQ(0, MinCoins(0, std::vector{1, 2, 5, 10})); + ASSERT_EQ(1, MinCoins(14, std::vector{14})); + ASSERT_EQ(1, MinCoins(1, std::vector{1})); + ASSERT_EQ(2, MinCoins(12, std::vector{2, 2, 5, 10})); + ASSERT_EQ(3, MinCoins(16, std::vector{1, 5, 5, 10})); } From 172464b6ed7dcd27e156725c9b2600dce2a6e8be Mon Sep 17 00:00:00 2001 From: MRyabchikov <110342451+MRyabchikov@users.noreply.github.com> Date: Sun, 16 Jun 2024 22:09:29 +0000 Subject: [PATCH 11/11] Fixes --- lib/src/util.cpp | 1 + lib/src/util.hpp | 17 ++++++++++++ task_02/src/stack.hpp | 2 +- task_03/src/main.cpp | 2 +- task_03/src/test.cpp | 2 +- .../{WeatherReport.cpp => weather_report.cpp} | 2 +- .../src/{WeatherReport.h => weather_report.h} | 0 task_04/src/heap.hpp | 10 +++---- task_05/src/QuickSort.hpp | 26 ------------------- task_05/src/quick_sort.hpp | 12 +++++++++ task_05/src/test.cpp | 2 +- .../src/{nStatistics.hpp => n_statistics.hpp} | 18 ++----------- task_06/src/test.cpp | 2 +- .../src/{BinaryTree.hpp => binary_tree.hpp} | 4 +-- task_07/src/test.cpp | 6 ++--- task_08/src/{HashTable.hpp => hash_table.hpp} | 8 +++--- task_08/src/test.cpp | 2 +- task_09/src/{MinCoins.hpp => min_coins.cpp} | 0 task_09/src/min_coins.hpp | 5 ++++ task_09/src/test.cpp | 2 +- 20 files changed, 59 insertions(+), 64 deletions(-) rename task_03/src/{WeatherReport.cpp => weather_report.cpp} (93%) rename task_03/src/{WeatherReport.h => weather_report.h} (100%) delete mode 100644 task_05/src/QuickSort.hpp create mode 100644 task_05/src/quick_sort.hpp rename task_06/src/{nStatistics.hpp => n_statistics.hpp} (50%) rename task_07/src/{BinaryTree.hpp => binary_tree.hpp} (97%) rename task_08/src/{HashTable.hpp => hash_table.hpp} (93%) rename task_09/src/{MinCoins.hpp => min_coins.cpp} (100%) create mode 100644 task_09/src/min_coins.hpp diff --git a/lib/src/util.cpp b/lib/src/util.cpp index 81e15bd5..9db3d1a9 100644 --- a/lib/src/util.cpp +++ b/lib/src/util.cpp @@ -1 +1,2 @@ #include "util.hpp" + diff --git a/lib/src/util.hpp b/lib/src/util.hpp index e69de29b..6d9f986f 100644 --- a/lib/src/util.hpp +++ b/lib/src/util.hpp @@ -0,0 +1,17 @@ +#include +#pragma once + +template +int Partition(std::vector& v, int low, int high) { + int pivot = v[high]; + int i = low - 1; + + for (int j = low; j <= high - 1; j++) { + if (v[j] <= pivot) { + i++; + std::swap(v[i], v[j]); + } + } + std::swap(v[i + 1], v[high]); + return (i + 1); +} \ No newline at end of file diff --git a/task_02/src/stack.hpp b/task_02/src/stack.hpp index a2d6e74d..17b35736 100644 --- a/task_02/src/stack.hpp +++ b/task_02/src/stack.hpp @@ -43,7 +43,7 @@ T Stack::Pop() { if (size_ == 0) { throw std::underflow_error("Empty stack"); } - T returning_value = top_->data; + T returning_value = std::move(top_->data); StackNode *old_top = top_; top_ = top_->prev_ptr; delete old_top; diff --git a/task_03/src/main.cpp b/task_03/src/main.cpp index f63b146c..94c5405d 100644 --- a/task_03/src/main.cpp +++ b/task_03/src/main.cpp @@ -1,4 +1,4 @@ #include -#include "WeatherReport.h" +#include "weather_report.h" int main() { return 0; } diff --git a/task_03/src/test.cpp b/task_03/src/test.cpp index d64ad9d0..f91b0537 100644 --- a/task_03/src/test.cpp +++ b/task_03/src/test.cpp @@ -1,7 +1,7 @@ #include -#include "WeatherReport.h" +#include "weather_report.h" TEST(findNextGreater, Simple) { ASSERT_EQ(FindNextGreater(std::vector{1}), (std::vector{-1})); diff --git a/task_03/src/WeatherReport.cpp b/task_03/src/weather_report.cpp similarity index 93% rename from task_03/src/WeatherReport.cpp rename to task_03/src/weather_report.cpp index f3db70e5..d2a9c2e8 100644 --- a/task_03/src/WeatherReport.cpp +++ b/task_03/src/weather_report.cpp @@ -1,4 +1,4 @@ -#include "WeatherReport.h" +#include "weather_report.h" #include #include diff --git a/task_03/src/WeatherReport.h b/task_03/src/weather_report.h similarity index 100% rename from task_03/src/WeatherReport.h rename to task_03/src/weather_report.h diff --git a/task_04/src/heap.hpp b/task_04/src/heap.hpp index 69ff49b2..18c24c5e 100644 --- a/task_04/src/heap.hpp +++ b/task_04/src/heap.hpp @@ -8,7 +8,7 @@ class BinaryHeap { public: BinaryHeap() : data_() {} BinaryHeap(std::initializer_list _data) : data_(_data) { - for (int i = data_.size() - 1; i >= 0; i--) heapify(i); + for (int i = data_.size() - 1; i >= 0; i--) Heapify(i); } void Insert(T new_elem); @@ -22,7 +22,7 @@ class BinaryHeap { int GetLefrChildIndex(int i) { return 2 * i + 1; } int GetRightChildIndex(int i) { return 2 * i + 2; } - void heapify(int i); + void Heapify(int i); }; template @@ -60,12 +60,12 @@ int BinaryHeap::ExtractMin() { int root = data_[0]; data_[0] = data_[data_.size() - 1]; data_.pop_back(); - heapify(0); + Heapify(0); return root; } template -void BinaryHeap::heapify(int i) { +void BinaryHeap::Heapify(int i) { int l = GetLefrChildIndex(i); int r = GetRightChildIndex(i); int smallest = i; @@ -77,6 +77,6 @@ void BinaryHeap::heapify(int i) { } if (smallest != i) { std::swap(data_[i], data_[smallest]); - heapify(smallest); + Heapify(smallest); } } \ No newline at end of file diff --git a/task_05/src/QuickSort.hpp b/task_05/src/QuickSort.hpp deleted file mode 100644 index edc11587..00000000 --- a/task_05/src/QuickSort.hpp +++ /dev/null @@ -1,26 +0,0 @@ -#include - -template -int partition(std::vector& v, int low, int high) { - int pivot = v[high]; - int i = low - 1; - - for (int j = low; j <= high - 1; j++) { - if (v[j] <= pivot) { - i++; - std::swap(v[i], v[j]); - } - } - std::swap(v[i + 1], v[high]); - return (i + 1); -} - -template -void QuickSort(std::vector& v, int low = 0, int high = -1) { - if (high == -1) high = v.size() - 1; - if (low < high) { - int partitionIndex = partition(v, low, high); - QuickSort(v, low, partitionIndex - 1); - QuickSort(v, partitionIndex + 1, high); - } -} \ No newline at end of file diff --git a/task_05/src/quick_sort.hpp b/task_05/src/quick_sort.hpp new file mode 100644 index 00000000..ef0248bf --- /dev/null +++ b/task_05/src/quick_sort.hpp @@ -0,0 +1,12 @@ +#include +#include + +template +void QuickSort(std::vector& v, int low = 0, int high = -1) { + if (high == -1) high = v.size() - 1; + if (low < high) { + int partitionIndex = Partition(v, low, high); + QuickSort(v, low, partitionIndex - 1); + QuickSort(v, partitionIndex + 1, high); + } +} \ No newline at end of file diff --git a/task_05/src/test.cpp b/task_05/src/test.cpp index 146641c2..098e3fbe 100644 --- a/task_05/src/test.cpp +++ b/task_05/src/test.cpp @@ -3,7 +3,7 @@ #include -#include "QuickSort.hpp" +#include "quick_sort.hpp" TEST(QuickSort, Simple) { std::vector empty; diff --git a/task_06/src/nStatistics.hpp b/task_06/src/n_statistics.hpp similarity index 50% rename from task_06/src/nStatistics.hpp rename to task_06/src/n_statistics.hpp index 93cd8009..59a859b0 100644 --- a/task_06/src/nStatistics.hpp +++ b/task_06/src/n_statistics.hpp @@ -1,27 +1,13 @@ +#include #include -template -int partition(std::vector& v, int low, int high) { - int pivot = v[high]; - int i = low - 1; - - for (int j = low; j <= high - 1; j++) { - if (v[j] <= pivot) { - i++; - std::swap(v[i], v[j]); - } - } - std::swap(v[i + 1], v[high]); - return (i + 1); -} - template int FindNthStatistic(std::vector v, int n) { int low = 0; int high = v.size() - 1; while (low <= high) { - int partitionIndex = partition(v, low, high); + int partitionIndex = Partition(v, low, high); if (partitionIndex == n) { return v[partitionIndex]; } else if (partitionIndex >= n) { diff --git a/task_06/src/test.cpp b/task_06/src/test.cpp index ab7954a7..f276c28e 100644 --- a/task_06/src/test.cpp +++ b/task_06/src/test.cpp @@ -1,7 +1,7 @@ #include -#include "nStatistics.hpp" +#include "n_statistics.hpp" TEST(NStatistic, Simple) { std::vector empty; diff --git a/task_07/src/BinaryTree.hpp b/task_07/src/binary_tree.hpp similarity index 97% rename from task_07/src/BinaryTree.hpp rename to task_07/src/binary_tree.hpp index cd831368..cd3c92aa 100644 --- a/task_07/src/BinaryTree.hpp +++ b/task_07/src/binary_tree.hpp @@ -16,9 +16,9 @@ class BinaryTree { BinaryTree() : root_(nullptr) {} ~BinaryTree() { DestroyTree(root_); } - void insert(int value) { root_ = InsertRecursive(root_, value); } + void Insert(int value) { root_ = InsertRecursive(root_, value); } - bool search(int value) { return SearchRecursive(root_, value); } + bool Search(int value) { return SearchRecursive(root_, value); } std::vector InorderTraversal(); std::vector PreorderTraversal(); diff --git a/task_07/src/test.cpp b/task_07/src/test.cpp index e1660071..68248427 100644 --- a/task_07/src/test.cpp +++ b/task_07/src/test.cpp @@ -1,15 +1,15 @@ #include -#include "BinaryTree.hpp" +#include "binary_tree.hpp" TEST(BinaryTree, Total) { BinaryTree tree; std::vector data = {35, 38, 12, 30, 25, 22, 18, 21, 39, 13, 40}; - for (int i = 0; i < data.size(); i++) tree.insert(data[i]); + for (int i = 0; i < data.size(); i++) tree.Insert(data[i]); for (int i = -40; i <= 40; i++) { bool ans = std::find(data.begin(), data.end(), i) != data.end(); - ASSERT_EQ(tree.search(i), ans); + ASSERT_EQ(tree.Search(i), ans); } std::vector ans_in = {12, 13, 18, 21, 22, 25, 30, 35, 38, 39, 40}; std::vector ans_pre = {25, 18, 12, 13, 22, 21, 35, 30, 38, 39, 40}; diff --git a/task_08/src/HashTable.hpp b/task_08/src/hash_table.hpp similarity index 93% rename from task_08/src/HashTable.hpp rename to task_08/src/hash_table.hpp index f6a8f859..224b99b5 100644 --- a/task_08/src/HashTable.hpp +++ b/task_08/src/hash_table.hpp @@ -60,7 +60,7 @@ Value HashTable::Get(const Key& key) { return pair.second; } } - throw std::logic_error("No such key in table"); + throw std::out_of_range("No such key in table"); } template @@ -88,10 +88,10 @@ size_t HashTable::Size() const { template void HashTable::Rehash() { std::vector>> new_table(table_.size() * 2); - for (const auto& list : table_) { - for (const auto& pair : list) { + for (auto& list : table_) { + for (auto& pair : list) { size_t index = hash_(pair.first) % new_table.size(); - new_table[index].emplace_back(pair); + new_table[index].emplace_back(std::move(pair)); } } table_ = std::move(new_table); diff --git a/task_08/src/test.cpp b/task_08/src/test.cpp index 2af26450..f279d523 100644 --- a/task_08/src/test.cpp +++ b/task_08/src/test.cpp @@ -4,7 +4,7 @@ #include #include -#include "HashTable.hpp" +#include "hash_table.hpp" TEST(HashTable, Simple) { HashTable table; diff --git a/task_09/src/MinCoins.hpp b/task_09/src/min_coins.cpp similarity index 100% rename from task_09/src/MinCoins.hpp rename to task_09/src/min_coins.cpp diff --git a/task_09/src/min_coins.hpp b/task_09/src/min_coins.hpp new file mode 100644 index 00000000..8a771fc7 --- /dev/null +++ b/task_09/src/min_coins.hpp @@ -0,0 +1,5 @@ +#include +#include +#include + +int MinCoins(int amount, const std::vector& coins); \ No newline at end of file diff --git a/task_09/src/test.cpp b/task_09/src/test.cpp index 3b21441b..66f147ef 100644 --- a/task_09/src/test.cpp +++ b/task_09/src/test.cpp @@ -1,7 +1,7 @@ #include -#include "MinCoins.hpp" +#include "min_coins.hpp" TEST(Coins, Simple) { ASSERT_EQ(3, MinCoins(14, (std::vector{1, 2, 5, 10})));