From 5120cc20c27f13188aab58321d721955eed6a2db Mon Sep 17 00:00:00 2001 From: mnerv Date: Fri, 6 Oct 2023 20:42:19 +0200 Subject: [PATCH] test done --- axis/task2.cpp | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++ axis/task3.c | 31 ++++++++++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 axis/task2.cpp create mode 100644 axis/task3.c diff --git a/axis/task2.cpp b/axis/task2.cpp new file mode 100644 index 0000000..fa35d71 --- /dev/null +++ b/axis/task2.cpp @@ -0,0 +1,60 @@ +#include +#include +#include +#include +#include + + +// D: Vector of numbers that show distance. +// C: Vector of numbers that show quantities to be delivered at D[K], where K is the location. +// P: The totalt numbers of product available. +// Delivery start from lowest distance. +// Only delivers when P is the same or greater as C[K]. +// If we should deliver everything then the order left need to be 0 +// else we don't deliver even if we have more product available. +int solution(std::vector &D, std::vector &C, int P) { + assert(D.size() == C.size() && "Vector D and C needs to be the same size"); + std::vector> zip{}; + for (std::size_t i = 0; i < D.size(); ++i) + zip.emplace_back(D[i], C[i]); + std::sort(std::begin(zip), std::end(zip), [](auto const& a, auto const& b) { + return std::get<0>(a) < std::get<0>(b); + }); + + int delivered = 0; + for (std::size_t i = 0; i < zip.size(); ++i) { + auto const CK = std::get<1>(zip[i]); + auto const total = delivered + CK; + std::printf("CK: %d, total: %d\n", CK, total); + if (total >= P) break; + if (P - total > 0 && i == zip.size() - 1) break; + delivered = total; + } + if (delivered == 0) return 0; + return P - delivered; +} + +int main() { + // std::vector D = {5, 11, 1, 3}; + // std::vector C = {6, 1, 3, 2}; + // int P = 7; + // int res = solution(D, C, P); + // std::printf("%d\n", res); + + // { + // std::vector D = {10, 15, 1}; + // std::vector C = {10, 1, 2}; + // int P = 3; + // int res = solution(D, C, P); + // std::printf("test 2: %d\n", res); + // } + + { + std::vector D = {1, 4, 2, 5}; + std::vector C = {4, 9, 2, 3}; + int P = 19; + int res = solution(D, C, P); + std::printf("test 3: %d\n", res); + } + return 0; +} diff --git a/axis/task3.c b/axis/task3.c new file mode 100644 index 0000000..ce74155 --- /dev/null +++ b/axis/task3.c @@ -0,0 +1,31 @@ +#include +#include +#include +#include + +char* solution(int N) { + static const int size = (int)('z' - 'a'); + const int interval = (int)ceil((double)N / (double)size); + + char* str = (char*)malloc((N + 1) * sizeof(char)); + str[N] = '\0'; + int count = 0; + char offset = 0; + for (int i = 0; i < N; ++i) { + str[i] = 'a' + offset; + if (++count >= interval) { + count = 0; + ++offset; + } + } + return str; +} + +int main() { + { + char* str = solution(3); + printf("%s\n", str); + free(str); + } + return 0; +}