#ifndef UTILS_H #define UTILS_H #include #include #include #include #include #include #include #include #include #include constexpr double pi = 3.14159265358979311600; template void print_array(const T *array, const std::size_t length) { for (std::size_t i = 0; i < length - 1; i++) { std::cout << array[i] << ", "; } std::cout << array[length - 1] << '\n'; } template void print_array(const std::array array) { for (std::size_t i = 0; i < array.size() - 1; i++) { std::cout << array[i] << ", "; } std::cout << array[array.size() - 1] << '\n'; } template void print_vector(const std::vector &vector) { for (std::size_t i = 0; i < vector.size() - 1; i++) { std::cout << vector[i] << ", "; } if (vector.size()) std::cout << vector[vector.size() - 1] << '\n'; } template <> void print_vector( const std::vector> &vector) { for (std::size_t i = 0; i < vector.size() - 1; i++) { std::cout << vector[i].first << ": " << vector[i].second << ", "; } std::cout << vector[vector.size() - 1].first << ": " << vector[vector.size() - 1].second << '\n'; } template void print_map(const std::map Map) { for (const auto &[Key, value] : Map) { std::cout << Key << ": " << value << '\n'; } } std::string readFile(std::string_view file_path) { auto str = std::string{}; auto text = std::string{}; auto iffile = std::ifstream{}; iffile.open(file_path.data()); if (iffile.is_open()) { while (std::getline(iffile, str)) { text += str + '\n'; } } iffile.close(); return text; } template void random_vector(std::vector &vec) { std::mt19937 random_generator(22); std::uniform_int_distribution random_distribution(-10, 10); for (auto &val : vec) { val = random_distribution(random_generator); } } void clear_console() { #if defined _WIN32 system("cls"); #elif defined(__LINUX__) || defined(__gnu_linux__) || defined(__linux__) system("clear"); #elif defined(__APPLE__) system("clear"); #else system("clear"); #endif } #endif /* UTILS_H */