From 6f4022d6a0d29cbb9164a7fb03b56e702a668b16 Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Sun, 23 Nov 2025 12:23:34 +0500 Subject: [PATCH 01/40] add: addiction --- 01_week/tasks/addition/addition.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/01_week/tasks/addition/addition.cpp b/01_week/tasks/addition/addition.cpp index 92872802..6b468949 100644 --- a/01_week/tasks/addition/addition.cpp +++ b/01_week/tasks/addition/addition.cpp @@ -3,5 +3,5 @@ int64_t Addition(int a, int b) { - throw std::runtime_error{"Not implemented"}; -} \ No newline at end of file + return static_cast(a) + static_cast(b); +} From dfdc712e7ee429c85bf08c2943f4753b3e60ea09 Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Tue, 25 Nov 2025 22:40:54 +0500 Subject: [PATCH 02/40] add rms --- 01_week/tasks/rms/rms.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/01_week/tasks/rms/rms.cpp b/01_week/tasks/rms/rms.cpp index 6882f0a9..444e2ad9 100644 --- a/01_week/tasks/rms/rms.cpp +++ b/01_week/tasks/rms/rms.cpp @@ -1,7 +1,20 @@ -#include +#include #include +#include +#include +//RMS - среднеквадратическое отклонение. +// Берем массив. Возводим текущее значение в квадрат, суммируем все значения, делим на кол-во элементов и всё под корень. double CalculateRMS(double values[], size_t size) { - throw std::runtime_error{"Not implemented"}; -} \ No newline at end of file + + if (size == 0) return 0.0; //Если вдруг массив нулевой. + + double RMS = 0.0; + for (size_t i = 0; i < size; ++i) { + RMS += values[i] * values[i] ; + + } + return sqrt(RMS / size); +} + From f8f23ce5a02ffa12c48d52dc2e612d42256e30fc Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Tue, 25 Nov 2025 22:48:25 +0500 Subject: [PATCH 03/40] fix rms --- 01_week/tasks/rms/rms.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/01_week/tasks/rms/rms.cpp b/01_week/tasks/rms/rms.cpp index 444e2ad9..f0697e9b 100644 --- a/01_week/tasks/rms/rms.cpp +++ b/01_week/tasks/rms/rms.cpp @@ -9,6 +9,9 @@ double CalculateRMS(double values[], size_t size) { if (size == 0) return 0.0; //Если вдруг массив нулевой. + if (values == nullptr || size == 0) { + return 0.0; // доп проверка на nullptr. Тоже важно оказалось + } double RMS = 0.0; for (size_t i = 0; i < size; ++i) { From 31a1880031571e0067ec6bc695d9b5d046ce592a Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Tue, 25 Nov 2025 22:59:25 +0500 Subject: [PATCH 04/40] fix rms --- 01_week/tasks/rms/rms.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/01_week/tasks/rms/rms.cpp b/01_week/tasks/rms/rms.cpp index f0697e9b..49c504ad 100644 --- a/01_week/tasks/rms/rms.cpp +++ b/01_week/tasks/rms/rms.cpp @@ -10,7 +10,7 @@ double CalculateRMS(double values[], size_t size) { if (size == 0) return 0.0; //Если вдруг массив нулевой. if (values == nullptr || size == 0) { - return 0.0; // доп проверка на nullptr. Тоже важно оказалось + return 0.0; // доп проверка на nullptr. } double RMS = 0.0; From 666960123008d5e06920f3baa08bd0dd4c558fd8 Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Wed, 26 Nov 2025 22:27:50 +0500 Subject: [PATCH 05/40] add quadratic task --- 01_week/tasks/quadratic/quadratic.cpp | 74 ++++++++++++++++++++++++++- 1 file changed, 72 insertions(+), 2 deletions(-) diff --git a/01_week/tasks/quadratic/quadratic.cpp b/01_week/tasks/quadratic/quadratic.cpp index abf7d632..e7721fe7 100644 --- a/01_week/tasks/quadratic/quadratic.cpp +++ b/01_week/tasks/quadratic/quadratic.cpp @@ -1,6 +1,76 @@ #include +#include +#include +#include +// Дискриминант +//---если < 0 то корней нет(Если школьную версию пишем). +//---Если = 0. то два одинаковых корня. Выводим один. например x1 +//---Если > 0 - два корня и выводим их как x1,x2 (ps x1 < x2) +// У нас простой случай функции. ax^2+bx+c=0 +// Из тестов видно что если получается целое в результате то пишем int, а иначе double. Мне нужноо большее статик кастов + void SolveQuadratic(int a, int b, int c) { - throw std::runtime_error{"Not implemented"}; -} \ No newline at end of file + +std::cout << std::setprecision(6); // конструкция для вывода. В целом и без нее всё проходится, но пусть будет по заданию + + //Особые случаи + if (a == 0 && b == 0 && c == 0){ + std::cout << "infinite solutions"; + return; + } + + if (a == 0) { + + if (b == 0) { + std::cout << "no solutions"; + return; } + + else { + double Ans = -static_cast(c) / b; + + if (Ans == static_cast(Ans)) { + std::cout << static_cast(Ans); + } else { + std::cout << Ans; + } + return; + } + } +//Решение + int D = b*b-4*a*c; + +//отриц дискриминант + if(D < 0){ + std::cout << "no solutions"; + return ; + } + + double x1 = (-b - sqrt(D)) / (2.0 * a); + double x2 = (-b + sqrt(D)) / (2.0 * a); + +//Для нулевого дискриминанта + if (D == 0) { + if (x1 == static_cast(x1)) { + std::cout << static_cast(x1); + } else { + std::cout << x1; + } + } else { +//Когда всё хорошо + if (x1 == static_cast(x1)) { + std::cout << static_cast(x1); + } else { + std::cout << x1; + } + + std::cout << " "; + + if (x2 == static_cast(x2)) { + std::cout << static_cast(x2); + } else { + std::cout << x2; + } + } +} From 3c8fa3cbda4e2b2edb057f69748ed1892c5260cf Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Wed, 26 Nov 2025 22:28:57 +0500 Subject: [PATCH 06/40] add print bits task --- 01_week/tasks/print_bits/print_bits.cpp | 57 ++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/01_week/tasks/print_bits/print_bits.cpp b/01_week/tasks/print_bits/print_bits.cpp index a48a43c1..e99928f9 100644 --- a/01_week/tasks/print_bits/print_bits.cpp +++ b/01_week/tasks/print_bits/print_bits.cpp @@ -1,7 +1,60 @@ #include #include +#include +#include +#include +// Если размер 1 числа - 0b0000'0000 +// Если размер 2 - 0b0000'0000'00000'000 +// Если размер 4 - 0b0000'0000'0000'0000'0000'0000'0000'0000 +// Если размер 8 - 0b0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000 +// А если размер другой? например 16? Ограничим возможность представления других размеров, дабы тесты корректно выполнялись + +//Как перевести число в двоичную систему счисления? +//Берется десятичное число, напирмер 42 +// Если число не 10-чное, а например шестнадцатиричное или восьмиричное - приводим к десятичному +// делится на 2 до тех пор пока число не будет равно одному +// Запись остатков от деления ведется в массив +// Переворачивается задом на перед +// Выводится на экран в формате 0b[массив] +//!!!! При значении размера байт $bytes \notin (0, 8]$ функция ничего не выводит. - есть недопонимание. +// как бы cout << ""; - это вывод, но пустой, считается ли это что функция ничего не выводит? +// В тестах видно что есть разделитель между разрядами. Надо добавить + void PrintBits(long long value, size_t bytes) { - throw std::runtime_error{"Not implemented"}; -} + using namespace std; + + if (bytes != 1 && bytes != 2 && bytes != 4 && bytes != 8 ){ + cout << ""; //Просто return почему-то не работает, пока не могу понять почему. А так все тесты пройдены. + } + + const size_t bitValue = bytes * 8; + unsigned long long unsignedValue = 0; + + if (value < 0 && bytes < 8) { + switch (bytes) { + case 1: unsignedValue = static_cast(value); break; + case 2: unsignedValue = static_cast(value); break; + case 4: unsignedValue = static_cast(value); break; + default: unsignedValue = static_cast(value); + } + } else { + unsignedValue = static_cast(value); + } + + cout << "0b"; + + // Идем от старшего бита к младшему + for (int i = bitValue - 1; i >= 0; --i) { + unsigned long long bit = (unsignedValue >> i) & 1; + cout << bit; + + //Без разделителя тесты ругаются, добавим его + if (i > 0 && i % 4 == 0) { + cout << '\''; + } + } + + cout << endl; +} \ No newline at end of file From e2ae3cb1da5e2ca1d81ebc7b3c7d0a787f1ea761 Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Thu, 27 Nov 2025 12:34:57 +0500 Subject: [PATCH 07/40] add checkflags task --- 01_week/tasks/check_flags/check_flags.cpp | 100 +++++++++++++++++++--- 1 file changed, 89 insertions(+), 11 deletions(-) diff --git a/01_week/tasks/check_flags/check_flags.cpp b/01_week/tasks/check_flags/check_flags.cpp index 75e7c652..001306bd 100644 --- a/01_week/tasks/check_flags/check_flags.cpp +++ b/01_week/tasks/check_flags/check_flags.cpp @@ -1,18 +1,96 @@ #include #include - - +#include +/* В stdexcept есть +Класс domain_error Этот класс служит базовым классом для всех исключений, создаваемых для сообщения об ошибке в домене. +Класс invalid_argument Этот класс служит базовым классом для всех исключений, создаваемых для сообщения о недопустимом аргументе. +Класс length_error Этот класс служит базовым для всех исключений, создаваемых для сообщения о попытке создания слишком длинного объекта. +Класс logic_error Этот класс служит базовым для всех исключений, создаваемых для сообщения об ошибках, которые можно обнаружить до выполнения программы, таких как нарушение логических предварительных условий. +Класс out_of_range Этот класс служит базовым для всех исключений, создаваемых для сообщения о том, что аргумент выходит за допустимый диапазон. +Класс overflow_error Этот класс служит базовым для всех исключений, создаваемых для сообщения об арифметическом переполнении. +Класс range_error Этот класс служит базовым для всех исключений, создаваемых для сообщения об ошибке в диапазоне. +Класс runtime_error Этот класс служит базовым для всех исключений, создаваемых для сообщения об ошибках, которые можно обнаружить только при выполнении программы. +Класс underflow_error Этот класс служит базовым для всех исключений, создаваемых для сообщения об арифметической неточности. +*/ enum class CheckFlags : uint8_t { - NONE = 0, - TIME = (1 << 0), - DATE = (1 << 1), - USER = (1 << 2), - CERT = (1 << 3), - KEYS = (1 << 4), - DEST = (1 << 5), - ALL = TIME | DATE | USER | CERT | KEYS | DEST + NONE = 0, // 0 0000000 + TIME = (1 << 0), // 1 0000001 + DATE = (1 << 1), // 2 0000010 + USER = (1 << 2), // 3 0000100 + CERT = (1 << 3), // 4 0001000 + KEYS = (1 << 4), // 5 0010000 + DEST = (1 << 5), // 6 0100000 + ALL = TIME | DATE | USER | CERT | KEYS | DEST // 7 1000000 }; +// 7 6 5 4 3 2 1 0 номера бит +// 128 64 32 16 8 4 2 1 степени дваойки , а вообще будет такт 127 макс число, тк 0 еще есть +/* +Берется битовая маска. напирмер 01010010. это значит что есть TIME, CERT, DEST + +// Сначала надо сделать преобразование в число +// Если число вдруг больше - выйти из проги +// Если равно нулю - вывести пустые скобки (флаг none) +// Проверяем каждый класс, если есть совпадение - выводим его +*/ void PrintCheckFlags(CheckFlags flags) { - throw std::runtime_error{"Not implemented"}; + + int flagValue = static_cast(flags) ; + bool isFirst = true; //Проверять первый элемент или нет будем так + + + if (flagValue > static_cast(CheckFlags::ALL)) return; + + if (flagValue == 0) { + std::cout << "[]"; + return; + } + +//Прошла жесткая проверка + std::cout << "["; + + if (flagValue & static_cast(CheckFlags::TIME)) { + if (!isFirst) {std::cout << ",";} + std::cout << "TIME"; + isFirst = false; + } + + + if (flagValue & static_cast(CheckFlags::DATE)) { + if (!isFirst) {std::cout << ",";} + std::cout << "DATE"; + isFirst = false; + } + + + if (flagValue & static_cast(CheckFlags::USER)) { + if (!isFirst) {std::cout << ",";} + std::cout << "USER"; + isFirst = false; + } + + + if (flagValue & static_cast(CheckFlags::CERT)) { + if (!isFirst) {std::cout << ",";} + std::cout << "CERT"; + isFirst = false; + } + + + if (flagValue & static_cast(CheckFlags::KEYS)) { + if (!isFirst) {std::cout << ",";} + std::cout << "KEYS"; + isFirst = false; + } + + if (flagValue & static_cast(CheckFlags::DEST)) { + if (!isFirst) {std::cout << ",";} + std::cout << "DEST"; + isFirst = false; + } + + + + std::cout << "]"; + } From e77dc8483dea56f9c37cd17d6bd20cd9c51e4719 Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Thu, 27 Nov 2025 13:21:07 +0500 Subject: [PATCH 08/40] add charChanger task --- 01_week/tasks/char_changer/char_changer.cpp | 93 ++++++++++++++++++++- 1 file changed, 92 insertions(+), 1 deletion(-) diff --git a/01_week/tasks/char_changer/char_changer.cpp b/01_week/tasks/char_changer/char_changer.cpp index 3a7344d9..39ef54d7 100644 --- a/01_week/tasks/char_changer/char_changer.cpp +++ b/01_week/tasks/char_changer/char_changer.cpp @@ -1,7 +1,98 @@ #include #include +#include // для is функций из https://en.cppreference.com/w/cpp/string/byte.html +#include +#include +// Пересчёт символов с выводом их кол-ва - есть . C>10 = C0 +// Замена непонятных символов (а не букв) на '_' - есть +// замена цифр на звездочки - есть +//22 заменились на звездочки и посчитались, вывелось *2 - есть +// Пробел заменился на ',' если передать в функцию чем заменяем - есть +//err: Проблема раннего перевода в верхний регистр. мб сделать поднятие в верхний регистр после того как повторяющиеся буквы заменились на букву+цифру повторения - есть size_t CharChanger(char array[], size_t size, char delimiter = ' ') { - throw std::runtime_error{"Not implemented"}; + if (size == 0) return 0; + + size_t outputArray = 0; + size_t i = 0; + + while (i < size && array[i] != '\0') { + char currentSymb = array[i]; + + //Смотрим пробелы + if (currentSymb == ' ') { + size_t spaceCounter = 1; + while (i + spaceCounter < size && array[i + spaceCounter] == ' ') { + spaceCounter++; + } + if (outputArray < size) { + array[outputArray++] = delimiter; + } + i += spaceCounter; + continue; + } + + //Для остальных символов + size_t sameSymbCounter = 1; + size_t nextSymb = i + 1; + + while (nextSymb < size && array[nextSymb] != '\0') { + if (array[nextSymb] == currentSymb) { + sameSymbCounter++; + nextSymb++; + } else { + break; + } + } + + //Преобразование символов + char transformed = '0'; + if (std::isdigit(currentSymb)) { + transformed = '*'; + } else if (std::islower(currentSymb)) { + transformed = std::toupper(currentSymb); + } else if (std::isupper(currentSymb)) { + transformed = currentSymb; + } else { + transformed = '_'; + } + + //Перепись великого пассажа + if (outputArray < size) { + array[outputArray++] = transformed; + } + + if (sameSymbCounter > 1) { + if (sameSymbCounter >= 10) { + if (outputArray < size) { + array[outputArray++] = '0'; + } + } else { + if (outputArray < size) { + array[outputArray++] = '0' + sameSymbCounter; + } + } + } + + i = nextSymb; // Для перехода к след итерации. + } + + if (outputArray < size) { + array[outputArray] = '\0'; + } else if (size > 0) { + array[size - 1] = '\0'; + outputArray = size - 1; + } + + return outputArray; } +// //Для отладки. И проверки своих выводов +// int main() { + +// char array[] = "aAaAaA_234_ssssDdd*$$ 3333a"; +// size_t size = 28; + +// CharChanger(array, size, ','); +// std::cout << array << std::endl; +// } From a0fa6ecc8096642333ebc37721c5f048fb38b10f Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Fri, 28 Nov 2025 14:58:56 +0500 Subject: [PATCH 09/40] add length_lit task --- 01_week/tasks/length_lit/length_lit.cpp | 97 +++++++++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/01_week/tasks/length_lit/length_lit.cpp b/01_week/tasks/length_lit/length_lit.cpp index e69de29b..be4f10b8 100644 --- a/01_week/tasks/length_lit/length_lit.cpp +++ b/01_week/tasks/length_lit/length_lit.cpp @@ -0,0 +1,97 @@ +#include +// Поскольку литералы - это константы +// Создание пользовательского литерала начинается с обозначения constexpr - Значение будет констатной и будет вычислено на этапе компиляции +// (по крайней мере компилятор будет пытаться это сделать:) +// explicit - запрет на неявный вызов. Если ожидается какой-то литерал, но он не найден - выдаст ошибку, мол я не нашел, не знаю чё делать +// Далее идет тип данных, который будет возвращать наш литерал +// Далее идет operator"" и после него название литерала _name +// Далее в скобках пишется принимаемое значение с определенным типом данных + +// необходимо создать 11 пользовательских литератов +// _ft_to_m +//_ft_to_cm +//_ft_to_in +//_in_to_m +//_in_to_cm +//_in_to_ft +//_m_to_ft +//_m_to_in +//_m_to_cm +//_cm_to_m +//_cm_to_ft +//_cm_to_in +// Прописать их логику подобным образом. необходимо правильно определить точность. Размер принимаемых значений. +// Причем все преобразования возвращают тип `double`. +/* +Параметры типов должны быть только такие: +const char +unsigned long long int // для целочисленного, но и то оно только unsigned типа +long double // просто double не проканает +char +wchar_t +char16_t +char32_t +const char'*', std::size_t +const wchar_t'*', std::size_t +const char16_t'*', std::size_t +const char32_t'*', std::size_t +*/ + +//1 фут = 0.3048 метра +//1 дюйм = 2.54 см = 0.0254м +// Только к 22 годам понял, что футы - это типо ноги. 30см то примерно стопа:) +//-----------------------------Футы В куда угодно------------------------ +constexpr long double operator""_ft_to_m(long double val) { + + return static_cast(val * 0.3048); +} + +constexpr long double operator""_ft_to_cm(long double val) { + return static_cast(val * 30.48); +} + +constexpr long double operator""_ft_to_in(long double val) { + return static_cast(val / 0.083333333); +} + +//-----------------------------Дюймы В куда угодно------------------------ + +constexpr long double operator""_in_to_m(long double val) { + return static_cast(val * 0.0254); +} + +constexpr long double operator""_in_to_cm(long double val) { + return static_cast(val * 2.54); +} + +constexpr long double operator""_in_to_ft(long double val) { + return static_cast(val / 12); +} + +//-----------------------------Метры В куда угодно------------------------ + +constexpr long double operator""_m_to_ft(long double val) { + return static_cast(val / 0.3048); +} + +constexpr long double operator""_m_to_in(long double val) { + return static_cast(val / 0.0254); +} + +constexpr long double operator""_m_to_cm(long double val) { + return static_cast(val * 100); +} + +//----------------------Сантиметры В куда угодно--------------------------- + +constexpr long double operator""_cm_to_m(long double val) { + return static_cast(val / 100); +} + +constexpr long double operator""_cm_to_ft(long double val) { + return static_cast(val / 30.48); +} + +constexpr long double operator""_cm_to_in(long double val) { + return static_cast(val / 2.54); +} From 1e062a733eb5e6de6ee81fab4a4d75c709629e7c Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Fri, 5 Dec 2025 21:01:12 +0500 Subject: [PATCH 10/40] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20func=5Farray?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02_week/tasks/func_array/func_array.cpp | 38 +++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/02_week/tasks/func_array/func_array.cpp b/02_week/tasks/func_array/func_array.cpp index b327e68d..7bfee8c0 100644 --- a/02_week/tasks/func_array/func_array.cpp +++ b/02_week/tasks/func_array/func_array.cpp @@ -1,6 +1,40 @@ #include +#include +/* +0.1 - функции операций не должы имодифицировать исходные числа +1 - функция должна принять два числа, массив функций с опред.операциями, размер этого массива +2 - В зависимости от операции в функции будет разный результат +3 - нужно выдать 0.0 если что-то не то передали в функцию либо нет массива с операциями +4 - Можно пользоваться контейнерами +5- Результат является суммой результатов всех переданных в основную функцию действий над числами +// Создадим цикл который пройдется по всему переданному массиву функций, и сложит все результаты в этот момент -double ApplyOperations(double a, double b /* other arguments */) { - throw std::runtime_error{"Not implemented"}; + double(*)(double, double) Закрепим материал лекции. Читаем справа налево. + Функция принимающая два аргумента дабл -> указатель -> дабл. +//Для удобства создадим алиас. Некий пользовательный тип. указатель на функцию, которая принимает два double и возвращает doublе. Запутаешься так писать постоянно, + А прикол будет если бы этих конструкций было много в коде, попробуй ка все заменить. Вообще тяжко. + а так легко тут изменил да и и пошел пить чай + +*/ + +using funcType = double(*)(double, double); + +double ApplyOperations(double a, double b, funcType* arrayOp, size_t size) { + if (arrayOp == nullptr || size == 0) return 0.0; + + double resultSum = 0.0; + +for (size_t i = 0; i < size; ++i) { + funcType CurrentFunc = arrayOp[i]; + + if (CurrentFunc == nullptr) { + continue; + } + + double result = CurrentFunc(a, b); + resultSum += result; + } + + return resultSum; } \ No newline at end of file From c73866ebfa362bca599cebc9e3137def794200ae Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Fri, 5 Dec 2025 21:01:40 +0500 Subject: [PATCH 11/40] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20swap=5Fptr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02_week/tasks/swap_ptr/swap_ptr.cpp | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/02_week/tasks/swap_ptr/swap_ptr.cpp b/02_week/tasks/swap_ptr/swap_ptr.cpp index 93db625d..e7216bb1 100644 --- a/02_week/tasks/swap_ptr/swap_ptr.cpp +++ b/02_week/tasks/swap_ptr/swap_ptr.cpp @@ -1,6 +1,24 @@ #include -void SwapPtr(/* write arguments here */) { - throw std::runtime_error{"Not implemented"}; +// В тестах есть три варианта каким могут быть аргументы 1-неконстартные указатели, 2 - константные указатели, 3 - указатели на указатели +// Тогда воспользуемся перегрузкой функций как из лекций. У нас тогда будет три функции одинаковые по содержанию и разные +// принимаемому значению. Тесты сами выберут чё им надо) + +void SwapPtr(int*& a, int*& b) { + int* tmp = a; + a = b; + b = tmp; +} + +void SwapPtr(const int*& a, const int*& b) { + const int* tmp = a; + a = b; + b = tmp; +} + +void SwapPtr(int& a, int& b) { + int** tmp = a; + a = b; + b = tmp; } \ No newline at end of file From 09ea14a442678d24495246b7ea5964389d5021cd Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Fri, 5 Dec 2025 21:06:06 +0500 Subject: [PATCH 12/40] fixed swap_ptr --- 02_week/tasks/swap_ptr/swap_ptr.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/02_week/tasks/swap_ptr/swap_ptr.cpp b/02_week/tasks/swap_ptr/swap_ptr.cpp index e7216bb1..40a3e292 100644 --- a/02_week/tasks/swap_ptr/swap_ptr.cpp +++ b/02_week/tasks/swap_ptr/swap_ptr.cpp @@ -11,13 +11,15 @@ void SwapPtr(int*& a, int*& b) { b = tmp; } + void SwapPtr(const int*& a, const int*& b) { const int* tmp = a; a = b; b = tmp; } -void SwapPtr(int& a, int& b) { + +void SwapPtr(int**& a, int**& b) { int** tmp = a; a = b; b = tmp; From 12777b467768ab4865a75fc464fb6936fb4f127b Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Sat, 6 Dec 2025 15:41:57 +0500 Subject: [PATCH 13/40] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20longest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02_week/tasks/longest/longest.cpp | 64 ++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 2 deletions(-) diff --git a/02_week/tasks/longest/longest.cpp b/02_week/tasks/longest/longest.cpp index 04b3c354..39c68d1a 100644 --- a/02_week/tasks/longest/longest.cpp +++ b/02_week/tasks/longest/longest.cpp @@ -1,6 +1,66 @@ #include +#include +/* Функция должна находить наибольшую подпоследовательсть + 1- функция принимает два указателя ( на начало и на конец массива символов ) + 2- возвращает указатель на начало самой длинной подпоследовательности + 3- Длина подпоследовательности возвращается через третий аргумент функции. + 4- Указатели соответствуют диапазону $[begin, end)$. + // Если передано что-то не то, то возращается нулевой указатель nullptr + // Если подпоследовательности наибольшие одинаковой длины - возвращается первая +*/ +// .data() понадобится для указателя на начало последовательности. +// Из тестов видно, что например СССс - это не четыре. Регистр важен. +// С цифрами тоже работаем. +// Особенность: .append() и .push_back(). Оба добавляют что-то в конец, но .append может сразу несколько элементов добавить, а .push_back только один +// .append() в основном используется для пуша строк. по одной букве как-то долго, не так ли?) +// У нас встречаются как числа так и символы. если будем возвращать чисто int* или чисто char* то странно как-то. Надо иметь возможность и то и то. +// Тогда видимо придется перегружать функцию -/* return_type */ FindLongestSubsequence(/* ptr_type */ begin, /* ptr_type */ end, /* type */ count) { - throw std::runtime_error{"Not implemented"}; +const char* FindLongestSubsequence(const char* begin, const char* end, size_t& count) + { + if (begin == nullptr || end == nullptr || begin >= end) { + count = 0; return nullptr; + } + const char* best_begin = begin; + size_t maxLength = 1; + const char* current_begin = begin; + size_t currentLength = 1; + + for (const char* ptr = begin + 1; ptr != end; ++ptr) { + + if(*ptr == *(ptr - 1)) ++currentLength; + else { // если символ сменился + + if(currentLength > maxLength){ + maxLength = currentLength; + best_begin = current_begin; + + } + current_begin = ptr; + currentLength = 1; + } + } + + if(currentLength > maxLength){ + maxLength = currentLength; + best_begin = current_begin; + } + count = maxLength; + return best_begin; +} +// Вообще была идея изначально попробовать использовать template +// Это по сути было бы приятнее, но опять же тогда появился бы вопрос. Другой разработчик если бы начал читать код, не очевидно было бы +// Функция меняет что-то или не меняет? Она принимает констатны или нет? Пришлось бы внимателньо читать код и бегло уже не пройтись по коду. +// А как я знаю уже из опыта, любая сущность должна явно отражать что она делает исходя из названия и параметров +// Перегрузка +char* FindLongestSubsequence(char* begin, char* end, size_t& count) { + // Вызвав константную версию, приведем указатели к const + const char* result = FindLongestSubsequence( + static_cast(begin), + static_cast(end), + count + ); + // А затем снимаем констатность дабы всё прошло норм + return const_cast(result); } From 4a80c995d9a66b7c21b189578debb020e0a5a401 Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Sun, 7 Dec 2025 21:25:42 +0500 Subject: [PATCH 14/40] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20last=5Fof=5Fus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02_week/tasks/last_of_us/last_of_us.cpp | 30 +++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/02_week/tasks/last_of_us/last_of_us.cpp b/02_week/tasks/last_of_us/last_of_us.cpp index c7bf1a25..5d3c32a6 100644 --- a/02_week/tasks/last_of_us/last_of_us.cpp +++ b/02_week/tasks/last_of_us/last_of_us.cpp @@ -1,6 +1,32 @@ #include +/* +необходимо написать функцию которая будет находить последний элемент, удовлетворяющий функции-предикату +Функция-предикат — это функция, которая проверяет условие и всегда возвращает логическое значение true или false +//Функция принимает три указателя - на начало и конец целочисленного массива, а также на функцию предикат +// Если элемент не найден, то должен вернуться указатель на последний элемент (end) +//Указатели соответствуют диапазону $[begin, end)$. +1- Раз массив целочисленный. возвращать будем int +2 - Указатель на функцию предикат должен возвращать bool, принимая int +Что-то вроде bool(*)(int). Думаю сделать псевдоним для этой конструкции чтобы код стало приятнее читать, не знаю насчёт явности, но вроде явно. +3- теперь надо определиться как идти по массиву. С начала или с конца? - по сути с конца было бы быстрее тк мы же в конце ищем элемент(будет если не О(1), то что-то близкое), +но опять же пролистывать с начала мне более естественно и проще по пониманию(но тут всегд О(n)). +Но всё-таки наверно надо попробовать с конца. Но тут тогда появится риск что (end - 1) не всегда может быть +правильным. Иначе говоря, мне надо придумать проверку чтобы это условие выполнялось перед манипуляциями с циклом. +*/ +using PredicatePtr = bool(*)(int); +const int* FindLastElement(const int* begin,const int* end, PredicatePtr predicate) { + if (begin == nullptr + || end == nullptr + || predicate == nullptr + || begin == end + || begin > end) return end; -/* return_type */ FindLastElement(/* ptr_type */ begin, /* ptr_type */ end, /* func_type */ predicate) { - throw std::runtime_error{"Not implemented"}; +for (const int* ptr = end - 1; ptr >= begin; --ptr) { + if (predicate(*ptr)) { + return ptr; + } +} + +return end; } \ No newline at end of file From 6779e14937c5a41090e0905777e69b2269e4e998 Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Mon, 8 Dec 2025 18:30:22 +0500 Subject: [PATCH 15/40] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20little=5Fbig.=20uno=20uno=20dos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02_week/tasks/little_big/little_big.cpp | 62 ++++++++++++++++++++++--- 1 file changed, 56 insertions(+), 6 deletions(-) diff --git a/02_week/tasks/little_big/little_big.cpp b/02_week/tasks/little_big/little_big.cpp index abe24379..d45a33bb 100644 --- a/02_week/tasks/little_big/little_big.cpp +++ b/02_week/tasks/little_big/little_big.cpp @@ -1,10 +1,60 @@ #include - - -void PrintMemory(int /* write arguments here */) { - throw std::runtime_error{"Not implemented"}; +#include +/* +//Две функции: +Одна для интов +Другая для дабл +//Принимает число возвращает число в шестрадцатиричной форме в формтате 0xYYYY; +//Нельзя использовать Сstyle Cast и контейнеры +В функцию передается вторым аргументом флаг который по запросу перевернет представление числа. Слева направо или справа налево (BE или LE). По умолчанию не инвертируем +// Для преобразования цифры в число сделаем массив всех чисел и букв для 16-ричной системы счисления +// Затем сделаем цифры символами чтобы вывести их на экран +*/ +void PrintMemory(int number, bool reverseFlag = false) +{ + const unsigned char* bytes = reinterpret_cast(&number); + const char hexChars[] = "0123456789ABCDEF"; + + std::cout << "0x"; + + if (!reverseFlag) { + for (int i = 0; i < sizeof(number); ++i) { + unsigned char currentByte = bytes[i]; + std::cout << hexChars[currentByte >> 4]; + std::cout << hexChars[currentByte & 0x0F]; + } + } else { + // С реверсом (BE) + for (int i = sizeof(number) - 1; i >= 0; --i) { + unsigned char currentByte = bytes[i]; + std::cout << hexChars[currentByte >> 4]; + std::cout << hexChars[currentByte & 0x0F]; + } + } + std::cout << std::endl; } -void PrintMemory(double /* write arguments here */) { - throw std::runtime_error{"Not implemented"}; + +void PrintMemory(double number, bool reverseFlag = false) +{ + const unsigned char* bytes = reinterpret_cast(&number); + const char hexChars[] = "0123456789ABCDEF"; + + std::cout << "0x"; + const int total_bytes = sizeof(double); + + if (!reverseFlag) { + for (int i = 0; i < total_bytes; ++i) { + unsigned char currentByte = bytes[i]; + std::cout << hexChars[currentByte >> 4]; + std::cout << hexChars[currentByte & 0x0F]; + } + } else { + for (int i = total_bytes - 1; i >= 0; --i) { + unsigned char currentByte = bytes[i]; + std::cout << hexChars[currentByte >> 4]; + std::cout << hexChars[currentByte & 0x0F]; + } + } + std::cout << std::endl; } \ No newline at end of file From 1f15f48190dcd612e2c59556ef54db11973f4533 Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Mon, 8 Dec 2025 18:43:12 +0500 Subject: [PATCH 16/40] try fix little_big --- 02_week/tasks/little_big/little_big.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/02_week/tasks/little_big/little_big.cpp b/02_week/tasks/little_big/little_big.cpp index d45a33bb..da664eae 100644 --- a/02_week/tasks/little_big/little_big.cpp +++ b/02_week/tasks/little_big/little_big.cpp @@ -9,6 +9,8 @@ В функцию передается вторым аргументом флаг который по запросу перевернет представление числа. Слева направо или справа налево (BE или LE). По умолчанию не инвертируем // Для преобразования цифры в число сделаем массив всех чисел и букв для 16-ричной системы счисления // Затем сделаем цифры символами чтобы вывести их на экран +// Тесты прошли, однако настроенный CI в гитхабе заругался на попытку сравнения знакового и беззнакового типа в цикле + */ void PrintMemory(int number, bool reverseFlag = false) { @@ -16,16 +18,17 @@ void PrintMemory(int number, bool reverseFlag = false) const char hexChars[] = "0123456789ABCDEF"; std::cout << "0x"; + const int size = static_cast(sizeof(number)); if (!reverseFlag) { - for (int i = 0; i < sizeof(number); ++i) { + for (int i = 0; i < size; ++i) { unsigned char currentByte = bytes[i]; std::cout << hexChars[currentByte >> 4]; std::cout << hexChars[currentByte & 0x0F]; } } else { // С реверсом (BE) - for (int i = sizeof(number) - 1; i >= 0; --i) { + for (int i = size - 1; i >= 0; --i) { unsigned char currentByte = bytes[i]; std::cout << hexChars[currentByte >> 4]; std::cout << hexChars[currentByte & 0x0F]; @@ -41,16 +44,16 @@ void PrintMemory(double number, bool reverseFlag = false) const char hexChars[] = "0123456789ABCDEF"; std::cout << "0x"; - const int total_bytes = sizeof(double); + const int size = static_cast(sizeof(number)); if (!reverseFlag) { - for (int i = 0; i < total_bytes; ++i) { + for (int i = 0; i < size; ++i) { unsigned char currentByte = bytes[i]; std::cout << hexChars[currentByte >> 4]; std::cout << hexChars[currentByte & 0x0F]; } } else { - for (int i = total_bytes - 1; i >= 0; --i) { + for (int i = size - 1; i >= 0; --i) { unsigned char currentByte = bytes[i]; std::cout << hexChars[currentByte >> 4]; std::cout << hexChars[currentByte & 0x0F]; From 46bbbc6caba556ad9e17618dd550bdf825992154 Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Tue, 9 Dec 2025 18:16:04 +0500 Subject: [PATCH 17/40] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20pretty=5Farray?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02_week/tasks/pretty_array/pretty_array.cpp | 81 ++++++++++++++++++++- 1 file changed, 77 insertions(+), 4 deletions(-) diff --git a/02_week/tasks/pretty_array/pretty_array.cpp b/02_week/tasks/pretty_array/pretty_array.cpp index 48eab341..5570e973 100644 --- a/02_week/tasks/pretty_array/pretty_array.cpp +++ b/02_week/tasks/pretty_array/pretty_array.cpp @@ -1,6 +1,79 @@ #include - - -void PrintArray(/* write arguments here */) { - throw std::runtime_error{"Not implemented"}; +#include +#include +/* +Функция выводит целочисленный массив. +Принимает указатель на начало, конец массива ; также принимает ограничитель. 0 - нет ограничения, n - значит есть ограничение. +Причем задается кол-во элементов, если установлен ограничитель на n элементов, то а массив имеет n+m, то после n элементов +Будет через запятую троеточие, а в новой строке отступив пробел будет выводиться продолжение. +// Массив выводится в таком виде [, , , , ] +// Также из прошлого задания little big будет реализован разворот массива, однако здесь это задается не флагом, а условием: +указатель на end < указателя begin +// немного пробегусь по реализации: +1- Нужна проверка что указатели есть и массив вообще не нулевой. Проверяем nullptr +2- Проверка указателей. Как будет строиться массив, задом наперед или в прямом направлении +3- цикл for, который принимает элементы массива, и выкидывает их в cout в красивой форме [1, 2, 3, 4] +4- Условие цикла. Нужен счётчик при котором если наш элемент по счёту > чем ограничитель, мы печатаем ... +а затем в новой строке продолжаем перечисление элементов +5- вывод запятой не должен быть педед ] +//Было много недопонимания при продолжении печати после переноса, было принято добавить еще один аргумент в функию +некий флаг, который бы помог отличить функцию начальную, от функции которая вызвана рекурсивно. Так как тесты требуют что если задан ограничитель +то он будет всегда ограничивать одно и то же ко-во элементов, а массив может быть большим и переносов строк может быть не один. +// Будем пользоваться вкусными методами от vector. Так проще для восприятия. +*/ +void PrintArray(const int* begin, const int* end, size_t Limiter = 0, bool firstCall = true) +{ + if (begin == nullptr || end == nullptr) { + std::cout << "[]" << std::endl; + return; + } + // обратный порядок + if (begin > end) { + std::vector reversedArray = {}; + for (const int* currentItemPtr = begin; currentItemPtr != end; --currentItemPtr) { + reversedArray.push_back(*currentItemPtr); + } + +//Теперь вызываем для вектора (прямой порядок) + if (reversedArray.empty()) { + if (firstCall) std::cout << "[]" << std::endl; + else std::cout << "]" << std::endl; + } else { + PrintArray(reversedArray.data(), reversedArray.data() + reversedArray.size(), Limiter, firstCall); + } + return; + } + + // Прямой порядок (begin <= end) + if (begin == end) { + if (firstCall) std::cout << "[]" << std::endl; + else std::cout << "]" << std::endl; + return; + } + + if (firstCall) std::cout << "["; + + size_t remaining = end - begin; + + if (Limiter == 0 || Limiter >= remaining) { + // Без ограничения + for (const int* currentItemPtr = begin; currentItemPtr != end; ++currentItemPtr) { + if (currentItemPtr != begin) std::cout << ", "; + std::cout << *currentItemPtr; + } + std::cout << "]" << std::endl; + } else { + // с ограничителем + for (size_t i = 0; i < Limiter; ++i) { + if (i > 0) std::cout << ", "; + std::cout << begin[i]; + } + + if (begin + Limiter != end) { + std::cout << ", ...\n "; + PrintArray(begin + Limiter, end, Limiter, false); + } else { + std::cout << "]" << std::endl; + } + } } \ No newline at end of file From 03132beed33bffd798ce359db2f91e2ff694b283 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 15 Dec 2025 17:34:11 +0000 Subject: [PATCH 18/40] Auto-sync: 2025-12-15 17:34 --- .github/workflows/testing.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 3309c63c..7b7c319b 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -26,9 +26,10 @@ jobs: echo "Changed files:" echo "$changed_files" - + tasks=("addition" "rms" "print_bits" "check_flags" "length_lit" "quadratic" "char_changer" - "swap_ptr" "func_array" "longest" "last_of_us" "little_big" "pretty_array") + "swap_ptr" "func_array" "longest" "last_of_us" "little_big" "pretty_array" + "data_stats" "unique" "range" "minmax" "find_all" "os_overload" "easy_compare" "filter" "enum_operators") declare -i passed_count=0 declare -i failed_count=0 From b77ab445e662d88c84fe825758c0edafc1f4790e Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 15 Dec 2025 18:11:26 +0000 Subject: [PATCH 19/40] Auto-sync: 2025-12-15 18:11 --- .github/workflows/testing_week_01.yml | 95 +++ .github/workflows/testing_week_02.yml | 94 +++ .github/workflows/testing_week_03.yml | 100 +++ 04_week/04_class.md | 902 ++++++++++++++++++++++++++ 04_week/04_class.pdf | Bin 0 -> 251118 bytes 04_week/CMakeLists.txt | 15 + 6 files changed, 1206 insertions(+) create mode 100644 .github/workflows/testing_week_01.yml create mode 100644 .github/workflows/testing_week_02.yml create mode 100644 .github/workflows/testing_week_03.yml create mode 100644 04_week/04_class.md create mode 100644 04_week/04_class.pdf create mode 100644 04_week/CMakeLists.txt diff --git a/.github/workflows/testing_week_01.yml b/.github/workflows/testing_week_01.yml new file mode 100644 index 00000000..3ece11af --- /dev/null +++ b/.github/workflows/testing_week_01.yml @@ -0,0 +1,95 @@ +name: Testing Tasks Week 01 + +on: + workflow_dispatch: + inputs: + tasks: + description: 'Select tasks to test' + required: true + type: choice + default: 'all' + options: + - all + - addition + - rms + - print_bits + - check_flags + - length_lit + - quadratic + - char_changer + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install compiler and CMake + run: sudo apt install -y cmake build-essential g++-14 libgtest-dev libgmock-dev + + - name: Configure project + run: cmake -B build + + - name: Determine tasks to run + id: get-tasks + run: | + if [ "${{ github.event.inputs.tasks }}" = "all" ]; then + # Find all tasks + TASKS=() + for dir in 01_week/tasks/*/; do + task=$(basename "$dir") + TASKS+=("$task") + done + echo "tasks=${TASKS[*]}" >> $GITHUB_OUTPUT + else + # Используем указанную задачу + echo "tasks=${{ github.event.inputs.tasks }}" >> $GITHUB_OUTPUT + fi + + - name: Build and run tests for selected tasks + run: | + + IFS=' ' read -ra tasks <<< "${{ steps.get-tasks.outputs.tasks }}" + + declare -i passed_count=0 + declare -i failed_count=0 + declare -i task_count=0 + + echo "=== Starting tests for selected tasks ===" + + for task in "${tasks[@]}"; do + task_count+=1 + echo "=== Processing $task ===" + + if cmake --build build --target test_$task; then + echo "✅ test_$task built successfully" + + if ./build/tasks/test_$task; then + echo "✅ test_$task PASSED" + passed_count+=1 + else + echo "❌ test_$task FAILED" + failed_count+=1 + fi + else + echo "❌ test_$task build FAILED" + failed_count+=1 + fi + done + + echo "=== Test Results Summary ===" + echo "Total tasks in list: ${#tasks[@]}" + echo "Processed: $task_count" + echo "✅ Passed: $passed_count" + echo "❌ Failed: $failed_count" + + if [ $failed_count -gt 0 ]; then + echo "❌ Some tasks failed!" + exit 1 + elif [ $task_count -eq 0 ]; then + echo "No tasks were processed (no changes)" + exit 0 + else + echo "✅ All processed tasks passed!" + exit 0 + fi \ No newline at end of file diff --git a/.github/workflows/testing_week_02.yml b/.github/workflows/testing_week_02.yml new file mode 100644 index 00000000..dc37cec9 --- /dev/null +++ b/.github/workflows/testing_week_02.yml @@ -0,0 +1,94 @@ +name: Testing Tasks Week 02 + +on: + workflow_dispatch: + inputs: + tasks: + description: 'Select tasks to test' + required: true + type: choice + default: 'all' + options: + - all + - swap_ptr + - func_array + - longest + - last_of_us + - little_big + - pretty_array + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install compiler and CMake + run: sudo apt install -y cmake build-essential g++-14 libgtest-dev libgmock-dev + + - name: Configure project + run: cmake -B build + + - name: Determine tasks to run + id: get-tasks + run: | + if [ "${{ github.event.inputs.tasks }}" = "all" ]; then + # Find all tasks + TASKS=() + for dir in 02_week/tasks/*/; do + task=$(basename "$dir") + TASKS+=("$task") + done + echo "tasks=${TASKS[*]}" >> $GITHUB_OUTPUT + else + # Используем указанную задачу + echo "tasks=${{ github.event.inputs.tasks }}" >> $GITHUB_OUTPUT + fi + + - name: Build and run tests for selected tasks + run: | + + IFS=' ' read -ra tasks <<< "${{ steps.get-tasks.outputs.tasks }}" + + declare -i passed_count=0 + declare -i failed_count=0 + declare -i task_count=0 + + echo "=== Starting tests for selected tasks ===" + + for task in "${tasks[@]}"; do + task_count+=1 + echo "=== Processing $task ===" + + if cmake --build build --target test_$task; then + echo "✅ test_$task built successfully" + + if ./build/tasks/test_$task; then + echo "✅ test_$task PASSED" + passed_count+=1 + else + echo "❌ test_$task FAILED" + failed_count+=1 + fi + else + echo "❌ test_$task build FAILED" + failed_count+=1 + fi + done + + echo "=== Test Results Summary ===" + echo "Total tasks in list: ${#tasks[@]}" + echo "Processed: $task_count" + echo "✅ Passed: $passed_count" + echo "❌ Failed: $failed_count" + + if [ $failed_count -gt 0 ]; then + echo "❌ Some tasks failed!" + exit 1 + elif [ $task_count -eq 0 ]; then + echo "No tasks were processed (no changes)" + exit 0 + else + echo "✅ All processed tasks passed!" + exit 0 + fi \ No newline at end of file diff --git a/.github/workflows/testing_week_03.yml b/.github/workflows/testing_week_03.yml new file mode 100644 index 00000000..d4a2ba75 --- /dev/null +++ b/.github/workflows/testing_week_03.yml @@ -0,0 +1,100 @@ +name: Testing Tasks Week 03 + +on: + workflow_dispatch: + inputs: + tasks: + description: 'Select tasks to test' + required: true + type: choice + default: 'all' + options: + - all + - data_stats + - unique + - range + - minmax + - find_all + - os_overload + - easy_compare + - filter + - enum_operators + + schedule: + - cron: '59 20 18 12 *' # UTC: 20:59 = 23:59 MSK 18 December + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install compiler and CMake + run: sudo apt install -y cmake build-essential g++-14 libgtest-dev libgmock-dev + + - name: Configure project + run: cmake -B build + + - name: Determine tasks to run + id: get-tasks + run: | + if [ "${{ github.event.inputs.tasks }}" = "all" ]; then + # Find all tasks + TASKS=() + for dir in 03_week/tasks/*/; do + task=$(basename "$dir") + TASKS+=("$task") + done + echo "tasks=${TASKS[*]}" >> $GITHUB_OUTPUT + else + # Используем указанную задачу + echo "tasks=${{ github.event.inputs.tasks }}" >> $GITHUB_OUTPUT + fi + + - name: Build and run tests for selected tasks + run: | + + IFS=' ' read -ra tasks <<< "${{ steps.get-tasks.outputs.tasks }}" + + declare -i passed_count=0 + declare -i failed_count=0 + declare -i task_count=0 + + echo "=== Starting tests for selected tasks ===" + + for task in "${tasks[@]}"; do + task_count+=1 + echo "=== Processing $task ===" + + if cmake --build build --target test_$task; then + echo "✅ test_$task built successfully" + + if ./build/tasks/test_$task; then + echo "✅ test_$task PASSED" + passed_count+=1 + else + echo "❌ test_$task FAILED" + failed_count+=1 + fi + else + echo "❌ test_$task build FAILED" + failed_count+=1 + fi + done + + echo "=== Test Results Summary ===" + echo "Total tasks in list: ${#tasks[@]}" + echo "Processed: $task_count" + echo "✅ Passed: $passed_count" + echo "❌ Failed: $failed_count" + + if [ $failed_count -gt 0 ]; then + echo "❌ Some tasks failed!" + exit 1 + elif [ $task_count -eq 0 ]; then + echo "No tasks were processed (no changes)" + exit 0 + else + echo "✅ All processed tasks passed!" + exit 0 + fi \ No newline at end of file diff --git a/04_week/04_class.md b/04_week/04_class.md new file mode 100644 index 00000000..46e00076 --- /dev/null +++ b/04_week/04_class.md @@ -0,0 +1,902 @@ +# Лекция 4. ООП. Класс + +1. [ООП](#oop) + - [Инкапсуляция](#encapsulation) + - [Наследование](#inheritance) + - [Полиморфизм](#polymorphism) + - [Абстракция](#abstraction) +1. [Класс](#class) + - [Спецификаторы доступа](#access_specifiers) + - [Отличие класса и структуры](#class_struct_diff) + - [Пустой класс](#class_empty) + - [Поля класса](#class_fields) + - [Инициализация полей значением по умолчанию](#field_default_init) + - [Конструктор](#ctor) + - [Список инициализации полей класса](#member_initializer_list) + - [Параметризованный конструктор](#parameterized_ctor) + - [Конструктор по умолчанию](#default_ctor) + - [Конструктор копирования](#copy_ctor) + - [Указатель на себя `this`](#this_ptr) + - [Копирующий оператор присваивания](#copy_assignment) + - [Деструктор](#dtor) + - [Конструктор преобразования](#converting_ctor) + - [Ключевое слово `explicit`](#explicit) + - [Конструктор от `std::initializer_list`(_C++11_)](#ctor_std_initializer_list) + - [Делегирующий конструктор (_C++11_)](#delegating_ctor) + - [Ключевое слово `default` (_С++11_)](#keyword_default) + - [Ключевое слово `delete` (_С++11_)](#keyword_delete) + - [Методы](#methods) + - [Определение методов вне класса](#methods_definition_outside) + - [CV-квалификация методов ](#cv_for_methods) + - [Оператор преобразования](#conversion_operator) + - [Перегрузка операторов внутри класса](#class_operator_overloading_inside) + - [Перегрузка операторов вне класса](#class_operator_overloading_outside) + - [Ключевое слово `friend`](#keyword_friend) + - [Ключевое слово `mutable`](#keyword_mutable) + + +## ООП + +Объектно-ориентированное программирование - парадигма программирования, которая +основывается на представление в коде программы различных объектов, взаимодействующих +друг с другом. + +Класс - пользовательский тип данных, шаблон (макет) для создания объектов и описания +их характеристик, функций. + +Объект - экземпляр класса. Объект включает данные (поля) и методы (функции). +Что позволяет хранить характеристики объекта, изменять их и взаимодействовать с +другими объектами. + +Основные принципы ООП: + +- Инкапсуляция +- Наследование +- Полиморфизм +- Абстракция + +### Инкапсуляция + +Инкапсуляция - объединение данных и методов для работы с данными внутри класса. +Сокрытие деталей реализации класса. + +```c++ +class Budget { +public: + void increase_balance(double value) { + budget_ += value; + } +private: + double budget_; +}; +``` + +### Наследование + +Наследование - механизм создания новых классов на основе существующих. Позволяет +строить иерархию классов и переиспользовать код классов родителей внутри +классов наследников. + +```c++ +class Animal { /* common data */}; +class Cat : public Animal {}; +class Dog : public Animal {}; +``` + +### Полиморфизм + +Полиморфизм - возможность различного поведения сущностей C++. + +Виды полиморфизма: + +- статический (на этапе компиляции, шаблоны, перегрузка функций) +- динамический (во время выполнения программы, виртуальные методы) + +```c++ +class Shape { +public: + virtual void draw() = 0; +}; +class Circle : public Shape { + void draw() override { /* рисуем круг */ } +}; +``` + +### Абстракция + +Абстракция - упрощение сложных вещей через выделение основных характеристик. + +## Класс + +Класс - пользовательский тип данных, который объединяет в себе данные (поля класса) +и функции для работы с данными (методы класса), представляет собой макет для +создания объектов (экземпляров) данного типа. + +Синтаксис: `class {};` + +- `` - имя класса, пользовательского типа данных +- `` - тело класса, включающее поля, методы, конструкторы и деструктор + +### Спецификаторы доступа + +Для ограничения видимости полей и методов внутри класса используются +спецификаторы доступа, весь код после спецификатора имеет соответствующий тип +доступа: + +- `public` - публичный доступ, поле или метод класса доступны извне +- `protected` - защищенный доступ, поля и методы доступны наследникам класса + и внутри класса +- `private` - приватный доступ, поля и методы доступны только внутри класса. + +Синтаксис внутри класса или структуры: `:` + +Указывать спецификаторы доступа можно произвольное число раз. + +```c++ +class User { +public: + /* some data and functions for everyone */ +protected: + /* some data and functions for children classes */ +private: + /* some data and functions inside class */ +}; +``` + +Приватные поля и методы будут недоступны снаружи, то есть **НЕЛЬЗЯ** к ним +обратится или вызвать через экземляр класс, используя операторы `.`, `->`. + +Всё содержимое класса по умолчанию имеет спецификатор доступа `private`, +несмотря на это часто принято явно указывать данный спецификатор, даже при +определении полей класса в самом начале тела класса. + +### Отличие класса и структуры + +Структура `struct` и класс `class` имеют одинаковые возможности в C++. + +Отличие заключается, что содержимое структуры по умолчанию имеет публичный +доступ `public`, а содержимое класса приватный `private` + +Структура нужна для взаимодействия с `legacy` кодом на языке C, а также для +публичных классов. + +Несмотря на одинаковые возможности, принято разделять структуру и класс +семантически. Так, структуру используют только с публичными полями, а класс +с приватными. Создавать классы и структуры со смешанным типом полей не +рекомендуется, так как это может быть не очевидно и не понятно программистам, +читающим код. + +### Пустой класс + +Пустой класс имеет размер 1 байт, поскольку объект такого класса можно создать +и необходимо иметь адресс данного объекта, чтобы иметь адресс, необходимо что-то +положить в память по определенному адресу. + +Чаще используется пустая структура. Такая структура может понадобитсья в качестве +именнованного тега. Пока будем просто считать, что иногда надо. + +### Поля класса + +Поля класса представляют собой внутренние переменные произвольного типа. +К полям класса внутри класса можно обращаться по имени. В качестве поля можно +использовать указатели и ссылки. + +В случае ссылок необходимо их инициализировоать при создании объекта. Например, +можно проинициализирвоать адресом объекта из глобальной области видимости. А еще +это можно сделать в списке инициализации при конструировании объекта. + +Существуют разные стили кода к именованию полей класса. Часто встречается: + +- `m_` - добавляют `m_` в качестве префикса к перименной (`m` - `member`) +- `_` - добавляют `_` в качестве постфикса к переменной. + +```c++ +// inside class +int m_value; +int value_; +``` + +Поля класса хранятся в классе и инициализируются в порядке их объявления. + +Поля уникальны для каждого экземпляра класса. + +### Инициализация полей значением по умолчанию + +Аналогично структурам рекомендуется всегда инициализировать поля внутри класса. + +```c++ +class Time { +private: + int hour_ = 0; + int minute_{0}; // uniform +}; +``` + +Иначе в полях класса также может лежать мусор. + +### Конструктор + +Конструктор это особый метод класса, который используется для конструирования +объекта. + +Синтаксис: `() {}` + +- `` - имя конструктора должно совпадать с именем класса +- `` - аргументы конструктора. +- `` - тело конструктора. + +В зависимости от аргументов конструктора выделяют различные типы конструктора. +Основные способы конструирования объекта: + +- Параметризованный конструктор +- Конструктор по умолчанию +- Конструктор копирования +- Копирующий оператор присваивания +- Конструктор перемещения +- Перемещающий оператор присваивания + +Важно понимать, что если конструкторы не определены, то компилятор самостоятельно +сгенерирует конструкторы. Но если определен, хотя бы один конструктор, то +компилятор скорее всего этого не сделает. + +Важно понимать, что при входе в тело конструктора все поля уже проинициализированы +и в теле может происходить только присваивание новых значений полям класса. +Следовательно, в теле уже нельзя изменить константное поле или инициализировать +ссылку. + +Проинициализировать константу и ссылку можно не только значением по +умолчанию или значением (адресом) переменной из глобальной области видимости. +Для этого в синтаксисе конструктора предусмотрен список инициализации. + +### Список инициализации полей класса + +Список инициализации полей (_member initializer list_) позволяет инициализировать +поля в момент создания объекта. В списке инициализации доступны аргументы +конструктора и имена полей класса. Список инициализации указывается между сигнатурой +и телом конструктора, и выглядит как перечисление после символа `:` через запятую +полей класса и внутри `()` или `{}` их инициализирующих значений. + +Синтаксис: `() : {}` + +- `` - список инициализации = `(), {}` + +```c++ +class InitList { +public: + InitList(int val) : a_(val), b_(val), c_(val) {} +public: + int a_; int b_; int c_; +}; +``` + +Причем имена полей класса и имена параметров могут полностью совпадать, конфликта +имен не будет, поскольку компилятор понимает, что нужно инициализировать поля. + +```c++ +class InitSameName { +public: + InitSameName(int a, int b, int c) : a(a), b(b), c(c) {} +public: + int a; int b; int c; +}; +``` + +Также, следует отметить, что в качестве инициализирующего значения, может использоваться +не только переменная или константа, но также выражение (_expression_) и результат +вызова функции. + +**ВАЖНО**, что инициализация происходит в порядке полей класса, и не зависит от +порядка в списке инициализации. Поэтому важно самостоятельно отслеживать +правильный порядок инициализации. + +```c++ +class BadOrderInit { +public: + BadOrderInit(int val) : c(val), b(c + 1), a(10) {} +public: + int a; int b; int c; +}; +``` +- `c` используется неинициализированной при инициализации `b` (**UB**) + +Если поля класса объявлены со значением по умолчанию, то они будут проигнорированы +для полей в списке инициализации. + +```c++ +class BadOrderInit { +public: + BadOrderInit(int val) : c(val), b(c + 1), a(10) {} +public: + int a = 7; int b = 7; int c = 7; +}; +``` +- значение `7` будет проигнорированно, по-прежнему **UB** + +Списки инициализации могут быть неполными. Тогда недостающие поля будут +сконструированы со значениями по умолчанию, а при их отсутствии инициализируются +мусором. + +```c++ +class BadOrderInitNoAB { +public: + BadOrderInitNoAB(int val) : c(val) {} +public: + int a; int b = 7; int c = 7; +}; +``` +- в поле `b` будет значение `7`, в `a` будет мусор + +Список инициализации позволяет сконструировать константное поле и поле ссылку извне: + +```c++ +class RefConst { +public: + RefConst(int value, int& ref, const double& cref) + : id_(value), ref_(ref), const_ref_(cref) {} +private: + const int id_; + int& ref_; + const double& const_ref_; +}; +``` + +### Параметризованный конструктор + +Конструктор, который имеет параметры (аргументы) называют параметризованным +конструктором (конструктором с параметрами). Аргументов может быть несколько +и они могут иметь значения по умолчанию, Таким образом, конструктор может +быть перегружен. + +```c++ +class Time { +public: + Time(int hour, int minute, int second) + : hour_(hour), minute_(minute), second_(second) {} +private: + int hour_, minute_, second_; +}; +``` + +Если конструктор имеет у всех аргументов значение по умолчанию, то такой +конструктор перегружает конструктор по умолчанию. + +```c++ +class Time { +public: + Time(int hour = 0, int minute = 0, int second = 0) + : hour_(hour), minute_(minute), second_(second) {} +private: + int hour_, minute_, second_; +}; +``` + +Для создания объекта класса необходим вызов конструктора. Синтаксис вызова констуктора: + +```c++ +Time t1(1, 1, 1); +Time t2{1, 1, 1}; +Time t3 = {1, 1, 1} +Time t4 = Time{1, 1, 1}; +Time t5 = Time(1, 1, 1); +``` + +Аналогично для всех его вариантов перегрузки. + +### Конструктор по умолчанию + +Конструктор по умолчанию представляет собой конструктор без аргументов. +Часто для простых класов конструктор имеет пустое тело. Удобно использовать +значение по умолчанию для инициализации. + +Синтаксис: `() {}` + +Часто имеет пустое тело для тривиальных случаев. + +Если не определен ни один конструктор, то компилятор самостоятельно сгенерирует +данный конструктор. + +```c++ +class DefaultCtor { +public: + DefaultCtor() {} +private: + int value = 0; +}; +``` + +Вызов конструктора: + +```c++ +DefaultCtor obj; +DefaultCtor obj2{}; +DefaultCtor obj3 = {}; +DefaultCtor obj4 = DefaultCtor{}; +DefaultCtor obj5 = DefaultCtor(); +``` +- во всех этих случаях вызовется только конструктор по умолчанию один раз + +### Конструктор копирования + +Конструктор копирования необходим для создания копии объекта из объекта того +же типа. Представляет собой конструктор, принимающий в качестве аргументов +константную ссылку того же типа, что и сам класс. + +Синтаксис: `(const & ) {}` + +```c++ +class Time { +public: + Time(const Time& other) + : hour_(other.hour_), minute_(other.minute_), second_(other.second_) {} +private: + int hour_, minute_, second_; +}; +``` + +Поля другого объекта того же класса доступны внутри методов класса даже если они +приватные. + +Вызывается конструктор копирования: + +- при передаче в функцию по значению +- при возврате объекта соответствующего значения по значению +- при конструировании одного объекта из другого + +```c++ +Time t; +Time t1 = t; // copy ctor +Time t2(t); // copy ctor +Time t3{t}; // copy ctor +``` + +### Указатель на себя `this` + +Внутри класса, в методах, в том числе конструкторах, можно получить указатель на +себя (объект класса, который вызывает данный метод) с помощью ключевого слова `this`. + +Можно использовать `this`, как в качестве значения по умолчанию, так и в списке +инициализации. + +```c++ +class Self { +public: + Self() : self(this) {}; + Self* GetPtr() { return self; } + Self& GetRef() { return *this; } +private: + Self* self = this; +}; +``` + +Можно считать что указатель на себя передается первым неявным аргументом в конструкторы, +методы и операторы класса. + +Через указатель можно явно обращаться к полям класса, но как правило, так не делают + +```c++ +// inside methods +this->self; +``` + +### Копирующий оператор присваивания + +Оператор присвания необходим при присваивании одного созданного объекта другому. +Если один из объектов не создан, то он не будет вызываться, а будет вызываться +конструктор копирования, даже если в инструкции есть `=`. + +Как правило, оператор возвращает ссылку на себя (экземпляр текущего класса), что +позволяет испоьзовать цепочку из операторов `=`. Для этого необходимо вернуть из +оператора разыменованный указатель на себя `return *this;`. + +Синтаксис: `& operator=(const & ) {}` + +Поскольку язык не запрещает присвоить объект самому себе, как правило, в копирующем +операторе присваивания выполняют проверку на самоприсваивание. Особенно это +критично для классов владеющих ресурсами (выделяющих память), что может привести +к **UB** + +```c++ +class Time { +public: + Time& operator=(const Time& other) { + if (this == &other) { + return *this; + } + hour_ = other.hour_; + minute_ = other.minute_; + second_ = other.second_; + return *this; + } +private: + int hour_, minute_, second_; +}; +``` + +Вызов оператора: + +```c++ +Time t1, t2, t3; +t1 = t2; // copy assignment +t1 = t1; // copy assignment +t1 = t2 = t3; // copy assignment +auto t4 = t1; // copy ctor (not a copy assignment!) +``` + +### Деструктор + +Особый метод, вызываемый перед разрушением объекта, когда заканчивается время +жизни объекта. + +Синтаксис: `~() {}` + +Если в конструкторе выполнялось ручное выделение ресурсов, то в деструкторе +необходимо обязательно освободить ресурсы. Иначе деструктор остается тривиальным +и генерируется компилятором по умолчанию. + +Деструкторы вызываются в обратном порядке по отношению к конструируемым объектам +при выходе из области видимости. Последний сконструированный объект, будет разрушен +первым. + +### Конструктор преобразования + +Конструктором преобразования называется конструктор, принимающий один аргумент +другого произвольного типа. Данный конструктор разрешает неявное преобразование +из указанного типа в тип класса. + +```c++ +class Integer { +private: + int value; +public: + Integer(int v) : value(v) {} + Integer(char c) : value(static_cast(c)) {} +}; +``` + +Таким образом, если функция принимает пользовательский класс, а класс имеет +конструктор преобразования от другого типа, то в функцию можно передать +непосредственно этот другой тип, произойдет неявное преобразование с помощью +соответствующего конструктора: + +```c++ +int DoSomething(Integer i) {} + +int main() { + Integer i{3}; + int value = 5; + char c = 'I'; + DoSomething(i); // OK + DoSomething(value); // OK + DoSomething(5); // OK + DoSomething(c); // OK + DoSomething('i'); // OK +} +``` + +**ВАЖНО** понимать, что при наличии конструктора присваивания из другого типа, +компилятор **НЕ** будет генеировать оператор присваивания из данного типа, его +необходимо определять самостоятельно. + +### Ключевое слово `explicit` + +Ключевое слово `explicit` используется как спецификатор перед именем конструктора +и позволяет запретить неявное преобразование и сообщает компилятору, что данный +конструктор можно вызывать только явно. + +```c++ +class Integer { +private: + int value; +public: + Integer(int v) : value(v) {} + Integer(char c) : value(static_cast(c)) {} + explicit Integer(double d) : value(static_cast(d)) {} +}; +``` + +Неявно такой конструктор вызвать нельзя: + +```c++ +//Integer i2 = 3.14; // compile error +Integer i3 = Integer{3.14}; // OK + +int DoSomething(Integer i) {} + +int main() { + double d = 3.14; + //DoSomething(d); // compile error + //DoSomething(3.14); // compile error + DoSomething(Integer{3.14}); // OK + DoSomething(Integer(3.14)); // OK +} +``` + +Также спецификатор `explicit` можно использовать с оператором преобразования, об этом +после знакомства с методами. + +### Конструктор от `std::initializer_list`(_C++11_) + +В C++11 появился контейнер список инициализации `std::initializer_list`, который +позволяет инициализировать класс набором элементов. Что вызывает неоднозначность +при наличии параметризированных конструкторов какой конструктор вызывать. + +Конструктор по умолчанию имеет приоритет перед конструктором от списка инициализации. + +Список инициализации имеет приоритет перед параметризированными конструкторами при +использовании `{}`. + +```c++ +class Vector { +public: + Vector() {}; + Vector(size_t count); + Vector(int a, int b); + Vector(std::initializer_list list); +private: + std::vector data; +}; +``` + +Вызов конструкторов: + +```c++ +Vector v = {1, 2, 3, 4, 5}; // ctor std::initializer_list +Vector v2{1, 2, 3}; // ctor std::initializer_list +Vector v3(10); // ctor Vector(size_t) +Vector v4{10}; // ctor std::initializer_list +Vector v5 = {10}; // ctor std::initializer_list +Vector v6(10, 20); // ctor Vector(int a, int b) +Vector v7{10, 20}; // ctor std::initializer_list +Vector v8 = {10, 20}; // ctor std::initializer_list +Vector v9 = 10; // ctor Vector(size_t) implicit cast +Vector v10; // default ctor +Vector v11{}; // default ctor +Vector v12 = {}; // default ctor +``` + +### Делегирующий конструктор (_C++11_) + +Делегирующий конструктор - конструктор, который на месте списка инициализации +использует другой конструктор данного класса. В таком случае можно указать только +один целевой конструктор, дополнительно списки инициализации указать нельзя. + +```c++ +class Time { +public: + Time(int hour, int minute, int second) + : hour_(hour), minute_(minute), second_(second) {} + Time(int hour) : Time(hour, 0, 0) {} +private: + int hour_, minute_, second_; +}; +``` + +Делегирующий конструктор **НЕ** может быть рекурсивным. + +### Ключевое слово `default` (_С++11_) + +С помощью ключевого слова `default` можно явно попросить компилятор сгенерировать +конструктор (деструктор), указав после сигнатуры `= default`. Это более выразительно, +чем писать `{}` для конструктора по умолчанию. Рекомендуется к использованию. + +```c++ +class Value { +public: + Value(int x) : x_(x) {} + Value() = default; + Value(const Value& other) = default; + Value(Value&& other) = default; + Value& operator=(const Value& other) = default; + Value& operator=(Value&& other) = default; + ~Value() = default; +private: + int x = 0; +}; +``` + +### Ключевое слово `delete` (_С++11_) + +С помощью ключевого слова `delete` можно явно попросить компилятор удалить функцию +(запретить её использование), указав после сигнатуры `= delete`. Это более выразительно, +чем прятать конструкторы в приватную область класса. Рекомендуется к использованию. + +Можно использовать не только для конструкторов, деструкторов, но и для любых методов, +операторов, шаблонных функций, функций вне классов. + +```c++ +class Value { +public: + Value(int x) : x_(x) {} + Value() = delete; + Value(const Value&) = delete; + Value& operator=(const Value&) = delete; +private: + int x = 0; +}; +``` + +Например, если класс не подразумевает сравнения на равенство или других операторов +можно явно указать для них `delete`. + +### Методы + +Внутри класса можно определять функции, которые могут работать с полями класса, в том +числе закрытыми. Данные функции называются методы. + +Синтаксис аналогичен определению обычным функциям. + +Публичный метод можно вызвать через операторы `.` для экземпляра и `->` для указателяю. + +Приватные методы, можно вызывать внутри класса. + +Можно вызывать методы в списках инициализации. Например, метод, который будет +контролировать допустимость значения или выполнять дополнительные преобразования. + +### Определение методов вне класса + +Методы можно объявить внутри класса, а определить снаружи класса. Содержимое +класса имеет свою область видимости. Для определения снаружи класса перед именем +конструктора, метода, оператора используется имя класса и оператор разрешения области +видимости `::` + +```c++ +class Time { +public: + Time(); + Time(int hours, int minutes, int seconds = 0); + int GetHours(); + void SetHours(int hours); +private: + int hours_ = 0; + int minutes_ = 0; + int seconds_ = 0; +}; + +Time::Time() = default; +Time::Time(int hours, int minutes, int seconds) + : hours_(hours), minutes_(minutes), seconds_(seconds) {} + +int Time::GetHours() { return hours; } +void Time::SetHours(int hours) { hours_ += hours; } +``` + +Аргументы методов, имеющие значения по умолчанию указываются только при объявлении, +при определении нельзя указать значения по умолчанию + +### CV-квалификация методов + +Методы могут иметь CV-квалификацию. Методы, которые не изменяют полей класса, а только +предоставляют информацию о них следует помечать квалификатором `const` после сигнатуры +и перед телом метода: + +```c++ +class Size { +public: + size_t GetSize() const { return size; }; + void AddSize(size_t size) { size_ += size; }; +private: + size_t size_ = 0; +}; +``` + +Методы помеченные квалификатором `const` можно вызывать у константных объектов класса. +Компилятор отслеживает, что в данном методе нет измененеий полей класса. + +Методы можно перегрузить только по квалификатору `const`. + +Не изменяет поля класса и может быть вызван для константного объекта: + +```c++ +int Class::foo() const; +``` + +Может изменять поля класса и может быть вызван для `volatile` объекта: + +```c++ +int Class::foo() volatile; +``` + +Может быть вызван как для `const`, так и для `volatile` объекта, так и для +`const volatile` объекта: + +```c++ +int Class::foo() const volatile; +``` + +### Оператор преобразования + +В классе возможно определить оператор преобразования, который позволяет преобразовывать +пользовательский класс в другой тип. + +Синтаксис: ` operator () const {}` + +- `` - можно запретить неявное преобразование +- `` - тип к которому выполняется приведение + +Рекомендуется помечать `const` поскольку данный оператор не должен менять полей класса +и вызываться от констант данного класса. + +Как правило рекомендуется запрещать неявное преобразование к типу (использовать +`explicit`), поскольку можно обнаружить много неожиданных мест в коде, где неявно +произведено преобразование. + +Исключением обычно является оператор `bool` для удобства использования в условиях. + +### Перегрузка операторов внутри класса + +Поскольку первым аргументом неявно передается ключевое слово `this`, то перегрузка +бинарных операторов внутри класса имеет один аргумент: + +```c++ +Class& operator+=(const Class& other); +Class& operator-=(const Class& other); +Class& operator*=(const Class& other); +Class& operator/=(const Class& other); +``` + +Операторы арифмесстических операций часто переопределяют на основе работы присваивающих +операторов: + +```c++ +Class operator+(const Class& other) const { + Class result = *this; // copy ctor + result += other; // operator += + return result; +} +``` + +Операторы префиксного и постфиксного инкремента/декремента переопределяются +следующим образом: + +```c++ +Class& operator++(); // ++obj +Class operator++(int); // obj++ +Class& operator--(); // --obj +Class operator--(int); // obj-- +``` +- постфиксный оператор возвращает копию, поэтому у возвращаемого значения нет `&` + +### Перегрузка операторов вне класса + +Операторы можно перегрузить вне класса, тогда сигнатура перегружаемого оператора +пишется в привычной манере. Но для реализации таких операторов у класса должны быть +методы задающие и считывающие значение полей (геттеры и сеттеры). Бывает, что их нет, +тогда перегрузить класс не получится или получится на основе определенных операторов +составного присваивания внутри класса. + +Перегрузка инкремента и декремента вне класса: + +```c++ +Class& operator++(const Class& obj); // ++obj +Class operator++(const Class& obj, int); // obj++ +Class& operator--(const Class& obj); // --obj +Class operator--(const Class& obj, int); // obj-- +``` + +### Ключевое слово `friend` + +Внутри класса с помощью ключевого слова `friend` (_friend declaration_) можно +объявить дружественную функцию, класс или дружественный метод другого класса. + +Сущности объявленные дружественными будут иметь доступ к `private` и `protected` +полям класса. + +Дружественность работает в одностороннем порядке. + +```c++ +friend void SomeMethod(int); +friend struct SomeStruct; +friend class SomeClass; +friend OtherClass; // C++11 +friend int OtherClass::Method(); +``` + +### Ключевое слово `mutable` + +Спецификатор типа `mutable` разрешает изменять поле класса, объявленное с ним, +даже в константных методах и для константных объектов. + +Например, это может быть поле представляющее собой счетчик операций и необходимо его +изменять даже в константном методе. + +Также может использоваться в лямбда-выражениях \ No newline at end of file diff --git a/04_week/04_class.pdf b/04_week/04_class.pdf new file mode 100644 index 0000000000000000000000000000000000000000..50a488d9fcab3609ae8817ce4684647091ae75d6 GIT binary patch literal 251118 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 literal 0 HcmV?d00001 diff --git a/04_week/CMakeLists.txt b/04_week/CMakeLists.txt new file mode 100644 index 00000000..0531237e --- /dev/null +++ b/04_week/CMakeLists.txt @@ -0,0 +1,15 @@ +cmake_minimum_required(VERSION 3.14) # Минимальная требуемая версия CMake +project(04_week) # Необходим для инициализации cmake + +set(CMAKE_CXX_STANDARD 20) # Версия стандарта C++ +set(CMAKE_CXX_STANDARD_REQUIRED ON) # Гарантирует использование указанной версии стандарта + +set(EXAMPLES_DIR examples) # Определим переменную с именем директории +set(TASKS_DIR tasks) + +add_subdirectory(tasks) + +# Создать исполняемый файл для каждого примера +if (BUILD_EXAMPLES_04_WEEK) +# add_example(struct_examples ${EXAMPLES_DIR}/struct_examples.cpp) +endif() \ No newline at end of file From 5ba2b469305ae9abc163538bc260eb1c2fecfa71 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Wed, 10 Dec 2025 13:53:30 +0000 Subject: [PATCH 20/40] Auto-sync: 2025-12-10 13:53 --- 01_week/01_basic_cpp.md | 2 +- 03_week/03_data_structures.md | 916 ++++++++++++++++++ 03_week/03_data_structures.pdf | Bin 0 -> 308213 bytes 03_week/CMakeLists.txt | 17 + 03_week/examples/struct_examples.cpp | 172 ++++ 03_week/examples/union_examples.cpp | 117 +++ 03_week/examples/vector_examples.cpp | 89 ++ 03_week/tasks/CMakeLists.txt | 9 + 03_week/tasks/data_stats/CMakeLists.txt | 1 + 03_week/tasks/data_stats/README.md | 13 + 03_week/tasks/data_stats/data_stats.cpp | 11 + 03_week/tasks/data_stats/test.cpp | 80 ++ 03_week/tasks/easy_compare/CMakeLists.txt | 1 + 03_week/tasks/easy_compare/README.md | 25 + 03_week/tasks/easy_compare/easy_compare.cpp | 16 + 03_week/tasks/easy_compare/test.cpp | 269 +++++ 03_week/tasks/enum_operators/CMakeLists.txt | 1 + 03_week/tasks/enum_operators/README.md | 19 + .../tasks/enum_operators/enum_operators.cpp | 33 + 03_week/tasks/enum_operators/test.cpp | 226 +++++ 03_week/tasks/filter/CMakeLists.txt | 1 + 03_week/tasks/filter/README.md | 11 + 03_week/tasks/filter/filter.cpp | 6 + 03_week/tasks/filter/test.cpp | 172 ++++ 03_week/tasks/find_all/CMakeLists.txt | 1 + 03_week/tasks/find_all/README.md | 9 + 03_week/tasks/find_all/find_all.cpp | 6 + 03_week/tasks/find_all/test.cpp | 119 +++ 03_week/tasks/minmax/CMakeLists.txt | 1 + 03_week/tasks/minmax/README.md | 14 + 03_week/tasks/minmax/minmax.cpp | 6 + 03_week/tasks/minmax/test.cpp | 141 +++ 03_week/tasks/os_overload/CMakeLists.txt | 1 + 03_week/tasks/os_overload/README.md | 42 + 03_week/tasks/os_overload/os_overload.cpp | 21 + 03_week/tasks/os_overload/test.cpp | 308 ++++++ 03_week/tasks/range/CMakeLists.txt | 1 + 03_week/tasks/range/README.md | 11 + 03_week/tasks/range/range.cpp | 7 + 03_week/tasks/range/test.cpp | 98 ++ 03_week/tasks/unique/CMakeLists.txt | 1 + 03_week/tasks/unique/README.md | 11 + 03_week/tasks/unique/test.cpp | 92 ++ 03_week/tasks/unique/unique.cpp | 6 + grading/deadlines.json | 46 + 45 files changed, 3148 insertions(+), 1 deletion(-) create mode 100644 03_week/03_data_structures.md create mode 100644 03_week/03_data_structures.pdf create mode 100644 03_week/CMakeLists.txt create mode 100644 03_week/examples/struct_examples.cpp create mode 100644 03_week/examples/union_examples.cpp create mode 100644 03_week/examples/vector_examples.cpp create mode 100644 03_week/tasks/CMakeLists.txt create mode 100644 03_week/tasks/data_stats/CMakeLists.txt create mode 100644 03_week/tasks/data_stats/README.md create mode 100644 03_week/tasks/data_stats/data_stats.cpp create mode 100644 03_week/tasks/data_stats/test.cpp create mode 100644 03_week/tasks/easy_compare/CMakeLists.txt create mode 100644 03_week/tasks/easy_compare/README.md create mode 100644 03_week/tasks/easy_compare/easy_compare.cpp create mode 100644 03_week/tasks/easy_compare/test.cpp create mode 100644 03_week/tasks/enum_operators/CMakeLists.txt create mode 100644 03_week/tasks/enum_operators/README.md create mode 100644 03_week/tasks/enum_operators/enum_operators.cpp create mode 100644 03_week/tasks/enum_operators/test.cpp create mode 100644 03_week/tasks/filter/CMakeLists.txt create mode 100644 03_week/tasks/filter/README.md create mode 100644 03_week/tasks/filter/filter.cpp create mode 100644 03_week/tasks/filter/test.cpp create mode 100644 03_week/tasks/find_all/CMakeLists.txt create mode 100644 03_week/tasks/find_all/README.md create mode 100644 03_week/tasks/find_all/find_all.cpp create mode 100644 03_week/tasks/find_all/test.cpp create mode 100644 03_week/tasks/minmax/CMakeLists.txt create mode 100644 03_week/tasks/minmax/README.md create mode 100644 03_week/tasks/minmax/minmax.cpp create mode 100644 03_week/tasks/minmax/test.cpp create mode 100644 03_week/tasks/os_overload/CMakeLists.txt create mode 100644 03_week/tasks/os_overload/README.md create mode 100644 03_week/tasks/os_overload/os_overload.cpp create mode 100644 03_week/tasks/os_overload/test.cpp create mode 100644 03_week/tasks/range/CMakeLists.txt create mode 100644 03_week/tasks/range/README.md create mode 100644 03_week/tasks/range/range.cpp create mode 100644 03_week/tasks/range/test.cpp create mode 100644 03_week/tasks/unique/CMakeLists.txt create mode 100644 03_week/tasks/unique/README.md create mode 100644 03_week/tasks/unique/test.cpp create mode 100644 03_week/tasks/unique/unique.cpp diff --git a/01_week/01_basic_cpp.md b/01_week/01_basic_cpp.md index 12c07244..138bdffe 100644 --- a/01_week/01_basic_cpp.md +++ b/01_week/01_basic_cpp.md @@ -571,7 +571,7 @@ auto rs = R"(popular escape-sequences in "C++" '\n' '\t')"; // const char* 1. -> : `a::b` 2. -> : `a++`, `a--`, `(a)`, `{a}`, `a()`, `a[]`, `a.b`, `a->b` -3. <- : `++a`, `--a`, `+a`, `-a`, `!a`, `()a`, `*a`, `&a`, `sizeof`, +3. <- : `++a`, `--a`, `+a`, `-a`, `!a`, `~a` `()a`, `*a`, `&a`, `sizeof`, `new`, `delete` 4. -> : `a.*b`, `a->*b` 5. -> : `a * b`, `a / b`, `a % b` diff --git a/03_week/03_data_structures.md b/03_week/03_data_structures.md new file mode 100644 index 00000000..67aeea52 --- /dev/null +++ b/03_week/03_data_structures.md @@ -0,0 +1,916 @@ +# Лекция 3. Структуры данных. Перегрузка функций. Вектор + +1. [Структура `struct`](#struct) + - [Размер структуры](#struct_sizeof) + - [Создание объекта](#struct_var) + - [Инициализация полей значениями по умолчанию](#struct_default_value) + - [Доступ к полям структуры. Оператор `.`](#operator_dot) + - [Доступ к полям структуры. Оператор `->`](#operator_arrow) +1. [Объединение `union`](#union) + - [Использование неактивной переменной](#union_using_inactive) + - [Анонимные объединения](#union_anonymous) +1. [Пара `std::pair`](#std_pair) + - [Инициализация и доступ к полям](#std_pair_access) + - [Доступ к полям с помощью `std::get` (_C++11_)](#std_pair_get) + - [Создание с помощью `std::make_pair`](#std_make_pair) +1. [Кортеж `std::tuple` (_С++11_)](#std_tuple) + - [Инициализация](#std_tuple_init) + - [Доступ к полям с помощью `std::get`](#std_tuple_get) + - [Создание с помощью `std::make_tuple`](#std_make_tuple) +1. [Функция связывания `std::tie`](#std_tie) +1. [Структурное связывание (_structered bindings_) _C++17_](#structered_bindings) +1. [Перегрузка функций](#overloading_function) + - [Перегрузка операторов](#overloading_operator) +1. [Асимптотическая сложность](#big_o_notation) +1. [Последовательные контейнеры](#sequentual_container) +1. [Контейнер `std::vector`](#std_vector) + - [Инициализация `std::vector`](#std_vector_init) + - [Устройство `std::vector`](#std_vector_structure) + - [Обзор методов `std::vector`](#std_vector_overview) + - [Вместимость контейнера `std::vector`](#std_vector_capacity) + - [Добавление в конец `std::vector`](#std_vector_push_back) + - [Доступ к элементам `std::vector`](#std_vector_access) + - [Итераторы](#iterators) + - [Итераторы `std::vector`](#std_vector_iterators) + - [Итерирование `std::vector`](#std_vector_iterating) + - [Метод `resize()`](#std_vector_resize) + - [Метод `reserve()`](#std_vector_reserve) + - [Метод `pop_back()`](#std_vector_pop_back) + - [Метод `clear()`](#std_vector_clear) + - [Остальные методы `std::vector`](#std_vector_overview) + + +## Структура `struct` + +Структура представляет собой пользовательский тип данных, позволяющий +объединять несколько переменных разных типов под одним именем. + +Синтаксис определения: `struct { ... };` + +- `` - имя структуры, является именем нового пользовательского типа данных +- `...` - ноль и более переменных + +Синтаксис объявления: `struct ;` + +- может пригодиться, когда необходимо использовать структуру раньше, чем + она определена. + +Переменная, объявленная внутри структуры, называется **полем** структуры. + +Гарантируется, что поля структуры располагаются в памяти в порядке +объявления полей внутри структуры. + +### Размер структуры + +Размер структуры зависит от размера входящих в неё полей и выравнивания +(_alighnment_). + +```c++ +struct Point { int x; int y; }; +struct IID { int x; int y; double d; }; +struct IDI { int x; double d; int y;}; +struct IDIB { int x; double d; int y; bool b}; + +std::cout << sizeof(Point) << std::endl; // 8 +std::cout << sizeof(IID) << std::endl; // 16 +std::cout << sizeof(IDI) << std::endl; // 24 +std::cout << sizeof(IDIB) << std::endl; // 24 +``` + +### Создание объекта + +Имя структуры используется в качестве имени типа при создании объекта. + +Синтаксис: ` ;` + +Рекомендуется сразу инициализировать поля объекта, сделать это можно, +используя фигурные скобки `{}` и перечисляя значение полей в том порядке, +в каком они определены в структуре. Также, можно использовать `()` +непосредственно после имени объекта. + +```c++ +struct Product { + int count; + double price; +}; + +Product obj; +Product obj_empty = {}; +Product obj_init = {10, 300.0}; +Product obj_part = {10}; // partitial +Product obj_agr{10, 300.0}; // uniform +``` + +Имя типа структуры может совпадать с каким-либо объектом, тогда при объявлении +можно разрешить конфликт имен добавив `struct` перед именем типа структуры +(как правило, лучше **ИЗБЕЖАТЬ** совпадающих названий): + +Синтаксис: `struct ;` + +```c++ +struct Product { + int count; + double price; +}; + +std::string Product = "some_product_name"; +// Product p = {10, 300.0}; // compile error +struct Product p = {10, 300.0}; // OK +``` + +Можно объявить структуру сразу с созданием объектов данного типа, **НО** +лучше так **НЕ** делать, особенно в глобальной области видимости. + +Синтаксис: `struct { ... } , ...;` + +```c++ +struct Point { + int x; + int y; +} p1, p2; +``` + +### Инициализация полей значениями по умолчанию + +Начиная с _C++11_ можно инициализировать поля значениями по умолчанию +через `=` при определении структуры. Тогда при создании объекта данного +типа поля будут инициализированы значениями по умолчанию. + +```c++ +struct Product { + int count = 0; + double price = 100.0; +}; + +Product one; +Product two = {}; +Product three{}; +``` + +### Доступ к полям структуры. Оператор `.` + +Доступ к полям структуры через объект типа структуры осуществляется через +оператор `.` точка. После имени объекта ставится `.` и затем имя поля: + +```c++ +struct Product { + int count; + double price; +}; + +Product obj; +obj.count = 10; +obj.price = 300.0; +``` + +### Доступ к полям структуры. Оператор `->` + +Доступ к полям структуры через указатель на объект типа структуры +осуществляется через оператор `->` стрелочка. После указателя на объект +ставится `->` и затем имя поля: + +```c++ +struct Product { + int count; + double price; +}; + +Product obj; +Product* ptr = &obj; +ptr->count = 10; +ptr->price = 300.0; +``` + +## Объединение `union` + +Объединение представляет собой пользовательский тип данных, который позволяет +хранить разные типы данных в одной области памяти. В один момент может храниться +только один тип данных. Размер объединения соответствует наибольшему по размеру +типу, входящего в объединение. + +Синтаксис: `union { ... };` + +```c++ +union Union { + char c; + int i; + double d; +}; +``` + +Все входящие в объединение типы переменных расположены по одному адресу. + +Доступ к переменным аналогичен структурам. + +### Использование неактивной переменной + +Активная переменная определяется последним присваиванием, при этом +время жизни предыдущей активной переменной заканчивается. Использование +неактивной переменной это **UB**. Однако, современные компиляторы, как +правило, представляют расширение языка и позволяют читать неактивные +переменные. Таким образом, можно получить доступ к отдельным байтам. + +```c++ +union Color { + uint32_t value; + struct { + uint8_t a + uint8_t b; + uint8_t g; + uint8_t r; + } components; +}; + +Color c; +c.value = 0x00FF9955; + +std::cout << "Red: " << c.components.r << std::endl; // 0 +std::cout << "Green: " << c.components.g << std::endl; // +std::cout << "Blue: " << c.components.b << std::endl; // 255 +std::cout << "Alpha: " << c.components.a << std::endl; // 0 +``` +- но это по-прежнему **UB** и платформо-зависимый код, на _little-endian_ + и _big-endian_ различный вывод. + +Аналогично можно работать отдельно с битами: + +```c++ +union HardwareRegister { + uint32_t raw; + struct { + uint32_t enable : 1; + uint32_t mode : 3; + uint32_t clock_divider : 4; + uint32_t reserved : 24; + } bits; // 1 + 3 + 4 + 24 = 32 +}; + +HardwareRegister reg; +reg.raw = 0; +reg.bits.enable = 1; +reg.bits.mode = 5; +reg.bits.clock_divider = 8; +``` + +### Анонимные объединения + +Можно создавать анонимные объединения, тогда все внутренние имена переменных +попадают во внешнюю область видимости объединения и не должно быть +конфликта имен. + +```c++ +struct Variant { + enum Type { INT, FLOAT, STRING } type; + + union { + int intValue; + float floatValue; + char stringValue[50]; + }; +}; +``` + +## Пара `std::pair` + +Пара `std::pair` - это шаблонная структура, позволяющая хранить переменные +двух типов в полях `first` и `second`. + +Заголовочный файл: `` + +Объявление: `std::pair ;` +- `T1` - тип первой переменной +- `T2` - тип второй переменной + +Методы: +- `swap` - для обмена значений с другой парой + +Доступны операторы сравнения, сравнение производится лексикографически. + +Пара используется в стандартных ассоциативных контейнерах, при возврате +ключа и значения контейнера. А также, может быть использована при возврате +двух значений из функции. Как правило, это менее информативно, чем структура +с понятными именами полей. + +### Инициализация и доступ к полям + +Доступ к соответствующим переменным в паре, осуществляется через имена полей +`first` и `second`. + +Инициализировать пару: + +```c++ +std::pair p; // uninitialized +p.first = 'c'; +p.second = static_cast(p.first); + +std::pair p1 = {true, "Book"}; +std::pair p2(10, 3.14); // ctor +std::pair p3{true, 2.73}; // uniform C++11 +``` + +### Доступ к полям с помощью `std::get` (_C++11_) + +В заголовочном файле `` есть шаблонная функция `std::get`, которая +на вход принимает пару и возвращает ссылку на поле пары. + +Может работать по индексу: +- `0` - `first` +- `1` - `second` +- другие значения приведут к ошибке компиляции + +Может работать по типу переменной, в случае одинаковых типов будет ошибка +компиляции. + +```c++ +std::pair p = {true, 10}; +std::cout << '(' << std::get<0>(p) << ", " << std::get<1>(p) << ')' << std::endl; +std::cout << '(' << std::get(p) << ", " << std::get(p) << ')' << std::endl; +std::get(p) = false; +std::get<1>(p) = 0; +``` + +### Создание с помощью `std::make_pair` + +В заголовочном файле `` есть шаблонная функция `std::make_pair` +принимающая два аргумента и возвращающая пару из двух аргументов. +Удобство заключается в возможности использования вывода типа переменной, +если написать ключевое слово `auto`. + +```c++ +auto p1 = std::make_pair(15, 'c'); // std::pair +auto p2 = std::make_pair(true, 3.14); // std::pair + +int value = 3; +int array[] = {1, 2, 3}; +auto p3 = std::make_pair(std::ref(value), array); // std::pair +``` + +## Кортеж `std::tuple` (_С++11_) + +Кортеж `std::tuple` - шаблонный класс, позволяющий хранить произвольное число +аргументов различных типов. + +Заголовочный файл: `` + +Объявление: `std::tuple ;` +- `T...` - произвольное количество различных типов + +Методы: +- `swap` - для обмена значений с другим аналогичным по типам кортежем + +Для кортежа определены операторы сравнения. + +### Инициализация + +Инициализировать кортеж можно привычными способами: + +```c++ +std::tuple t; // uninitialized +std::tuple t1 = {true, "Book", 10}; // copy +std::tuple t2(10, 3.14, -1); // ctor +std::tuple p3{true, 2.73, 0, '0'}; // uniform C++11 +``` + +### Доступ к полям с помощью `std::get` + +Поскольку кортеж не имеет прямого доступа к полям, то получить значения +полей кортежа или изменить их можно с помощью шаблонной функции `std::get`. + +Функция принимает кортеж, а в качестве параметров шаблона внутри `<>` +указывается либо порядковый номер начиная с `0` и меньше количества переменных, +либо тип данных, если он уникален для кортежа + +```c++ +std::tuple tpl(10., 'a', 10); +std::get<0>(tpl) += 1; +std::get<1>(tpl) += 1; +std::get<2>(tpl) += 1; +// tpl = {11, 'b', 11}; +std::get(tpl) += 1; +std::get(tpl) += 1; +std::get(tpl) += 1; +// tpl = {12, 'c', 12}; +``` + +### Создание с помощью `std::make_tuple` + +В заголовочном файле `` есть шаблонная функция `std::make_tuple` +принимающая произвольное число аргументов различных типов и возвращающая +кортеж из переданных аргументов. + +Удобство заключается в возможности использования вывода типа переменной, +если написать ключевое слово `auto`. + +```c++ +auto t1 = std::make_tuple(15, 'c', 3.14); // std::tuple + +struct Product { int count; double price; }; +auto t2 = std::make_pair(true, Product{10, 3.14}); // std::tuple +std::cout << std::get<1>(t2).count << " " << std::get<1>(t2).price; +``` + +## Функция связывания `std::tie` + +Шаблонная функция позволяющая создать кортеж ссылок на переданные +аргументы или ссылку на специальный объект `std::ignore` + +- применяется для лексикографического сравнения структур: + +```c++ +struct Pair { int value; std::string name; } p1, p2; +std::tie(p1.value, p1.name) < std::tie(p2.value, p2.name); +``` + +- для распаковки кортежа или пары (так как пара конвертируется в кортеж): + +```c++ +int i; +double d; +std::tie(i, std::ignore, d) = std::tuple(1, "Test", 2.0); +``` + +## Структурное связывание (_structered bindings_) _C++17_ + +_Structered bindings_ - синтаксическая конструкция, введенная в _C++17_, +которая позволяет распаковывать составляющие составных типов данных +в отдельные переменные. + +Синтаксис: ` auto [...] = ;` + +Работает с массивами, структурами, парами, кортежами. + +```c++ +int array[] = {1, 2}; + +auto& [first, second] = array; +first = 3; +second = 4; // array = {3, 4}; +``` + +```c++ +struct Product { int count; double price; }; + +Product prod{10, 100.0}; +auto [count, price] = prod; +auto& [ref_count, ref_price] = prod; +const auto& [cref_count, cref_price] = prod; +``` + +```c++ +std::pair p(true, 10); +const auto& [b, i] = p; +``` + +```c++ +std::tuple tpl(10., 'a', 10); +auto [f, c, i] = tpl; +``` + +## Перегрузка функций + +Перегрузка функций позволяет иметь функции с одинаковыми именами для различных +входных аргументов. + +Перегрузить функцию можно только по аргументам, изменение возвращаемого типа, +без изменения аргументов **НЕ** является перегрузкой. + +CV-квалификаторы изменяют тип, поэтому добавление константности к аргументам +является перегрузкой. + +```c++ +void PrintValues(const int* begin, const int* end) {} +void PrintValues(int* begin, int* end) {} +void PrintValues(const int* array, size_t size) {} +void PrintValues(const Point& point) {} +// Point PrintValues(const Point& point) {} // compile error +``` + +Функция, имеющая значения по умолчанию, имеет перегрузки функции, без +аргументов по умолчанию, причем количество перегрузок соответствует +количеству аргументов по умолчанию. + +```c++ +void PrintValues(int x, float f = 0.0, char c = 'a') { + std::cout << "x = " << x << ", f = " << f << ", c = " << c << std::endl; +} + +PrintValues(x, f, c); +PrintValues(x, f); +PrintValues(x); +``` + +### Перегрузка операторов + +Поскольку операторы являются функциями, то операторы можно перегрузить. +Что позволяет использовать операторы для своих типов данных. + +Синтаксис: ` operator(...);` + +- `` - символьное обозначение оператора (`+`, `<<`, `==`, ...) +- `...` - один или два аргумента (для унарного и бинарного операторов) +- `` - тип возвращаемого значения + +**НЕЛЬЗЯ** перегрузить операторы: `::`, `?:`, `.`, `.*`, `typeid`, `sizeof`, `alignof` + +Перегрузка оператора `<<` для вывода в поток: + +```c++ +struct Pair { + int value; + std::string name; +}; + +std::ostream& operator<<(std::ostream& os, const Pair& pair) { + os << '(' << value << ", " << name << ')'; + return os; +} +``` + +Перегрузка операторов сравнения: + +```c++ +bool operator==(const Pair& lhs, const Pair& rhs) { + return lhs.value == rhs.value && lhs.name == rhs.name; +} + +bool operator<(const Pair& lhs, const Pair& rhs) { + if (lhs.value == rhs.value) { + return lhs.name < rhs.name; + } + return lhs.value < rhs.value; +// return (lhs.value == rhs.value) ? lhs.name < rhs.name : lhs.value < rhs.value; +// return std::tie(lhs.value, lhs.name) < std::tie(rhs.value, rhs.name); +} + +bool operator!=(const Pair& lhs, const Pair& rhs) { + return !(lhs == rhs); +} + +bool operator>(const Pair& lhs, const Pair& rhs) { + return !(lhs < rhs || lhs == rhs); +} + +bool operator>=(const Pair& lhs, const Pair& rhs) { + return !(lhs < rhs); +} + +bool operator<=(const Pair& lhs, const Pair& rhs) { + return lhs < rhs || lhs == rhs; +} +``` + +## Асимптотическая сложность + +Асимптотическая сложность — это математический способ оценки, как время +выполнения или объём потребляемой памяти алгоритма растут с увеличением +размера входных данных (`n`), когда `n` стремится к бесконечности. + +При оценке игнорируются константы и младшие члены в формуле, что позволяет +сосредоточиться на основном факторе масштабирования. Оценка позволяет +сравнивать эффективность алгоритмов независимо от аппаратного обеспечения. + +Обычно используется O-нотация («О большое») для определения верхней границы +(наихудшего случая). + +Распространенная асимптотическая сложность: + +1. $O(1)$ — Константная сложность + - Время выполнения не зависит от размера входных данных. + +1. $O(log(n))$ — Логарифмическая сложность + - Медленный рост. Удвоение `n` увеличивает время работы лишь на константу. + +1. $O(n)$ — Линейная сложность + - Время растет прямо пропорционально n. + +1. $O(n \cdot log(n))$ — Линейно-логарифмическая сложность + - Золотой стандарт для эффективных алгоритмов сортировки общего назначения. + +1. $O(n^a)$ — Степенная сложность + - Время растет пропорционально степени размера данных. При больших `n` + становится очень медленно. + +1. $O(2^n)$ — Экспоненциальная сложность + - Чрезвычайно быстрый рост. Практически неприменимо для задач с `n` > 30-40. + +1. $O(n!)$ — Факториальная сложность + - Рост быстрее экспоненциальной. Характерна для задач полного перебора всех перестановок. + +## Последовательные контейнеры v + +Стандартная библиотека _STL_ содержит множество шаблонных классов, которые +представляют различные структуры данных. Как правило, их называют контейнерами. +Контейнеры способны хранить произвольный тип данных. Контейнеры представляют +собой коллекцию элементов определенного типа. Контейнеры предоставляют +удобный способ взаимодействовать с элементами + +В качестве параметров шаблона внутри треугольных скобок `<>` обычно необходимо +указать тип данных, который использует контейнер. + +Для последовательных контейнеров определен оператор доступа по индексу `[]` + +## Контейнер `std::vector` + +Контейнер `std::vector` предназначен для хранения массива данных определенного типа +непрерывно в динамической памяти. + +Контейнер обеспечивает быстрое добавления элементов в конец и увеличение размера +блока памяти под элементы при необходимости. + +Для гарантии непрерывности памяти, при добавлении элемента в заполненный контейнер, +происходит **реалокация** всех элементов контейнера. + +Заголовочный файл: `` + +Синтаксис: `std::vector ;` +- `T` - произвольный тип данных +- `` - имя переменной + +### Инициализация `std::vector` + +Доступны множество способов инициализации вектора: + +```c++ +std::vector v1; // empty +std::vector v2(v1); // copy ctor from other vector +std::vector v3 = v1; // copy ctor from other vector +// ctor +std::vector v4(5); // 5 elemets with zero value +std::vector v5(5, 2); // 5 elements equal 2 +// initializer list +std::vector v6{1, 2, 4, 5}; // with elements 1, 2, 4, 5 +std::vector v7 = {1, 2, 3, 5}; // with elements 1, 2, 3, 5 +// iterators +std::vector v8(v7.begin(), v7.end()); // same as v7 +``` + +### Устройство `std::vector` + +Контейнер должен иметь **указатель на данные** (адрес начала памяти в куче, +выделенной под хранение элементов вектора), **вместимость выделенной памяти** +(сколько элементов данного типа можно положить), **текущее количество элементов** +(сколько элементов данного типа уже положено в контейнер). + +Условно можно представить себе, что хранится 3 поля: указатель на данные, +размер данных _size_, размер выделенной памяти _capacity_ + +Контейнер имеет размер 24 байта. + +Фактически, стандартный контейнер устроен несколько иначе, внутри хранится +3 указателя: на начало данных, за конец выделенной памяти, за конец элементов + +Элементы контейнера располагаются не на **стеке**, а в области памяти, называемой +куча. + +### Обзор методов `std::vector` + +Контейнер имеет встроенные функции для работы с контейнером, такие функции +называются **методы**. + +Доступ к элементам: +- `at(size_t pos)` - метод, принимающий индекс элемента и возвращающий ссылку +- `[size_t pos]` - оператор `[]`, принимающий индекс и возвращающий ссылку +- `font()` - метод, возвращающий ссылку на первый элемент +- `back()` - метод, возвращающий ссылку на последний элемент +- `data()` - метод, возвращающий указатель на начало данных + +Вместимость контейнера: +- `empty()` - возвращает `true` для пустого контейнера +- `size()` - возвращает количество элементов +- `capacity()` - возвращает вместимость контейнера +- `reserve(size_t count)` - выделяет память под `count` элементов +- `shrink_to_fit()` - уменьшает вместимость вектора в соответствии с `size()` + +Модифицирующие методы: +- `assign()` - заменить текущее содержимое на новое +- `clear()` - очистить содержимое (без фактического очищения) +- `push_back()` - добавить элемент в конец контейнера +- `pop_back()` - удалить последний элемент из контейнера +- `insert()` - добавить элементы в определенную позицию +- `erase()` - удалить элементы с определенной позиции +- `resize()` - изменить количество элементов контейнера +- `swap()` - обменять содержимое контейнеров. + +### Вместимость контейнера `std::vector` + +По умолчанию, неинициализированный, пустой контейнер **НЕ** выделяет память +под элементы. + +Инициализированный контейнер выделяет память ровно под количество элементов. + +Методы, проверяющие вместимость и размер: + +- `empty()` — возвращает true, если контейнер пуст +- `size()` — возвращает текущий размер, количество элементов в контейнере +- `capacity()` — возвращает вместимость контейнера, под какое количество + элементов выделена память + +### Добавление в конец `std::vector` + +Контейнер оптимизирован под добавление элементов в конец. + +Метод, добавляющий элемент в конец: + +- `push_back()` - добавить элемент, принимаемый в аргументах, в конец контейнера + +Заполнение контейнера в цикле (не оптимально). Несколько раз в ходе заполнения +контейнера произойдет реалокация, то есть выделится новый блок памяти в куче, +достаточный для элементов контейнера, и все элементы будут скопированы по +новому адресу. + +Как правило, при добавлении элемента в полностью заполненный контейнер, +вместимость контейнера будет **увеличиваться в 2 раза** + +Сложность: **амортизированная O(1)** + +```c++ +std::vector v; +size_t capacity = v.capacity(); + +std::cout << v.data() << std::endl; // int* (address) +std::cout << v.size() << ' ' << v.capacity() << std::endl; +for (int i = 0; i < 100; ++i) { + v.push_back(i); + if (capacity < v.capacity()) { + capacity = v.capacity(); + + std::cout << v.data() << std::endl; // int* (address) + std::cout << v.size() << ' ' << v.capacity() << std::endl; + } +} +``` + +### Доступ к элементам `std::vector` + +Доступ следует осуществлять только к валидным элементам. + +Доступ к элементам осуществляется с помощью оператора `[]`, принимающего +индекс, и с помощью методов: + +- `[size_t pos]` — принимает индекс и возвращает ссылку на элемент +- `at(size_t pos)` — принимает индекс и возвращает ссылку на элемент, если + переданный индекс (позиция) невалиден, то выбрасывается исключение + `std::out_of_range` +- `fornt()` — возвращает ссылку на первый элемент +- `back()` — возвращает ссылку на последний элемент +- `data()` — возвращает сырой указатель на начало данных + +Доступ к элементам вне диапазона контейнера, получение ссылок на элементы +для пустого контейнера (`v.empty()` возвращает `true`) это **UB** + +### Итераторы + +Итераторы - фундаментальная концепция языка C++, выступающая в качестве +обобщения указателей. Итераторы обеспечивают удобный **способ доступа** и +**перемещения** по элементам различных контейнеров. + +На данном этапе будем относиться к итераторам, как к удобной обертке над +указателем. + +Итераторы имитируют поведение **указателей**: разыменование, арифметику, сравнение + +Существуют разные категории итераторов, поэтому в зависимости от контейнера +поддерживаются не все операции с итераторами + +Каждый контейнер имеет **свой тип итератора**. + +Например, для вектора целочисленных значений тип итератора: +`std::vector::iterator` + +Константная версия итератора имеет тип: +`std::vector::const_iterator` + +Используются для реализации **range-based for** и в алгоритмах стандартной +библиотеки + +Как правило, можно получить итератор на начало (первый элемент) **begin** +и на конец **end** (за последний элемент). А также, их константные версии +**cbegin** и **cend** + +### Итераторы `std::vector` + +Итератор можно получить воспользовавшись методами контейнера: + +- `begin()` — возвращает итератор на начало +- `end()` — возвращает итератор на конец +- `rbegin()` — возвращает обратный итератор на начало +- `rend()` — возвращает обратный итератор на конец + +Также присутствуют методы с приставкой c возвращающие их константные версии. + +Чтобы не писать длинный тип используется ключевое слово **auto** + +### Итерирование `std::vector` + +Контейнер поддерживает различные способы итерирования, **range-based for**: + +```c++ +std::vector v = {1, 2, 3, 5}; +for (auto vi : v) { + std::cout << vi << std::endl; +} +``` + +Итерирование по индексу (порядковыому номеру): + +```c++ +std::vector v = {1, 2, 3, 5}; +for (size_t i = 0; i < v.size(); ++i) { + std::cout << v[i] << std::endl; +} +``` + +Использование прямых итераторов: + +```c++ +std::vector v = {1, 2, 3, 5}; +for (auto it = v.begin(); it != v.end(); ++it) { + std::cout << *it << std::endl; +} +``` + +Использование обратных итераторов, для обхода контейнера в обратном порядке: + +```c++ +std::vector v = {1, 2, 3, 5}; +for (auto it = v.rbegin(); it != v.rend(); ++it) { + std::cout << *it << std::endl; +} +``` + +### Метод `resize()` + +Метод `resize()` изменяет размер контейнера, причем в случае увеличения создаются +значения по умолчанию, в случае уменьшения вместимость контейнера, как правило, +**НЕ** уменьшается + +- `resize(size_t count)` — принимает требуемое количество элементов +- `resize(size_t count, const T& value)` — принимает требуемое количество элементов + и значение элемента, которым необходимо заполнить контейнер в случае увеличения + размера + +Сложность: **O(n)** или **O(1)** при уменьшении. + +Тратятся ресурсы на заполнение **значениями по умолчанию** + +Изменяет _size_ контейнера, а также _capacity_ при необходимости **увеличения** + +### Метод `reserve()` + +Метод `reserve()` выделяет нужное количество памяти, не заполняя элементы значением +по умолчанию, при этом _size_ контейнера не изменяется, а _capacity_ может только +увеличиваться в соответствии c заданным значением + +- `reserve(size_t new_capacity)` — принимает новое значение вместимости контейнера + +Сложность: **O(n)** + +Если известна требуемая вместимость заранее, наиболее оптимальный способ создания: + +```c++ +std::vector v; +v.reserve(100); +for (size_t i = 0; i < 100; ++i) { + v.push_back(i); +} +``` + +### Метод `pop_back()` + +Метод, удаляющий последний элемент: + +- `pop_back()` — удаляет элемент из конца контейнера + +Как правило, просто уменьшает размер контейнера, или перемещает указатель на конец +элементов, **НЕ** вызывает реалокацию памяти + +Сложность: **O(1)** + +`pop_back()` от пустого контейнера (`v.empty()` возвращает `true`) это **UB** + +### Метод `clear()` + +Метод `clear()` очищает контейнер, _size_ = 0, но _capacity_ **НЕ** изменяется + +Как правило, просто уменьшает размер контейнера, перемещает указатель на конец +элементов на начало. **НЕ** освобождает память + +Сложность: **O(1)** как правило просто переносится указатель конца элементов на начало + +### Остальные методы `std::vector` + +Основные модифицирующие методы контейнера: + +- `shrink_to_fit()` — уменьшает _capacity_ в соответствии с текущим _size_, + реалокация, **O(n)** +- `insert()` — вставляет элемент или диапазон в произвольное место в контейнер, **O(n)**, + вставка в конец **O(1)**. Возвращает итератор на начало вставки. +- `erase()` — удаляет элемент или диапазон из произвольного места в контейнер, **O(n)**, + поскольку необходимо передвинуть все элементы контейнера, удалить из конца **O(1)**. + Возвращает итератор после последнего удаленного элемента. +- `swap()` — обменивает содержимое двух контейнеров, **O(1)** поскольку осуществляется + обмен указателей +- `assign()` — заменяет содержимое контейнера на указанное значение или на диапазон, + **O(n)** + +[и другие ...](https://en.cppreference.com/w/cpp/container/vector.html) \ No newline at end of file diff --git a/03_week/03_data_structures.pdf b/03_week/03_data_structures.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7b5b63599b794dc4d75bd99a57e31a5d3ccab31e GIT binary patch literal 308213 zcmb@t1ymJn+cpdmQlfN9h#(C+VS|9u(hU;Q-LL^^5Re9?JEcPqB&8&j?vidP>5%dt ze4h7~=lS0Cul0TR?Q#~ghheT`U)OOS=W(7h!>AxC&H>_t;xGdT zKju;~M_L)vF>^z7jr5WFx{gQ(Cqtx@gRvtE4ws07u|Cq)fsR?$*3I0?N}mhH$xWxt ztN{Y?)5)0IIK8BM$qUzoL$z7xp4!=28LJx`NSh+?;S;2$T~H;-(X`GB!jy*xGOb zpCQ1Q%K9ey4(9*9FaS)!!Pdyh&=^3bY-z5~1$;R=Yv2<91KHfxMpPdOd@E5tFgF+m z0(0|#z+fIQf{mN|5%3>4PuAAx|Nj(0K^$Wnqw7h6{Fy96eL4^hm#{1ymz=GGwZ7G# zlMsJSQgO92rsH~QV`GcN;Zk-oK>q#=%$Fq&mpC01_u)3B z0Y(LbVGsZbm=lJ8A`o-$usp!RWvUD6l@i;lRM0a1a;< z`wNb(ow37p0P7mrB5%Ne{*&_p1_lKKC=i@H0CV7Ua3Ex%JOFe4PZatN4z?~gaKQdH zjz2L2=LU2F!OacOgol?C$_+4<4i18HBA`65KkMUU14zRS1n|F&;Ln1VoJ8}T-Z~{pR#`{;~I3oWwA-bl1phT5|3#9&FRp(g2MPv8y$;nI(gp<_+qJp+ zPb9xd^55(8_f_@=OSri?d9O_f9T)(>3*=!09TW&AI1o7h2?c3>lOum$SpQ&v07e83 zEDR7c+(3r;?FAq}8U}pte=zmhNgF#D8|fOD+ZX|Ye^X5UzP#QT`wt!<4RZr|7)JMh zi|6kP?X?B?_t<~ofpEh)xdB~+|KH+){C%;#G4>xk5Fimku5|kZ9e@z@+6DJ$MDcrO!kiRdzf8rYg1qKHJ zYz9{Fx7CNhcsarFn=*3~&HvcSKN1Z2`x1O(dVq`w0~{m(=&wWo0TvDlxoH**%uRJ| zb%7d7|Gy^Y?@RCvDBQf9Ks0f~0kr}0BbA$gZl%uh|ld%obN#9D>(AEa2 zZ*F6J!@@xRNg)RFK!8m2J6i+B1u%1f`hfx8$qfNA_g~DpP6^IHO$iwP|4dInQU1@B zh+r5{n*%NZK=7Bn1jFG#F~S4m`QNbo)mpg0o4+s1e^?BL0JfVO#trygfGylW0S)Xy zc{#b^H^b`2Ndo!%vU~#%2pAi%4c7$$m=grl_5dC*0ton3)11ftSpgaI33IXTl{!a`1Z!Z70AqN!epJOu!emyb|4CuK4^*!J%t}E(m zc?P^O_a8c&0}1`QqP~&Jq5q^3Uk?rfbdKj*{D4vkejVW;80@+q1p5zj@h8Op7f63! zj&H0I7|7wkKR5sh0+hJizh?$$@d5oIIQM^guK!V;-;jXBb%Qv6UzTq`0yz#b6& zHxk7kT?XI)+H(`nKPk;T*Fyt^|1}!uP~8Q<*W0r3C1NCy%*0!WuYYZD9y`gcIB2Lj3} zP9C5?f%so_=l@I-fM5FykGQ!Nz;-$=aVwzXENX0MYh;YWC1Y%3iZlb{3}^@m3eo|Y z&sg6Y=Vi*a=TyW)MAVGCm)K+6H(Wbpdh{9fg%0U1ARobucd5Sj8k!@nXzxYr83fAp zZx?QDd<}kunNa$bXyIXR81h?qN9#}4U-gN}wU;M;SL`kKbEX@wj`!2K#yS{kUsC5Y_<+-bsF~N(=_gudY zxvq}Kf1U4d>b|&IhfQlgmWnICSeetcqDpUYb?II`j-PvRHF+wZe)VOW>(^TQDnp(X zgV#a)FQ;?UrKWesV!UDYV~_IYF1|I|OUP8!M6L3?uk|E~Gz-OrZ9tB~ZC`=1)2%E* z%EN5K_V#7@LO|tl2&my4Wm5TZxWueQx3_aii9=12<0#jQ%ZwosT?Ylt7uy-_%No)w zXRbvf4IX}OH~c+g&ZIeh;+s_9UT3?)5!E>p zOjrCDC%L-e>1*3r%0%zWw?k0nq}(&xq+Z*D{U!}m9q{UIj?vDBOHa5?l5ST5D!n`O z^iIX9?Bu830-0H$!qG^;XKlI#y>@VbH{5c?UQ`lIb}qOVa?1@i?l-ey|7g2V_JV2 zd=^%<``Dl#uSg(8tbjZI{mVe?kfP@Yw&#PiAeDMKdf`N$$!5kHq9dJ<83Mn(>efff zHWJ~Zoymr1stchjl8j4Y3pVZ4f@+aXWm&&2r{?Z?U-7Pp#rJXX-M@Sp?Ct#Wq%Xdp zTLKJcn*DhA@&4W9BB-64^%_Hxc5&!hFDGp~MU#hqdC|W6QGP<&h3-I=ulKLb(4!+0 zzc0}CN46jVPehq~?8}N-YWh*~JspAK^2~S1P9!~hOgI~|SO_diC8x&e#w^&qdr|ez z)gzLMIG%f@TH?U4C`F`ZXRWvcd*LRido1Emg0PDR8LjO7nLBy|Nf0@OLjtrKF3+Xx zZbMPC)-K7ZNRS8e{`A8xV|vsqoWh&UrMJd|{AU z_ST|xtikg#1*Ks{ZR}%F=iWewU`&7*j5f2*jLc@t!zYYr%~DW`WB*e~!79^`Sk``C ztZ7Ku!j-TP-V2TSp%R|pXEc-yi(At;SmF~S?mK9A%0ZuJg5KQ=AV{#3@(S8k-n!T< z#(9=jcq}e+=h-)xG>m&nRMOeTIBX9WM8!;%(@?{3_qkRjM1F8RX4xf55M!Y1fn9!29=W&E${58YqV7P^Sn6z zoUpNbvY><pqc=8_A33$6$%6vtKSVF+hvd@v9iujF`(sTk zM=(YiwH<#IT-J`a-6n95wYUBvjMq7)oW7c$!(E8()ztoq zYumGs)qlC(BIY>pJ*9}PwO2o@Q}Bb8QbSZ00fo2cf^F(OTI1%5`;Xerb0i*BCJ)r5 zWLIPetU4I-6%RBHSgsh_$jkR>xOQN-L2)pSlSXnN{~g8>1F^EN z8cfGr6Ig3>#-E91M5L!TiSra*Y5P^Qi5zC2!vv@s&xh06xYM%xTRE#*kF5L@9QLu| z8MNU3O~gx09;AJ0WrQ`&_#OAp~N$RN6 z)kEl68)j(SO*( zP49uQ8&g_y*Ym|5-=`cPl_>qSk3lan`O|3peBa_Co^)G&ow=PvdUjcNigc1kFh1ho z7=A23B{$Q+@GZWzce2LH8vp6o@EGRSr;n&p)$qXGOLI#!rdd=sS(GX2M=1RfM0!K; zhD@K}yM~jKJ|Xpf&hVCwzE!Ii&hRsb#%Bd@fA;CrCEJ=(PI!b8p&oel$Ml8!YJhp} z8O%(ZlQQ)SJZsN%CkyTkl5sV3l(g8RuXv9>F{ysbYHA|oXg|$F0=q0a8-3shGb(G} zYbwV++jGh?PhB*(+3_~ohq@f+nto24r`Eb!bs0Zbsy)LoWr@agc_m}+R^DQ&H!FcQ z)*0(EV4vbX3*hW9ogLrM_b9EVMthO;LOA&up$BWWi+Hp^NYS$trV3x_H)-A(4fhH5 zu}3*na_;$1)`x{C{EOxOoSQNN4%m%AZI}eAQcg-C2_tHoV*sD4%`wB7{jj^v@#>>xy+9?&j=q^-gXl#_<#I_lA z6P|jev5sxcUw-l6t~Eb)(Gby@^Jgjf-TEP-ivVCNJw$I}6KK(85op-~4!=9}FJl!r z%dx5W7G(2vI@M-|k9%e@7DW{^NJ*74hOtnac~b>fpQ)%3-2T+9HztW7n3GSwEE#ln z%c=)$$|;TRVfFkFb>o|@F5$ddCAU|Tv1xkFIgb+9fK6u|I~RMnSSqrakF2Nk@Q`z> z@bJ5y8BLPTy8gbIg}nFxVFF%uyMc>gn&|)Vczy39jbwC1^IP!71q|A# z*Azj8#CCu^2pmw&m#qI1R1`=)Zn|e{xm}dl3tlhmhP6sQ4N}q_~LsXtAMbU`IH6YBs-? zJ3lW%WV^PpWJ$1X;;U`b);m#pT5XlA?Dc|HGu-aF?5Pv89?>op+Gj~t5lKUs?>aISHajf_GQWFhQPrH&EpHLr^ zapjab)N>#}rg_@mgzrafb|1Sd2e%NU5FC84k6{=nj}%H0@3GEf44r6%e2?wgxO!&n z`0Jt39f~gt=6c-4Gr$2=yv?sa(pB2aUKFpZa19}R(uNT}nf71eJPOIysh{+(Q%Zzy!xX<*~Aj zxKSOikJ9Y@CmIp8oGhKqDR;|DY3PavD{eFA%%J%@X&FQm{oaisq?C7BaH!iyp(lSu ztb2@-^Kend{0IfRxFS=arjKg<^VlfbJHO1t1n0Z=q9rQ$w`u5%$xFx#I7*6H(7ox4 z2N-`sYJ3Vic@_1C7H=uV=sY3e%eX7Z-j~LsV6jlnNoSb>2kFqSv}&brulbwfR6q>yB{?#w!^XpOI!mnpGr`}Q2_2Ir3LY+ZKHh!O|6f0+E zCzSSY0z6i?$4&SuTC`V`H7vbSh_b3x3M{dRlDfN2T`L zj*GShty>D#_}d3p}~hIi*C-e~uwvJw=%s|d|^eBK~* z#-GaaEyc~d#?a~4_j_v(Ri%({qE5ceSe}hbMVi8sz}k{o+E{6=ToDJ)!7J1q`HtYx zY<4FhuM9Ni`cYIP1>yBCz@C#Y}krGh^8k0s2s?orNcUQC7CDx|`p9J3~{~V`RK0 zQDYdJzlmplLc?T<3Fv(?wVF+cIwnla%J;~scwdyzd`|b!WwxgAZr|#sJ;VBx`)E|| zq4tdjU4eR}7t)2U_sCP~j>foLalI=;fT~ig ze8Pyx)mc44x)PBjKLU~!xKA&u#2CN?C6IO0traN}os?t?LC6)!2Z(GUaqNrNc1rQl z`Wr3ZkI&Cjf6mZ+2V?R8Gx2$Nsr!84uSb9RsbUS~ZpJ|-liqnI z)6R6<94?;MfpDLL-f0cf=`DfVFMU$c9ycGO+#PWAktidWe_G><_V{oGk6D2Ma#)7s z@gs(oQS{K=GMO->cfynmVu8F7?n$PP59o#PX5Sj5i|7Ju6ry=4b@JBZ<~~#!J$Iik zQ*{`?W&1a8O#$0~4)JA*b8)#R zaU__hr$5Ej58&)vyR)m|cY&vs9r(@sTMMSWg)r%C4n|YDU0a9r_N<)68i)3j>$~&* z`iESmk4$ya#Y)orB9VIH)b<;-2kT$QcI`=1yj?FJ%kT3|W^Z?@pSDNdTCw4!)TRsnxPb#tnN@Sv%~{-kEA_GEE&#*R(~8Gm7)z>KfxZj zkU|*hs~tI#!{KC@=~^z;_dne*y~E$@O>ByjKQ`aW0dgaz)D(r`asx!0huUPAj~aq`pkBy{cG$ zRPsx*)`lT*sMq0*!ULo?gy%Jd$%l>z&1Oo|TNAjqEi=~Hk|+ZTVMFL;WQA#&OqSX% zd=~lGk@c%cc47mJ3F!xxm7SDasZ7!fOwjpr6xg(ptXTv+cxtxT+&=F;SJl`4Coc9e zzE+{*rz$REaSIpH%flSL`>FNk)#zQJKhR?aAo*mP((kl4J7Ne~80s-(eS?SP4coS# z_wM~5WEu7?%p!_YcYP3Cxx;l>Z%`j8m&|5!x^L1H&SM@{d-vXB3w+_6?9+v3Dj}ii zf)d8E*aBar*xRZJ!&G0yb1%g`B&wXz&Sw2c`1&>pm_(@V>+_56k5LZ;`IIZ4CaFyG z$UeExD67gSVG0|R9o9vN;)*?g7Fsw69~;r|W~I?AP!97H6RN-=%l5ZjszVhcMrTIt z_C3LWZJw72SU(9{p|N>6+C4qP+g*FanO8(E8MenU2l$ozJ;6TOT+#)BR$-UZSF{Zv zdZdt>M|?INc?B=dE0C!KYDPsi%ES+5tPUGNq@F1)U)f9`KJi^K2VxX{vQCt$^8w$q z`xvk8NId1Xu_qpgALh;x&&94s@`US9PC!F~ear>9-pPq1CxGub7|cRv$l&q}x)@n~ zD6z=|iJTFyG+iW~meglwxZdg)Jk)fib>jd&#IZ>{4bbsbdcDk?Z|p)m;;{1jXJyi( zQ&W3ltjG5;&NBFLYH*#1zw3=CX85T|pho9K+%op(!->(~VAdNe%zhFu&*lG{#qo*8 zpNd6RG<4ksf)#Iv&7b3lpakRkHu$bD(JJ1zqL;??=QmW(@7k+lFg!YSADga7 zm~`A-xI4yA74Wr<>?4yK!$I>mtIf!-hhFIhD?^1Eh=Mnk5KA@APVqi|jIxxhq9T)( zebQH`&iE}T^#jG<0!)fb0<=o{l485nfsNcQRPkIn#suaLYpxW;Pg2%RF*ISd--kR!3@k z$6qz7IQ`QfdCzXkkqhVuKHFWTUErk{SKD4u4)?yyVSN9ov5^aFVfX4_z-=WOl91uV z`{Y##gJDhGkKVggVLgi*b#t^6ymIK30a&kk7e!9?yPdtTHSn<4Gz)ju;(ZpB-Ro4} z*J7w>y#IZu^rhZqvGo0ROP}z0w1HJ6%y0d5BNLu`cFJ|EC11_SUDf&y!Vb7H)7dS( zY^+7Ha2I`P8z#M?@@m7+YdrWnhiyKM?4kKR`o`sNz}N+gYKv;*;~&$wUHr3!KiYa- zo+tk2J&DLWscoyu1euG$4_-9_b;hUUN8TpxFATXVOm_mgQeJ7L?7FQbbH0uR&Ze_WH)r!SQCVX(krUzQ&Y!&_BFvLhl0&32 zy@RZl;iDcq34{BHBB!qZ&OfHwwaQaCi%w|f@ci!k;Jxo(24$AQK}``XYxYTSw}hP8 z+0Q@m3ZYt6ChM7l#Ul74@yFg%_*3rwr$5UsPZwSD>b|U$apoPUNbni3cBIWF;`S*g z{l2yeneMH30g3l={M(6SohUC;)_3Zw@4d)rA11&2VIJlcxghRM(i*OR0_`XxsY9!J z_USHW6Q@!9vRCY%W3NXoN+1Br~r^ zd7QT5d8)rM-Li~IOQO~R$$q>I?&2-}+xEWOPp9u~$8F!Sa)gPy6SQHt^&MkY)lz1U zf{_pJ@#BoWowtf!bHjD^bK;vQ8JZcwkOkG(Q#uVm&9}ww#gjknZvIg!ZooW#~}R=B6WmB@kBN#$d30* z1_}A|;h=NWfj-8s2C@I(F$q06FSsQ3l`v$7wCtv1#xp5)`W~5%VUqWN?R)+0ZA-dF+sVkQMJfJS51~l5{3MRFqPPC?Jtec-XCD zXtiswEUUyg7%AA^=ERkss`Lqvvi1BCtT)1mgK`khI zYY5cafDlf~jwVd%l>*D2cP5oTeq3(H{;rJMoxN7nATtN?jz?`5vNJZOIqkZ$Z(d)O zyU4og@okVix5UzXh2vt-J;~2`#)`?xvMOx1XZUm~$mimGvLV;>#LL{Pdj9HV$Ij0E zk2s8B*=j#c5f;XG4Ie{$g8cp86itt=9K5xH;{pq78)+cSuasl0ojuYfa#u5e(Do~( z2kUqszL$y5C10091a7&!{ZMtNdahT1(To1gH5ZyOVeb6Ov(j}^hwlfr6HcyHKF*?d zHaV6vSte=VqNmLK0%9Xei4%h#?gxH!n=gBa>aJQ$gJ|6p3 zC2<*T=mvr2de?XCLQ;XlG3@CG&7<%7=oqUesc*fT8hIHw44x)V+`XE&ML%{ovZ+MP zpW$n1Ktvn!^g+4x1RnCTpp40Jfy(=02uxBuP{;a2SkQc7P7xY+%2Lae3Q#O>m#cX6 zsl4S(%YU$Uj(cgN7BsS2`DS^mT0MpO@)))1TTH>x6!suxoYX$M^CbCL;&8XYY*1i> zTdt|i314znT7gF8gFGBLHW%Syl3S#T>ccjtsg8PAZyt49y?sRL)E8|R5uLZ05oiim z>?_g(2ak6zGri|9c>KPV<-v<`kr+c`p$eOLVF9VOoX6cS;yn1II@opK4_-TsFJAkd z9pkaY?1t^~>svQPXnvWE*4Hc)=h7wKaF+|Fgck%Q;oP{9$Of}?C;#_ehb#t zeVmRpTKfg)97LwQt?8V`TplqL7u32JD?!WYmyd7zk_8|CtPvE{br<8P`|{%HNQh(0 zXyC9`bqq4WKu6;db1PqREs)z59I3yo8ovm=vuCxSOyhNGxHoLJNGKGZzg|n@i-F{1 zz_#LIpvVkQjcC5bPdkEA1#E7D`KVhS3TWi73F3EI6!3VJPN9_8DdNxghfkB6A;J=O z`!r^U+QZHU^-Pd&Fa?%^a9tsbl3@vNpBYSq>2nsR4$6_d5*Jfd6JP#HFl_dj6ola% zk#K8@A(y}jSB^kgZ!L(WOuzu=kovD*Jn08c^dNet`yltu7{z>b(E1QYFKd&SjQIdm z{!*+hhWsgH&X!;};A3SHa6QJ~CDrKgk&i|3Ppr&uMT2TKTH0kU|Ma<3=q(SRMW~WMExPIG?ft%V! zW;1Pl%Cd7mZGGkA2>xKC%iH+K<4RLES7!Szf->qTonslUR&p1%2%g+{)TuW2Tw7$P zdCm9MI>(Lpv&J#;!`{A`b(##c;Ra#s0iA$nqn8qiS?4iec^9Zj#Sc%QUXqZjP1KTB zT-@1mt|FMI@^*7q)CId$#D=3db2i{@8T>jl;h)CB(;DkCrg%+#r01I8`Rfq4-Cca1 z*UU%N)9CF$25nu{Gh<5Hwp$XW>9whdeZlm4(5;*-km?!MmGEz2KauD2NpSeyN!Yz0 z9uVIej$JMPC1p$`%r;}B&G7wr7)=f(+0d(LcQ%&Q$DFTYv22zoFYgU~zo3s642etVM@6o8XzJEr#?( z>J2~M#wfm>vs%lo2l0U6zY%*BNw;8`200ryg25BJ#&NFiQ9w4S!w21z4RN<)R+Me zrX=%K`5yx~iQ4ZzieBWZ@-T`NIbzwdFPf@p7CQ}0rA$YNozte9F3(uDIK9_Oaz*nx zq{&}HFTW$W!}8_(FuxqaD_x(R?8n;|G@&W$SXLBE8}cd$Mlo6*?;o%2i|h5NH=Rju zPk52u{%%74rH-nj`~^ivjohIX`4_3z_TVD@V%2Pz9KHuxO2I0Kjer+!U zjHYbq0W?SR&(M&NFc9HS3s@M&*yJ1M)`a>D3ixdi$o0v;yP~hl!C_<4jo>iVzt}|1 z#~JdDfET?KW^Bh9s z{W|9M0gV?F;Dz!?yqdZ>*nZlsAq+0zPO~LOy7fldldg0;aLP{c7hJR});w`tc(BF{jw7DXykbTK!Ph zcRps0%u>Jf_OV2%lCIK=f&J}NTV5{+Tf<%a_$wsOOfGxn%THZB-4V>Mxdd~Z*?wN= zRA=XRcv!8HvOnFfq57QZG95U>=aE@-w40(ZBbe$|`bcP}%k8M7YfR(G|mL z@%DQv<;Z%Nnf1?!5-ndFP%QAhy7q9BP!3$&P$ZIv(RinC+2+wBie3Y$eY(Y zvo5Ery(7J}E+~)2Tp2xoKEt1XsU53MSSqx)$_&cZ4hS4C)5!xjpWj-f=c=aNI~f0N zHScRrtv&Z6O1mUW1;Y<{6hw{}Zt?UH25@uedt&LA6qXQGCB(zP!(i|&r_=1PrL~Dg z(k$<*y75TyPuaSsEaea>P3z3iq4(03O;0%xrV3);7u5!4zw^haY1t?eO06irb>umX zF_jf(>!P|CuEld2jq{quoKR6OF|(a8a-`WPwEm_=Qe0G2)x1PQ@nkR8m@8oJgN`&ZS>b_cBgG zq48(YW}IckpWgFm$qHr_Jj2H~J&at)%rJ|f##3XJFjkD|&#*IkA_T{p?g=C{&Etj+=cbB$kS3ceNsCll zzc=mp;~6QH7Z_U{%t34Uc8S1IgGng6P9cs7pz|l6`Q)cBDr}{{erdfz3zR<2eha-o zDm58c$z^koln-&+v#!8dM7BtDtXfysbO-t>XXwe6KRA6@v~}4btn1&X@GxN21(#!3Wc|ay2hef6P|Gov%>+%; z1$)((PwfqHc68V#wX|M7-P^k#HAh;?H#v4~Gb(%~_+$wlegJ_LTk05oqR5v<1V6nm zCuXrx|r7Z*h`VkDF zSNS1}FZ${N^0gxj8b0DGq7Ut^|Fk?r3lfen+s)NvVqGwCQ{M!;laDMM03n)~e|u61 z%U9Ip-CCG%&;3qsxPd2>>Jh~+MwwO|)vR#_QisPCiOd5X@lhsKQ)2cblADZFackoW zfxq@6df|auQS6kmS<)<4&x@P;*7$w58CQrNT;)O4^wxmQosvz#$d^>g5W`u{5Th!u z{FXpoISzbCLs?3ilFbt_%vA6;QLh%sqYN_FgBV9+C3L3Z7C`RAB!Gv-f?XlyNc{tu zr>eeYg{;_pK`Mwy7-Q2)`7Qpn@>^2}8bngfrSa;w_{Jqr{(b3N{OLRBRlw#ZXGl`o zsV+@v>E{Hm;RttHe`S&|)#oylVcu643RN>eFL~9%rOA2qAT;)WZfNs76)znuB;#prXg16%B%!*I0Z?rvCufj5qTO_Sh>J1F9s{1QO2#_Sii9H1NN?B|S zOqx=~-9Rv0UkV5Y`pJ=(xLVUf%juny;M=-a4`UU8rb_RunqXsr{|`&=4X3jq?_$T? zh&Pp&M_VaBo$=+{>mCs9+`Hm3-V<*q35`TOm9P3jV$scadzeqx?n|VWC05h%(B}rG zFz|^4TF{r0r|aLsTqde}^osF2$f4n_ahubWuipO(bW=7^M>hy9M% z*LE{9tpw!MNtfvZTE8i^PsKzi*!RE5I>B&yDWkNP?+ZLB=sjKE&^7rzs1-$2_2Z8x z#U-5C21vqYpfyOP8d-j#uf&@kvBoNrpRL<-IbJ?t>buX)tcCyOJJom&gE-<{p>0I< z3!x@;oSD2~{$*u;b-$A!beZA&rGZ%w<6cjz*0awa>7?uf(26E1ywTTu1;l!#z=GK93E7zr^m0Pkl5^I9IXx+pb6=|BiA>TeA8XzRbeyEvak_|60L%W-re# z-;9t4gdOV!_c&rDFU5iHwEV`Lyq!?a9%vVcwQ#H<|Fp# zJY_A4OliIS&@m~)Ekf9L!Z)59!b+K;d%@Y5*{9_P*yp~u(u&4nJGdeI{wdQtA^`c% zE+k@9ObRPsf+Ir|8LywGxWd=&SMnjb227%chFa{Wah7P zDs9WFv8uK4O5L4(MI{bGo#--LEnN+1v=%vGQy(0foNyCn3o)z|t@0XjaqTRox?-bLDI-_%|@h)_;s0qUlp8Vp^`uz2_Q;cc_;b^)C<~OXkUzo3;9! z%uB4a-I=V|r0@m3xWI+aSx>3iH~5h0Bv~!?eshuyVq&aJjXw)gLsG(>Jv)C-?A*91 z#4DsH`N6GrA~Amt@65TCiBL5&M?`oQ$v1mB%}U|Ggac;H%y&k$;yq$n2vZKt%$`nT z;t~a>Rd9%!jLlk>7@G=fZCDlwYqhrcD2^md9id>lLKIQaN5So#cVGmUAPV8jE#Q%m zR7NTZM<<%)nhPb0bQ^--k`k6D$4wLCarDwRmA`5_*UR`AI3m+tzb{dAHB#f9f5o*v z^UiOia{U)<`^;OGEK#I(mBSHh0s(9RSGotKzs5gp{(|YQ|EeKBDgHGsbLP!aboE}h zu&W?E-=S-!fU*cp*-0H+p*`W5Dv4%dR#FvM-pRqF!eU36?%j&~^-V9zwOBqrkREpWMkpay`aZ$3%%hNx$Pm-&013a%)o? zs~&ZrUgPK&f;cHaU;S4iJZUl-7kIL*+N`7v_fq%g4%aeq-Mw^;Uw7A=NCBC&Og<(Tx&2zHKI}#anxHwDg?o^_^XqUG(QDld@IeVD$dIPNy-_%V`M}oEd ze8`a|Nu@Uo;gMl-WsISqKRLwEb8-|=;!&ZqI#8?z848Q~$`Eq4_z)fK?hOSl- z)+f>&vok6-&D=UqAxZLJq7aYIRy2?&-aKo;@I0ar{;`5Qh7p#+nD0g=NlxF`9FeZf zL{9XedZ*3;J*0Ud$``^b8#1>(9p8@4!$AHa)6Lp3iNfKU@bJ;~#j4Oal+;mky?XwJ zn#(LkJyR#jiBdT-g95b@1 zZ!qCb5)bq&5^)QZX&G~68e$W8NTvgNl}Xfm^Sg>2AP=3p!%ib>@bbB&tAPlK!fW2WfCJLw0EM&GA@Xq z60>JAUGTIncfkdl-Td@n!9e?I8xG8-D1w=LEvq+B2oZ2=tkneN6Ag`JprP?59TXDeixxKr^7q4zI~<-4=o;gzkJfyg8q#0lRcc`=Q#RKzf^t^F$r2Z_xg4(V zLTRt#uzg%xT@m?Kk=-4L4D)&+_^$FLq~XNR%r^H}c6zUBbG=Q>wq8*F;@AO0;p9@j z^JOjj*LbSVzRetA@|3USL&pycQ!#+YPo7sIQdQG_&Saeurl0xu(gCaNVRd|gsnp39&$w_rQVdgFd<_XeH2Yqp_Ox6fxrOgHT+Y7Uf z`ODq>(VO=#aujV|wd6Sm8qfrj<+CC_bs3vswH%JP>6KK%%buSg;tQO5lJy)Czjc1X zW{T`;YtA)E+Z=hhD$89f*K0P5uB@rL%sz40M>c%m=>zBTq9Dr-+E7ioI6o2-{Z`sZ zJ&AofTzwd@T!}GvKs{FK(H&$~g4giLST1N4Vf)G)L8_lQbYc`Hda)~Do{ir~Uyz&U z!W<~=UAH-?KZ`zmAf{pR;>Aw~B0Ry)^VeQvtpnX38+hNp8cbu*!N@iYJ76WxVa&~p zm(RNXJRJ;tUNJ~fZ((j?n8Cr@M}={Qv#ErezNti;zE9PiiZs)di?F&a5QRSijab<< z5WOlcqiy#}qGDdEjyh~)vVXTnyqBu=DzMPAY(-Zi*D@V^FXc)bXPToO_`ZvksL-P1 zgXl+H^(bk}RedAHdm7)|{nq zSL#+pzYW9BUu&x_2{!JY`8Ytx3FJMWADrdDX#9;#NkCXmy(&22{?Ak^|55qg1(v4rn!h?ou0{UZl1Apb=rejTtDOIEHope*%tS{Bl z%jG&f_CH-GKSj({TdubX=cS*Fvq^X~tqKwV3O9PKa8%gJl!9UB>#7zsRK8oR`voM! zqjTX?R0XxpoeWm^+cmn46mDNUgAQgTALPt&B?hm0-Obs-+w58AQG>sBVv2h^A-eU$ zMXzg^HNi`Z2^}If&NWKBrKagd;XgCfjl6DH8vzaLN}yqVs}HpCIQ89tKU0?ZhWw8( z#>L=JLr_4#T;&$POILi&Qe{utO2bUzbrxQ_E8_ z@z_Jty2T}6HAP>cu;L<<=05S;Wi#JV+#)bg_^IwU!?V%mJHO`(#65cJV{u`C9Eex$ z9fju#_IS#+Ct|`#tSB#3+R4CqLvnbDU7n`X1`bHlbfw5T?uk{pL<$1tDeBP#jw8Sx z-b2}Xa8F^A6f589E;`*n%@p-6L7FxGNTkpd^~V>J)C!#aaETHF$C0{k)VJi5MQBx$ z{puBxMQ&%q1MxMj@tNeU@s0hzQAg`mD)ppw&oP!IQ2)-f$_do9?ZR6Y4l;ngI*4Kx z?iJbZVHR>cE+c(xF;9+;n^@|DHeV$v{yyU0Z`uHrfdNvIoE>=s(ic56@Y2aq#&P_q=Z#M7+5n&`SaXKp|5nby9@&GSi3lQFe) zXoQ;sAEJ`Jk=L&Ox?NE~^&_ZtG2bSx2_&*@0VBnL6z}%pNhQ4KvoH&NkGuun(hGQV#v0>*Dz8mo%iUM*(Z+B=<91?BWtLQ0QG6-HRTf+1Z5fFM&x^obOj(cWe2h zO|X1MH51xW(3upbZiZX7#MZX&9{2m!1{Z@x7?w-WX z7V%<+enCTKtGc@%wyL|x^Q`07ALKYtOg?0$N?gQcLX@#Mw zO7#OfYvcf@XHnd$czjZ~@95PxpdMP;suU!%{VHo1)Jw&+ui%N}G;?e3oy~YU>>o~c zj0t)b_hfo2yl(>5@$|tiSr(2?M8BooJYP@_^p3^dI14PNnYlQI z1#RKyglYMj{G5l_b1%~tE*V|Q8LUrIjT+UJW*G_<5oV#yY zBr$NymIb{E*xUq_m?sW5+K+5#&y;kxfcI5Uf%jENf%jEZ7QL$bg$r#|?3= zyRarK_&KGYeB#}z7~;nASM!}te-3Q3{;5!SF{QU_BLYh}#;AM4!kDhM`qP>aMg7eA zgZgRRdV`+oQh@hIEh>_*(&Jp>9C-bR_}e6gepSv^1&$B)ABfGOilF(AM9Fs?Em7W2 z-p8?U_g^2I#5G-cl|9`2lB(Eg(gUrbnwwlnv!-xm85}JSYA|{p_!eHm-*nfxl4@vL zys#Gck@+Cmt-UUYEh|j4KBvgPz&T_RW5?(l_L-7p;18Uk3w>6U<_dkxkLsy@l0cm* z$I5vH9t&8$+^s@$Tj7mV2twYS*WvmX@X#Bs1G0)CSMb!u$S*8if2|xrHeA1E`GT(a znGG8kY-e)-fNOZS%ck(!is$kiNscwVO1~N6nszqynpo%E+;iwkhi8Z>IAap!RFbks zq#&lpm6?;qbB-*2j>AWPI=jcOj>;Y4hm*|p9nkf%+yO3 zn`n87So>E$M*Aw<#QjE(IoqQyga5k&qnr0MdV3loBd~j2>F;$8tvfFUl&v5J)Ppab zQiBx-T6-4!Tj@pRMx=GiR_;X~57TmDD$sISrrL6MDs@#J=Si)(=;__KE!F|iq)@53 zSV_!!!sT_|q?^a=vG;!75OHj?4+123lY>ILFckvK-)n9>bgu4GN2o(v4kC0HPF&~p z>F}+b+RhsDkO3E#A5hxv2b4DY0i`2v@z~@EW-yglW{J#IxXq`@f>W|IstrKw;(z zNB^p((btgsrvFoFr$uq8pdcQ+ca~t-{sq@;nTQLCi1Lqk1@pLgBZG6g z)6$zH&i}aNG>&7sf}F-u15pY#f||Wtz?NQQ9^zcSWXwT@DT{9&a@VcaimS#_IulKz z>JCs-K^oUcWG>McALW5PxfwNcTH49ba5~pM-Nhr3UzCQCw6M`*7#|`43&ZmW zZyVF`2cP!kAO_>xL;|^%2pzDXEeaZnZ5XXF_W$y>u4^Vj+=aVD_+ZsX! z$v;E}$)kq__E;3zYqkS!nDm7IdS!=871RPGhd&y_EQ>c!0$xMG-9K>Skhw}`yQdVyi^vY)s zSEHnvrMc^oO9I8U{U-1$8;Z7NP{VYKlb;+D_`NjOzlu#sEIj`D-Hz&v_Hjx*@N-5i zkbY$OtxR#yMLGH6ysy%L0%mLby_OB~+O`HgJyPcKDxC1uHND%v;JVepaZ*+j%7S!Y zqc?Ypu#Vzf<^&IiiK;l>5(uJonc?W*&V#CB3d?BQPkP!ZIm(mJI$$dfZpvL~>G%EeJKJ4f8d z^0*SPPtoO3Z=k9}z6pxw(lu@pn&Z+-vT_?Po85b4H{WSb!R`WDk-1eLy=lR?G-#QZ zT+4Zm;fv5^NQQ)L)Qjw;Ju(EnN)leJ1cz@@G(kToF9m5p%bybB)pwQJ?YbK&UGMg`4+w?x%By(Hk`R!UV} zM5-E4Bn_$okyuw#L)MzLu0ZpGhD>`&Be!VQdvUj8r!5WwvBloueo^P@wS=gD9}Tvt z?&ZKJ0tWJ~JFpSI1#>y>JGKHp6WNhz4Cf} zp)u`^_LfxMs@g~~4;P@C$%*UZH{Zz~rLo6}xI9Sbz z9`=r*gPLjBjo#}T1Md1~h(?wZ-+rFRM~*op9mFD(lP6>t`@HA^%TWMLOfj)hl6cd@ zx$V{S*dh=x2O{e{h$B^-Scgm5du^07(EeWAlw#lkjG-qYnvSQjFfiWRTS}!%8#F%R zItThSDaJ6c~r~X)#D~h5X$}1ySo~N$TAlcgEN6_>=)91$#z9IBq|EPX#Z1%4=9rb?pb1?b&Zw}C1-5_(kiAtE) zP?EB)z>=b_3OM{D*?RXyW|TQ0F-VyTOU#@q{b~Ps{h$3P-qKkKa~4}O3Lh4hM;jJn zb6&G6$8$l9qO3oR%y%HOu?0zB^O@O zz6+h*5&Gi(7dxw}r#UO@YdJIPF`xZA*5~?E?DfP{?9)%vQ0>xUjfc2+wlQ2Qz+R<3`r*6|wYcAQzk+trMO#?!pmGp6| zQ`bP`6AQfh096K6Qjnob;pLp@LQMyXFOajKEI{rfo&hB&%%i4Qt>TP4<|5zVq-vZx zD#j}~$uHxIm9t|lMHVRfN@gO7|N0}PO0Z8_M15=wpn0XPPL$4(0UY@vE2?5klr;&W zv$II6RKk%amt;y1$57a8DbiuOgOp9x6+RJ$@q4`6noLV^?acWVQ<1ZNak@3Kbq2+Wi|DK<0u#xyvQUiyx~_tv5?B~`o};ODsKur z`q8m{d~gy2KKR(>HXb;+A=!^&{eEScHSm*gas(?WJf0p^N`CY6k#%LIiE-ru!(@D( zP2!l;Zn8^_2ub$_6cG+qRQab?mPj}!0QvggDfgzE^2jyRg5PZNE7ipX!#~%E(oKW~ z9t82YLn{bzs<}3a} zDUrNftK#WuJHlOzPAX`)NftV*0doJMOz_a9N;5|&7 z!1>eigJqpox)%*uR1d8ptO<{nrjD|n46^!;I1*5p-@ zV|ir8SrnHeTVjnNbP`7k362A&t*XXBjMYE$HVmY1ibStp{mk@4u}A-jy=U$K(jyfB z(Nij@Ytxl6ZSB~`XjzoO&(`ZYj5_xhgAzW!ytT85D~i5HivrZk7`fRCSz+*n7CD@F z|8(1ol|*T0&H0|-6?a~GB{mgS5j5x-oDOn^e0TK^T>Cs(gN@?8`I-3Q;*g5Iwd1MEA3?uTu0xZL!xV7i{C`AGGXaw`*g zJY+>eZ)J8Hd8|fdLhny@U<Xf8We!gqRvm4mKY z^FOa^v=h*4^aA-^;uL!=2!7VB(qLENC9}PB-~-von2CutAjZ^tr1p4?LxI41y|~EA zc2Gv$;HD4j*W3?%hVz`Gl&kSC$VuulKy7FAs8@bi5eF&4K%3&h!!m)jV|%~d2l$t2 zNbatvRHy0W7_+mFLRx=aJ!!sK$%-Iw+ApryuRDIXU7(Y(X;^ek536yr*6Cmv{IHm*zfkW z5rzPk3sVUuZbrsk#_ujJOu5j8mVTf?1_Bjk1}#1RkDKG0@79m|yL#9R6H=q`t(})8 zf{$bm=8V1E@^EGj{uA0uzs=?*zgBM`WMFctc4DY&IL!v4Wea2lbA!0f$ou9mN06~$m2DsWN@M|G^? zct3CtnuA%=ab*KZ3SQ4Z)uj5@88Vic#l(E2vo#Zcy|_CCO_7uz`}D>dd)cL1GGR=` zzz%X73yPQxR!nw^_AAoO81n|idpjmc=Vm@UT$%dVFWQ{S1Viq*7O?1I zY`Na#av>HL>uhyOfrSS7J?zKedajCYn5@?Lks(zz-lBB@)Qb_&$cDzafSW~=7Jg+s zzd@JwGUjv|akvk5)k=u|(&W6dhhY`DTBm=emI<9nVux>4U z%{LvMxns+(1pfS*bN`z2b%*msLvXeJ*+eFAWJI3rhil175WPXbNs3wts|bdP*FuVw z4I^)i29Hw9#J3d@X2Gt>?{hr5AMe%;Xnt(IjaYwSa`T5@*)8w@wPY&R{4_j2$N80% z>C+{kTjFnhi4^y1{I~|fFhZHsn%V53D=hm_vmzh>*R*fvB`84-3QIj^)#B2@u%`cn zV+YP_(S(q(gYVz(2RT+7%~AVl-x@?FLu%V_;i7Ht0i-ZM;U!pH~d~m-=m9-#IidwiGGem3;F6 z{r)DF?Hd~!F&N{ib!C}SLf1e{{(!bZgofL|9$QJuZsXcRlC6+d~DAmjj|Sh=T#A z8b%Q~4&)sm0)hghUU9}x&|;`U4J7E;Z4t8rkjKp9W0ab$j-CYo{OSX@mRTfd7d{CL z&H_IKE*2L!KM#pUB>M{y$sn`fJ)W&u0ZOZHq*O*395;&eTmc4`vdg&eCB-dP_t%Bw ztOw=%n@vAjojNPG239f86x=n*3c}`?b5)HEfpe9T%zd`%AAKDT?nP4pdYx!)O|EjV zJXUz{u!zF!9BlT*m+m)~sEJ8%Y_ZZ_gBJXwCMwnQY0GLAeQVgi#fxnluXFCTo+~Z| zlajNk4AT7dDNB!de_*{{+w*mxJS_?{=ks+zpFL}1 zw+EzcQ{GtAY3P=2Ty`W2<-jWka^%`>PwpwMr4%&>X?Grorn{030^U@h~n-C0ghd^a7nQ{69rZgu{%%J z*`4weya?Y&t?jb}GUSm%>q6AjE!71W5|T<5D|PRD@#P043{cPBGhJAukOYiv%YS4r zu3g^;@3M6S)`M>nHJLP8{84G;Eg!OHH*Y%X%W4Y9J4>CaB!LHipl}n{n<+%%ic}4o# z-Yg!iPhJ5D@09s}GIBmnBDTMI^*Kr{t0w&q>5ngl?b_PKK1EKVrT24pv^cL`AH|Cx z+UUT2{=TgU02p$9nTNkvm@(MTMxWXQ@D5pO)SqbYOyaDLcf4+|ov$Kh80Osc-R>4d znR}1?Ze?JGP)ISWRr!R`iYdJ0nrmVay ze4gLid_QxsVH}AYwZ5(b$%K(Ed9{?!Q1|sP@>t|>xa>Vfa_-08mPp+kj%(+QsuCF2 z$Qpdn&cddS=ZR!K$l!QQKBe)oLbs%+t!D{p&+2bLET0>V)j5{Id+*63wN|j0DW^I; zJTc4b=wZ4OR{tqF1MZLkkopDa@yEZdlOr3IpDE{m*sOmyv5-%}dKz!eCaP-mA{~pA zPcVGbv2@+@0|E%!>9g`eR#I(FF7uZCHEjW0K|#L+Dl&Jrdgrndzn}!GlHS1Pag45M zTO05v)Qf|}4oTg#sjJqnbOi2+?wo@Ymm@9eloD&! z$j8DlrN|?=oU}4lD><}hy}%(-Hi$mDvy<+!OiUjxqcQ5NnWt1X?49-%S0wUR3tgxi zbf%)0z~?J;*FjEEa&IR5S@iAR-O9__RaJCyKhj_&@7In|1Zl<{KDm4t73vrh%PAn3 z8xnw}OHm(}WJ)uz;;U)xWSy>_EgHAIKWY|n3EZ<)R&{^rk2CFPGl1GB!%vmXKk3xE zXy0Q+VHSC9K^eSz zZF_092jeUuw)G9W;)M@<$w{AW6P$he>dfD2Oe>7dV6@S@ju;x&Wx(E zwBAft@<@7-W>-eWFwmE$Q!zQR6Un!dR8mxpS-KG$!Io!bNOb0giijEnlh81NFfGes zr%xs^MvK5=b$*1o$RdZHB^|=hY3hu_uKo6+VDPtEW|o8F_~B~tp#kkhKhJXpW8lpT z`;5Oe#pv*qgHqMfWsa=6%%C)eVQN@XBA8~oGPm>Hn(wT{s!o!vq%c*--8hI zT)7q4Wy6JJ1QE7eLu1$z45B2;3yfCAF8)c$dHS?sNk?aM1dK;(B(H}*{8euSZ|*S) zQGW$QE`1MOu@42#@vRPuTDVj_F~&u1DteLeZI%Vezf`Cim_NuBtp?7^>XBl_ZK*9$ zVz08&L7c5f?CEk<7g;Vz5+#4B15mPoI(>UBWzX8Jv(N3U-&MA4bpL`bYix2aVAN%- zHW$W7D`x))Qj|7@Er z-A{i!g>(juGYlQ0wZqb0P$?&YMJ1c(NL_^_Og8ibs6<>s-FW6Rjp89XTbsh!NN-m> zJ!Bu7s~w<9`-W0BB52}+sg#ELBzI_(3duYFraF#rimGthIAiVQeQBN60|xu?j}{4oULqeFRHJJc3ua4>rw!#y>ka1 z)=>azy-t%>@dRo;ORG+6WKa>V?KplP!`T+kiuz|I1q+g{os*p8Pva!S8rM9tB zqP2^{xNO2*;?Xs@FG6=UC=Ag7Tw)HWrQZee9xh)F953VTfS|Vt!ST1v%j@A=UOuh{(0p08BVeG^F{5QM}lR1CtD;WaPq!08VcrIP0# zt&rgOU!|iQtKmYE{cf%6nX_hEGLLos4cA8*&HIZjmi-Ik^+5_Kap01dyo zH8&)R3XRQ4ucHkOt{=&etTt`YNybXhb>l&Un}}iDL~*{UscY-L3R(HLnYEZsyRp`` z4^~P(jzNk&B4upZ>~camx#_Y&em7*ro;k*b9J8_!5`9nXeey*JX1^kH-=&;xLr;Xp zA7O<$tcE2X*3 zMSp=XTGbv~G)s6vA$s7cnqn`JOX5MJkj^17*|s@$u9XHyi2iWSs1@r4vg?LlwDu*l zu7;BpC!wA%sY$ZJa{?{d?~{$07Q2e?lR`pFkQ6E?97}g?=Q3ir9MQTYc_lc?l{L18 zP_1ps;St+GKrb&ezINEp1)pl2vM|8_aHg%A3@*S(c0V*Mp{UXW=xVWAZ9peAtOlbM z3>loYJ1R7{wS#+>E+Ar3;uZMQ*FaJUOr%j3*l5Y6&lcsb8^89 zoMGp5*vVz7G$&}aN%|_wy2@RGmS5s6&8n)Hc zbKoWBGMFVwR?%UbQ~k>Lb|{#jb9k1)h_5l(6Em^W z<2@c~PDB{bE>F1YIAbSduqM6`(Ckm`FKqZR; zLKCJZC>Ybwh3#T~R&|vElo5LQHz)^gS9H(r+9)E>0;AH`@kv(lHuAzPz06vj%{B|< z%8jxn=-VJKF~($v#sH-%T!4?M*o4fVwN!B%fz(ID%nGlCu=4Vhq~<(-eM&1upHAxZ z?fXNjxVRKy9NG|O9S!^kdA=stD2I!8-)K520Pz#Ou(&(ZeFg0TRnsyzwDc2}_-30p zYOQ*;ByG?yoL0L_l_T?kV5Cwo0q1m~OL;Ndb8d|2<;Z|)HmKIjbVPN4O>~eiHQ>#+CZ>yG9ysg_mfsP0E zM25?U+cVy2X*JCJo^<>LUw;jIzbDBu#={HT;L}Pmp7|Q~wN>P)9}zvj#&@IT?<4s| zDo*ObLGVn&o(e?d&?bYi?G4{3de}Z55)obg{e5-kpyl6v^?~f}F=6zC2;oV2H`*bx z1EK+D_B_X!0Db_53f3f~N9-_2heUBipCLZy`iI*2>JG-sbVGP&VF<=+($eH-82dH0 zCu}6Vhq*rC`NbQkdnZ;TuuC!wx!?H)Z!Mo>GH5qQsWRx)pL;0t&5PgoQmEN4W))QNm{OgFq& zWar_D#IP=bGoUaQ%p;-wS`ycgFqvafz}s#iTGj5W1GKmM%B>QN8pCYA>SjhT@m-_%Im&-;5?k&_W}~wQtRLl;qJ)^((An=rpIqf zct?QY>Sl5T;FZH<;qHbW51nFWwpO-DOksVLwbsrkM15~Tt*Xx+M1Wm-Xc2O#@bXpKd#sEp@g*EZ}3nHd=al=m3;H>s-$|O z8fV-`6ae*U2~t~)WL>0rnHi10;tT(;Ji>;}ehk7Dqs1HU(5M3KI7TYotit0!P7XPpQ9uvv+9#abGACncX*vKW&vj*v5d_0LGb_7$M zKgLkBcx8Rp#{O)qK!Zz%K#10^pypHp5M-I21h?Yj7JGQ)zl^d)ph$Z*P+v+9lDH6cZJ zGj;d%f&1C!IGwdyp32qzB>+bpW@L?RS!HKQV698DsMow`H*ITs+j+%(s1v zjnd@vgtvETV|nGRV8>Y3+o(oD`4}@iD&5n;VG{Qc<9wT5U&^UD;$v$g>`KFaOXHXz z=W~4r7WJ$Qw~Q31US^rMyw46*2{HeTgOOF>qiHCDzu2(v zUj42oUpO9-_$=GEikGkexcaEHC0+__kOe9(kkgJPFn%QovFQ+mr;1c%JA?QIF>IyX zkx5O=UWMlJOkp%d+46y)(ev+ZvL&3QVMSRxv3k*hCnh0JhI|XBNT03&!#HNAZ|P+8 z&AE$+?j^hgtyuCz=n5gHumv_$Lp^CRFaFR|2^WzL|Fzt|ETj$Q7JVAAYRC(=ePrpq z)-)Dn+M=5`qAWE?xK?s6hI>*2wNGzl4~&{W#g!PaMN7C9eNh^;s7pk!cN)nZROXSR ztq9R}MS#6jPV$1_o=I>F@-dQfZclpWqGc1LQoJIS@Br)!QWV07$qD)~3pnvk?_Mg^ zGftZ1^DF8@6@FUQzou#@8(zxcwH+F&KQWo<6b4E5@|58}N0(K~E-lp!(*Wq^fZmVC z#^TfT00D0y{xv#7(-S)W)MU-1N#_~7SH!}9osZm$^Eqjp)|qH9SAmmi9I2h2kg;JR zl4PeTu^uXDmvcginD1oOVrm-V<>7O$%G_S6wh2R&ore+y&9_CI1ifVo=l*IgcrTA$ ze0VWIBrPk@xye{XeEi{{YFC$^Y>ovyhZ!N}N{dxgFXu8>EIzqWmLOM^7rj8{Jcf`< zjzFy1Tw}~>c6)&%nYQPnql8Als=j7lRb(`^x$IEUB9un#omGA^^!3Ez&m|x1cjRG_1B%Dk$D2 zAyle-bBw42DX^$kmfrehQQ$=^V8_D`<^&8jBWXD152i$;k7FCZq8{#*ZhoW-z zL9#X~D&gZe;P zr%;rOOx-WO`tdAoD0O8w{`X*J!kxY<9|_E2_A#a8{`~QvvL_qdek@fF?=5L@gUTqi zvZvu4q{ROGV5YKGvy%oIfnN?v*zEjpbw+m4_c^Z}86GlN`$7EB((J^q!BIN=&*#y%A%>s!&r2k#HV=LQ5lDJPAWW zRsFvG#P0D=ht1jD#nyHn8SEG2i}QaHoh0cqXErP(pG(uy7tv_{jDTlPhnJTR{RXM! zn~`}P&w7gRg6^y>r7_P#G^J<@9`pMQSPJD1uPdKwVhd1M}$Q=RV8hd33m(J|Wi*eL0hkxw5r~0Vjbtb6#(|KY& zsQTGOXYYdFS78qaE*G=Io6rKhPWn9`wF5$t60B~gLnrS0cFpR_Y560_Df$9%UGX-= z9Ie5o87;si7Pht9hYnfpiHeV)ct_!DKTTKP43Yv99+G)Tf<{kNhrgUCOw$5-_IT@- zB4VS@&7y*yEkLdk=RXszRve)ir50VdNV0r(SR%!4^Q}sfdT{|LTV_2cj8PJcNdRT^GTs@|}IpO$>Joxb#VXxRU?0DO#OeU zkv|0{IsPv-l7HQrOgic275!filYsjR^pHq;%K9uT+7#rH{c}?VWZCn#G4uT-AIb6r zLzozP1)3H1wR_j*F|zZp__tld;1i~WfVm>W>D8t~dVnEPNDNxrS2oqaXiD@DkpKH< zKjZhuuPei!p)vHxBiWVLlX8Ju#`*U%69r)kcWyxc`uF$0dv~y}ugl|l!TYDnZ~Y98 z@W1V$9f<{>#~{(?gn|x_2hWC#hJ6NK-mopkKb4=H2Pd%Y<#568HdlY-OHhBBfmMrJ zqHnC1(ScPEU(h{T4lMN-_-~i@xBm1by+V}c+o#9=wtnDUzT3wb|ENJ@nu)cSw8!it zkdj!lzT2x9xq(ScC|{qdvHID8)$EF61G*f4`f2 z@B;h4z4r%j!+eg7+|=@Va%QjgTiA) zDuqyExR9l^RLjBa%P|g^h@A#~W2LZgR|JS7K@n2sI6>gy85p4igTTTt;cP*#1F_-Y zL4XN=<7HAFkf(VlaihKjMpbtZl(*#6Mj)4Qe5x*_IRgMerL~%b((?V}$PV>oAhE6c z@4(;wT1=2N&+1FL!$QCPdz+h4en8hdI-hbq^&q!>ur%h!QHJ3G7EbyD1Uj__Yg-zM zhB;afgk^AywmS`U+$!!;Z)ysD_`+Q)_%cOHd7Gj(iM1%UwhgaF3I5Kulid+hO=-+x zeFfD$_ieZ3wa0aJE{(hP$!|UXPA;>P=`Tjz0pPWe;Fdze_I0G(F3fdXd^CGrhEOOZ z6d@=eVo=Y|EswkiQ-sFM1eT`t=?IVcT&xJ%)23a{`u*!Z?EpbRymlgsh>Y7I&~!;( zog#)X#$+&OryC|4rbcg*OK6&=VFvYA90zt0ASb!s=k%QEn6>XpG@p4=Q`({k94*!j zFDXI!P%qRVg5-PUG+P<^!iW^1UgmqJr<`WO)VvF0f1-y&?T!wznQ?EgAbj5|wS{c; z3?+dAGw`m!vL!P}h`qSP9Qj3Fp@H&%Zs`@os*xL|FETf7FJlJ|1jec-YT58WdpJTu zvtK^^z6h9Mm3ux{7=YU`Q^P4ZMVN&i2_m&Q^XPc>s4oCu6uN46=o;IJLIBpq=~lBx zU64h2MvaU&&f%i>V*7n^4^1kgb?Ifs6t&zkAi(5wCCG9&3AIy6U0KO>B)FbPqMg#< zMRTGOHniIceALBAJ8Zi9D@po=PzOjy!y6WF;sA)Kj*|1gAv?DVu$66H3sIwKM1}Cq z(0!(ETd);;o8-d4P+(e{AUDPB6q14y`0%@q;VM0BEEM~TJc5GxVH@gs1U^hZ8aa87ujOj=vBbN5W*1)dkTp8pFrEctAakO6LUL;e? zbVf`Y5RgW97V{bbBM1qN-Ix_=EJFH`cxptL)gsFP| z;d`Q#A8TdCt=&!iChgwU;|)JB7}za=kZ=1e(9dGgYBy~4X5=zIp2ZAyrqI>majWNR z(61ehr9V+P%atzhzS<+Z@|rnpYXlz~uXg73qv4Q2l+)oX^PI_|9fQu9k-TQS$M6z= znw0g1mcBl!Spipn9i8g;%up893WF|&sZ#~6tiuvoadRbz!MA0%)G&jbso?d+6 zu!J1SD2`fXgP?qS#84D&7e?=`xE+Z0!Yycw-N-8>{OUkBoKm_zVQiLPy(VzECbdIR zRUqaWwW*01(fG?7n(^B1(<^*ko=Q@j35Rl|Kj}Li)xA|*N29M~wHkYRYpDYmVosVc zzsu4rOhpCp<+(cCay7W8;7yj6yx9oll3a9eM12RW$y7i0L6n?I>4E5_x`A4V2ten8 zFFLKFgutotd@zGCkY;o5Q9@vtUNAJ>9q0#mnJt5O?4yLiv55YmFhbobz|ri9!s!sL zVyQ9o>6=s@wqtgx3C^G+$*LF{PKkjeM@JeujwX=@M~);=G7)A3?~58`vXqA%Yej=G z;a4pnXD}`q(?|qKABRQ^Z|>=_oEGBtD!QJi`Y4kAIT} z$I1M;wJm|8C5>qGWlXORHc$nuEu2G2g3$S{J_7=aS#dFv+?na49_IF8PDhswi4X~U zmq5x4E145pVn~t59$@8pid}CopCefyDuDWuF(-Ab*E}1ASRw$i`WB*oo8w*%^oALb za0hm-Fpk9fcx?pY72!mUh-VEApy+8|5-2{$=6qt8@1I_1QGDMRY(0JJzP?up3>3zp z{L@l)si@i&?Oruf&QDmCw%$-r{_8ZeQ%&xwE4m5qzNyqM;4F*N-yHxlVmkr$3tRVG z5}aqht?|glXXL2#^?e~Lg_C07inBKf?OXf;ou0~Ms?waMQbJK>YlJR$GY4!1gg(rx z@N|4S82pmpJ_U9W$$PhSSVt5+|&jgG%n7shIu1ArNkDR zw&vJ`5FRv)J(}D=i{7BRAvK-?m6`(+=2Ib6|DVo+gkA|<>qU}Z;~UjiMLSBBM!)`1 zbc>D2HR%A(L)I&l8i*}3tlW+2RIUU_YT(Yg7jg!~X}C>LE7#6g#K3C8?wGPs7A{s4 zY)vV$1SiP!f-TbpYDO7FDiZYjWr?v*CzdSMvwR5lBK9OpWE?yKN?a|1Mwv2hUfd(% zd4@VmiRDUiV!O7ND64rG0{l~|ufj@Fr5g%>w22#bFrUF(ww~NH+h&z{H~$Y#L)SdH zquvV0R?UpD^SOe$HFt_zdu;AnE$#y({+rD!nxKn^(W|5FjSoUyYnF*v`XHmhUhd=N z;oy%iOL_Z_a`!0btB{2PepUuU*7cLc!}Z;pOe zwgXUgdA`H5Gn{RyD-V4PK^0e1+Ma*|F+#f|mo!kn7G!bidT0KB>Py>?qe+g^UhTJonkXs;)Ps#EojL1WG6yG?v+%F)Bh4{At95YUOyA(k__jD<(?o z3r~6$Pq*;abLLJ}VBH{o?j`wIq;uG%yL@8_qvapAAADu|KY0El(VjUNHPcltZX#?= z>w26sSk=gEr2uf{c9nB)+MD>HGr7fEICU&;+<5G3tP}RsC>&(ms2(KaXaoGJIW*jB zMk&jYB}QuEi=MA2yLlV}`ctc(X=1fWdi&Y3D4ArU-qNrl|9({qi)K3E~fH%8JXE#Dt?l7>fA)uaavoq^OVl7>$MuV=FG zmLCESY4>eS8id?!Z#zte2u`g#!(vt!P>+eZ8NL;TUocq20bFeSM2~?ha#LF`L_qlh z!Gy7m>{U1SL&$gL-|6Rw1B04;Q~ACzz_rnJ7Kw~i>2dByQYRJ{N6M@|BYiAw4+8~B z*9opx3QM7lfvM!nT39|S>6yd`gHPU%|RYnRT*!Y2lzfg z^7lUllXq*YK$yGFl3!YSZ^RY@|n{?$;4Fi@1}wE?XZTOHME z2xmE;KxXrCPJf3h-D9J#;*#UvbC+4+F(tN({es@|kGwO#BT2z*A-KMA70=|Db2c^= z&QvZqpO^`69DN3gpV@+Yk=%f~yO}LoLm8N^Olglm-Qi7SiG26R9%@=z-u-WQg2mrU z*~uF~A%ZZ!9_M!*<|E%$MmFO`q1@J+OXB24eoW5uXJ>`Q(nG@UGjcJ7&w0p2x5zsd zDE@t>EL4z<=Tk5W3z^j~y(6W345m2bpsRNmkW0kD8S@ySOvwiq~pMGc&k%%{b@0k$f*`m$2?5)&Omea|vU^Ag)GD^bF-OOBrhNyoyw zOVLHCV0skdXQx~rzEoz1i=brx!zoLc`xt;F`LUNpjcyYpx$I#he-dr;HH%s*XxW8J z^$3Lb=@hK%au(Y1>6E2(B|o{kRFKo2je_-rbrisa%ZkT_HpP0n;=sxgsJ ztgR|>;PMZCIfI=?ZEf`~;`x**?8pSF=iyX}qdeiDPB7waPA<|WKmnm0oVjg1Kbb;l zia4}YkkZ2wj-+fopOm{Whj?T@KRe-PszKR+nRvoa?hvb|Q;aIx0DDIx9j9bXP(0_x z&ra&!>EJkn$5=h*v&Kn>tVB1enQEn2WIRQs!V%Qw+_`aO!V%Ja(?Vs!tHyk|uBc|X zuI9H(f5ceSEygo-@L;uOprb3-Y2a?s;5kee&lEv#|&-=1RXLW(0rw zrV4FgSRUOig0pF;iluOTcfPN_Lkry=0cUX)q?GzsSz;@aPrDUQIT}Ii@HNt_QJ?MW z=UI!mcR}+G49Za1rqKTYZ=jB7VrPg|>E>T^VzT$b%LZfq@+Hp%_F?xh7I$9-xp&id zo(^FmtC9*HGN=wKaGQBDO!?e(?7Kyzys;(u zU9fe5`}8~TYqsjdWwYxsPT;vDKt|Ie_p{ii>z(|cmSOuFrRcF$5VEKf!9n%=40h?w z-)E7wuP`9XhWnw^PV5Vx(&JL1w-aMk5!$}LlUpOFqM5oze^@;Jo!{a`4?Mtgl;Ke| z9J)}A{1MI7HG1c1ABcCe54yhG5+@j{*?r_`*W2J}_vI*EVveEi!tpKRS?Wy;TY?k+X$Z30|-9kyg}@3zp# zc+#Mt_ z%Eo0Y(cUhg;f*LJX;PFXHB%=i^{q#`BNim^VTv@tNp7cx3X$!`Y#uh#+aVUv+h!;B z((s)U9v_A!C|h!n{R(a|p8j10XUp$1b^!oJ=}53+&*p11C3jRhJoZxvZQGtRwr$(CZQHi3H(%bL_mcbLCcUdGRh>?yI$hnh_TFpV6DieAxG6rB6mgPl zaVR>AmNStZ`&1u&rkAahkg_m$OpIbY$#YcH5wf@VXpfhmij$ScRO!}G2hp9J1*~4N zb2JH#`F$rO>dSeTGP+O)l`JIb({n4tne5t$cWqDD(P?Lld6xZV5}s{gN8G>qoiu7` zj!$f{M_XmO0m*IaqPeD}l?nk#C_7>zMI)W^bh+Ws z<2+7*+Biyq;yO%`V&Q7I;gDOU?NM6Y;{k`->N?@qi`PBBN!L9u8l!t^7}Fo7Cf#6o zmC_L&`E+p5W29+M(UmDn-HeKUD@tk@13!z^lW8(n`ODOYqTB;h)Z^tu+TS-pB}%cO zREQEKx}sD#nj;dMVw!&2gyQ~@*@@sX+$OS(1c3e9b4VRA&kIG@V#&TWaPjRvCc)^fCQoJ{TQ^)zstRO5g1 zGetd|{R@3`{8_>~KKG*+nDwIseLOR9N?I<<<=bd@8cQSQR zm;8rp4P=%E9^ zX1r(k7Cm$$rltW9jr${W~)Af#57>Csm$IywDU2RfHk>o(_o~_uUEl7`AE&nkCL9QY z<%0!2Iz1#mAx>opOd>YU)o+k!lc9n#2DEh=TDAb^-RwI|5~(Z<8F6R zPhfuz785nw_^vR56tJXa==L?@Xnl5~6c&Hmr?tdunJNLf0$(PLYPGa+BTV*xB?-iQd_Ip>=aqpj=UtzUQS^o zqZ4(pdImF@YW`@OkSqrJN&aTRer>)wx3&H`6H=9e3srA)5lZ{j4e?S;Y$5#w(T($g zZaNfJ)2&NodSC;?;O6yi4^$z-`Tp5Qs1EJ<_97rwFFtxL;v4qp)Phh%cu@|N13DtD z_5%{eN6>(a%7|A$AuA*vzj~$K0*NN6L*QsM*hxx;j2cWl!#@N7MUMmn700@;Tuw71 znx)e;kBuCzgOCmpqSpvtRx1fw3q>Hn3FP#~5*4j_zI_v9#X)j`1coO1B9b6bn7sVR zBhE>*=FUf8Kzl?cf*PdoH}xY|s%&(Wz@{f1*C8GB$5e34CxUBZNRl2L%xmThEr;5- zj8Z>Q)-+Q5MV)=aNbEShT-Ab}8lxhV)nvVQ83e5QJH0v3`_Mw`+@tHpke%#d=L*TK zrI>{RDI|7IMY8gx`bBj(|H>Cr;n6k~kxMNNG^RUoFF6A>ofv~YNSe|#h%r%>eynZ* zd|_v0$>?N?a8+kr$=*GZ)Q8P2$J5f0-FBajRt(cjSNGP1^67qm+|Nk*CC=~t&{h0| zv;Sio0AxWJLD!Gi4U|TPkK-^PPiqi)*fYuD-I9PnhaX)z;}2Hk1R&@?cFM^nQIc*6 zMIpD5NgHH{s7a7B^yM2lqbWOM_71@#j+Gd_#IrnEh;Tp*60F*QAPNl=)T|Dgxo!{r zrnEx7pesiY@C8JwdEZse51I2o*+WB5c%9`qSYPvuJ{!wtZLWQJ+kQWL7{s1#`0LGo zR^p7dJem7YoQH1xOxX#sv~eTSW2xvUYR`);^*a0C>$ zXv~~uMgR?u-$xFleCJ0JG~7fkzbQvRq>#KW@{SawxC}?%s8HcURb3T_n8t{W(BRQ$ zz#O|Tux{#}#iC4(5I#sv5Uy)&B^<5J*>qY|-NX;yBxt>flq=6dDpYyC)JAdVw~EKB z3t)x6hqIUw&*||7l`a}T*-d4J>1c>PL-&Wb3#F%K~XrbD|?q6}hhrM+yzV2st>jOf!`)@&AM zVOU;9ulI+);e@u2qSE9lTDnqNEVm303rh5It8uBf|FL);3~fgG2zE&$ohST=3o9+h z!!kX~W1s;NW+F?}B4Nmo>0~Uq!HW#AN4&W4(}A(=zWY%Me3L76!s&d1?zDQP?!Jct zk{o>Ycmcn8_ACCCH4O1-qks<|td_ok+c-w9fpPt-1N4#7VS8WpY0lh}1Q5<6_5)qD z*8M$qdKE}+L8&+YB;or5+ll~nY2G%XrN!$F&8fKC)*T4>hG>juWq#!ERGopZ*!R6&9j=;RJK!zzwc{Tota8R-2 zl)ENSdeHXcgka)g7YDoyP_X!rflfAlj2iza5t`ZhHdU~WNOZozbAY=No+UT+d94@v zY<#{dQvzV$VdbTLra{)zTw>Uo-?F@-i<;@sQDLNV7mK^MUe|I4WI)qjtm_?LbDjPd zw#+a*_ctHDk-c{wx`7mq;*^z#d5rHlNqaYMva6$qE{$N<=X5NaO_U1Uoy98L9jyM( zd5p=+IrU|Smu;|+mX~JEG<%h+RhMVJql4u!yC)wJ8rhqb?Zqg~0_^}p8ouF~h*s(? zZ@-K`A9}mnX%F`cQ_E@aB`8p*cDkn#qh)KmN%y~sAeZ1@1675- zgHc_X1XGBP2K4rJWY5SY{;FnTD%C1Wl8F8klfwFM_yYi{SUOH_p0ftrUU-ZjtJ)ZNc<6t@G z)nbbwWS%_3Lo zC_1UESNB=WG&X#Cz^c$O(AKU)d-*R(GTE3fgQ`S0?7&o3vsmjnV`q1gjMCDIe6pfz z8oh%@decQ-k^Up$?}s|WHnSkFRlcW^PJC3Ve5f|ydf7&S+V0zbH#jXN#v2~GQ2BGt@WKz>)a4;1zURqf$V}DjxGwt29>TGNsLLk8%3L{MY#*2 zCa$m777xF{sQU9Nm~=1KBLxNuA-!qGk}e3QcFzANXnCMs&eMDyNdw@I2AzITvA<3< z`V)w-*}p7{3)XRiJd1NbmgxI75^iGJ)8EN&wuqs-XD_$^Ds7Ult?^0UYct1U5DD<9 z$jF%WD9qx9s2VXEu@1*^cX2>W=U+TMBx9BY&&&;4eF!c?%6mFxW=SDTmnecv&)22> zmYnC@d=cx?a0OlfQTT*u1E$DEjz%-%nZXtlf1cN`-MuOr#VNeKKZZ1Qo3aDv?YwUV zCN9=gVW}8aU%Ir?_c^mNc|NV2h`PG8o1S00*d5k<-ruP4Cm`ri2`2t3*I;y=ust=Y z)R^1S>Wk@<6P7tI9_p|`koasS7Ltl6$~dZ)l{ao5RT7lyi1?h9Wad2~w*6PyA+AEP zi|gvE=9VLWsNyzKD|w(J{zEm_IEX8)-Ao4f<$<+pjp!q%sx0^7eZ(NP^`)`l8|54~ z&Wk(^TQtnFszN>8MV6<2M7mffz0?}1t(%FZA$Zx*ZCK_DYeD8VJeFWY$#RfjPpik*3auk+)pnfIsmUxyhj@nXRv2sTDReoW3VtlDgQ^ zTyYZUzty?^BsRKggwV9?IWI!IB8HocLY)d1i>ZDGzuL{PbM|&UBQ_ix=3+<29*si) z%=(Xa+<=J@*0zkaNbVWo4yQKSbw+FXMZ9&)GOjLdhW(^$7sixK*H{~*+e2o;Q!w|M z1M3a(ZpuhvvaYyxxzCXF*+4TAkhsKF@lBry^SjY#S3rq?;JvRjK>ra=oDe3J{|?S2N#Tu%!y z#l!_gso~8kJDHIXh`W9!)f`k;z35ka51fS(-r6(fQ=4FNcTKPua*_Hv%*dL#)oNzE03(Yg?N~~Mr(>NfC|w?FS=#&TBGhPN z-*aAa;?g!L2q;%k?yD-ppj(Qe%LRvysiqFL%+dDnMNVgbve(}+cr7*49jJUV86g%nyrFy3X_R&wR`7g^N|FGl8mwFDbcQ>MYKM%TGR)w z6kk|lH);*@Vk?14Ej#gIqmPF#DI!$7Pfs}zKqch|6uii`b6r|=8f849p zi7rqH?{roWm0{Td{>4k{i*l=4P0$SHB7y0Z0MZ=W)4Q{8&CJIB%&CYv3VECI#=6j>}%TMo5>-0McX6#sB#)@@VNxXOf;#n#?ZSKfK*Ya@+ZG@Yx0tdz#t=nx!WgvFG*(R8M1arbY;j zu=hA@Fv~qQu_7@>!9~K~e1>5NVy332;ErvGydinF~ALeIf#`Rxg!^4`CYK;qCvx|F$#@IH`J%hB_k z^Z1KCq_Rh$UlZMbXqiDLq5D>$|7ft`=Z)`Eh!LKHuLUm8970M*)ypZFiilo(%n71K zn2Rba(v>|4xeF?^3dy#oofTTi(*5DW&IR8%2`RIsG+NQE=KbS+i-_Lwo#Qn=Yn#kv?Je9nb4*4?Ye2P zi1yw3h+svp=t}lp%``}8V9I)itI%rPt1K}~Bt@-ZGHj(9h6LE+v%|%8{slLCK*VFl_W$7*|froa*PQO zZ(%$sA*b_}m18mK0tPZXm3ipuLs~K~UB+^32x&Zv^2&TiGe2P*w#JhEZWkc6WWA84 z;ewoVyo=shPr|U#!$sv85(Q*87vtF6<~ZFoe^LCA;cI+$jX(ce4hLbWyVTjz4JA$v zNxJ145Ck|xYI%qwtjj)clXb+7Bl2Va?Y#?-RUHh|(E(?+==yeW?1KdJa_vM}oq0x4 zeX)6`81Z=hk$h1dH&Dy=xO_YGp7@+);u$AYoDPUsc9-_heNATq3!p%`J!S7 zvCn;_b zmb3P&d1?SL1*cMNBy4s7aV()3Sbn0X<&ki7-Px6p`8PhVa@xB{;@&nzYD!0I{b<+` zay>Im@{kmq_Qil&82T1h4|mG-jVuZ!H8 zU**47F04&gPo5Y2hvYC;)|QEeq@-1ITcPh%V8r3&Mje+eW!yxfTY|Mh47-JO^WJ^2^>IX!Q5x(-8J7Ui5=x zff^h$|HFSlCN&IJH^-KWNk|=MXSxwL8Kj2zN!h2HOJDP>QgKcQdBHi1mh{K;>`;fP zLthuwL;5&ap%DhR9MTpLOS0TvOFRqff#9uiiT|2*-*8EB9A0q-TjG!8pEV$2yyEh} zgUH@69vL{8sTdk>%HW02+opE0qn-1vr|3-)R?SpvTubPn{Vo<_mmzPjOaKZvA@v70 zdSCbDx0oE?zYC|!?3RuXo+oq@qcVl9*EQNRhKRUh$tD^WCaLjXTX{_GkF#l?8~)4KBJ5>dj}K>c2^Hnk0fzRt)avvm8i-GL@cR)Y{x)jNVM}3p(6lERGY5H9>_8jLP-_>~}N3C|_GLdA!0{nCJ1A0rP5t zz~|7Ehs<~#gz;4gpeY@dH1Jok+y(j2fZha0cBWTH?XnE6L%2AqfAl&|TVlC6xHPBj z04j+h9>52WZ^p(1jcbkYAyIl}<%|dz>xjfmK2sol;!_X9J{8NYg%#leCABf&X+)mo zjo}q#b1cFKjLTep0hCTgxxp)m+J82lf61j;KB#E|e7=+R!uySHa^p_!d`_iualg2# zUQO#)`X7vhsB_%DvbgO0)ZXJ7;6V!6L9W@nwgTco2veV$8=l(3pmYGWs|#AeXY^!- z%yU^+f3T^M$L|tk4nFP%#YcoRFDBy_2M5iz*+1tjzFsra2iM&nL)gMnMSL(`j={c* zr^?j8Wez@zmrm2&6s3RVoKD`#P9e z$ID2=#Ib&T-1Jz9?c()le}6*T^nC4r>KF7jf}XG5zKOXi$R4sos@%o?NE{^EXbZ7Trsdc)V&}ejyI({ym-*o?kgT*03edYYPenbpi z(C~!@kB#&KPbU|?T?GtTrgKvH+M?CSt>^#UbvoD(Gmph<_vA^zt!Z1iSJiLTfAc}U zq(e2C=wMUb@KUg@dE@D9dcKdQA{@Pf3gPb?gqVXB)VU8ZTCF3$!H=hBaE1jw5nieK zOUwpsgmk^urQ+{BUZckhwH0OIsj6ecZSqdRcB_X%vfKvK<@24)1LBYBxtkAZdYL^J z4q6ciqt2&Dij8*8%Ud0GK{hnk^i9+6!ixzvw(Hz*+ihGn}o%Tctf*>Iu_(IPKS{isV zH8liw+sYkClo^@(x@y+neh&0xVcP}=69Am?+S4{iBLg9!Nv4cbMH3#etK|$XU9an< z9MokzvjK9c)&AF`($zgC?UBIvBWk;h2DSQ%POjhvGNqa29dT;Gx2)H=-O=^NZi$VI zKO)xJ$Ce`{OvP+#xjTU6EgiqdX7$(5O_9=BZ>w)Bga39JUa?v+)lkT%O+dQ+Ovh$(<=3Ej0P@z0OUib zqc=r`wKrg=0G?K)rzXs>e5NV?>YUceo0HWZYC^dK+oI z=&8+L`-Oix9z8hpi8mr2VUyFIZV{?Yf!zhZc)vPk>}7VP)Jm9!C9cJF7Er4oXUvm#p#wNaYnFdxlK;2!|}F9qH*x6=h3y)BbR}Ch#+nmsIZ+UsvFO#H4|Kz>+X-r zdq;btPg&<9dVsA=LMq80a8Bw#F|E~$J3rsDMqbM(38Kat#uoza2xr+@5E9ocd!)CJ zv4-1T`gU8QD4fANWHGBXB+q3q3kbxx&SRMJZHX9)(;Rr+PPv-cdAP6XC|k-G8dD}< zZ-k}FXaT3UBc{hGQ7g*J!y%$3YkuXXk=)%%^W6B^ww^oTl=ET+3*m z*d!uy(%Cl1NQBGF*O_24ZfP!wJ)k0)pEd34dR|Ml#D(eQ^yXnCykw6xrG2yCqbg?#m>yqzhu5!9YOl{qh0bP>0`mrf^$(qh1W+V_z20vYNrb%iGT*li zf7Fd|1_+ikh?p+;kRk}k;J%Rn^A9#SCH)_x9r;Xj(i;j_3WY;r+v3>XcOb)ygW$xn z`|93VBymf|Fy!|4;)ZG4(feW;LVs(uY-?RwK*hILN<7$tqI;fLmSk$OrHEeisuDDtowr~K{5!$77@rI>7dN&W*gHJ_T@YGDsSLw&_ch(PpC6AeB0i~7*Y@DXH; z+NY`Cm~nXr0cb5fUirQD3ejAKi4rPVehQN9dJCSq)Iho%9lCLZ_lR*l58v@d6cgjX zEK%ditUt!f;g&1_?Ou!QWeQ3MfB$;IbXKFW@OHefvwu6hecfLi*{1aHxX{*qeatNY z*D~-Gx@toM>4s~KJQVu&;JgTX}xp?n={F{0&1 zLfIMNhY@DN;6+o|#Ci{)l+BC(gXm3{aSrxs18`#&XZP0yy);%Oo4oR7jAg7P`nL=7 zvFRfR0w^tii&{HD)Karc(5?y_rI%?nXAO)j!Wfq(9w*Fz4&E zfFT8Aj-{nA9spkGj4U3Iw5;v~{OEx}s1nsdi4tGk5SCf3E#k%oJha;vJgD_^w`Hn0 z+KK^iI8_VXohg0ge_&PaM&8Jg&W#fP6r}+%HmBjTJRi{nbKgc+42Q_}rFo0vcjZNO zc}J|-B_A|p0O@KP$!WuSYQ6br+vfrBtjN+Mc0oR-m1t-+bnJ|(sqTe~Ds)hC;HIW* zdrHo^pmth1sws(AMN*&aj>=_Vx(2_=AmWoHiU5N$B1d3v$%1rdj(JvE56Wf9LA?+R zd(~ zwfpvnDbV__IrhzA=a9&Tyh`bP{MyK?RPM(sHRSqz<&f#U{D>*Vh&T_#X;-P8z@DPN zNQo3EeikrlIk}Fq+(J>lU=AraDiH-mg;{x-5U94cc^-2F3-?6$@?IJMj8Hfwx8bC{ zpI|1z8x2k-gM`{1QpGLxKxiLDHWRhrt)knonjmILe*;XxA^#ZH0NkE>@bsQK*wbxf zU6AQp0^H1S#DI>d??65Cv3@|nuzp2AivCjih5nBauVE?-M>Jp&$u_u-;v{;Okhe8T z4sJH!#89}Ie26JX*&valo9M3NB@ib!5kI8EzlA%Du_MG#j#Ont%(he_vJxR?hrB^G z9$~Cl3Sq2W3gLw-&(LD}D0J(53t{u{0K_;79hTZLkq~pCz#68-jL&O+(E1r5HN7NC zJ-gr%bXfG+z+6IRy*2fwN}xute#BhZSh!iyjq1?oTuUptIhKmhE7IIl&efS2xG9Bt zS(qs>);r_gKT`W##*tncX2q*oXP))W*MGZ91e3g{abeUh4jaY1+onGulNJ@}U zO`3+ruDij2lFlKR`2HS{8GnWLPQE+dKu`x{0-6{Mrg^bKtH#Ou{*xQdt0gKlgc zGK)*PQS;>RM3+a73MgY=ec)cOk)`7ny)lA5HsEGr<;A|VFr=}O=`zhT$4&yEhW5iq ze|2%(g6lcYPbe+-Q+YGAgJfe&mlw_W9(Zc8>j{&F#a9W(Gho6=s#X32L)w^qegYd#0@dCC#+`JL+UZj)*r$3 zPEUOekkL9W@Iy@moAREKzvL+Wgabk?+k*AIO%*Qx0It5jTxS>P*63SCjfVcHeUHNz z-XG|k%O>U+vjR?M;6y~wwBfBc)tc|+iS^=A!g60PI8|A$QNu2nTX4}LMXP8up$BEm zwPk!#Z$Xw$V3rzgZ1;$WWkB|JVkBmnpZx$_y1;^iU`NvZ%J%^^qqR)}Icy&DE**KS znLpAWd1`%?8UU=S`4$`aX?1U5n8GE~0`|@Ywzkw5M*zGg*V@}Qa*yN)xD*q6XY~_0 zFdlKXWv{!HRq5Xz=N1+<2SZB#W!qR=hfH7=peNbeZ~RSHCo489u>9ERpRmTEBS<~? z*I?K8$U@**lFSB#ozn&Tq&bV@mzCvq3qg?nwSS!Zxq9hG?F{;!6qlgwZ_jc>t*WPW z;2uszkIp%RD#sQ)Z4V0eJ8<4a^@M%&3bIy^(BNm$x_OFNl8tvJ=R{R2-Q!n&A@yn!cjNPH-b!akqrPofUQ3#&%&X`HBXiSNkb1q8 zg1!b5%lm2U;_Qaaf5KDxTzeYCn#{ePRhfHGv(up=bhY#Fy*_+*T6}uD924;9=-K<= zF*w2CJ^_ANqLwUXhuhUg^pcmr@-Q; zHjY{qt7<2pp%HNn`!}%ZrdKe;4J~~^I)3aJjwg+7n)nWy%ro`O^?K06y4Sycyc`8m^pFW-X7M=_0qc z=PnG~(zBmI-1Isw`^5a>bFY>8i4A-vi)O_Y;BWk13;3zuSMUdba-93h0Z^8};skyF}9`%`o0z<0cE)?|r_8)VcQQ(v7&N|k- z&a*1$LueR>eVy2O-CZsJxQR7Ml*2N3wOpO+{sb+8`qc9bf3QK@KLC~AdRY^?j> zK0+0=9|dgyEf~sQ+A1#6+reX%`fcn$0sj2=qNg z$(W#v|Jfh}_q&i<(c`}f#G0tc^R6rlk(<$@atpaJlE;}a6xd%X%*n5SLv_UmS1$%D z=crNZnQ7vZ2bftmoxu>Vk79DHqhqbDTY(3x_hyhk@|zJZ2$?{r!dI6E*@>ywmEFJG zl=)20DYeiPGX9xL${pW?8Y^_j+wXgiC}?kK2vP9Hg;O2~C`VSk@FF|d(i(QwIA!7+ z8IPWBHr$z>4M@TvF>Ih6?>fqZ*^#W7C3)_unHeh3GAKh=S-lw&kyj3tZh||ApcGsW zw+C;ikV@Wr3Ga(ZcUVzjw>w6D@sfx_(JaWCHl3dLExXn;Q~yYNcPH^J3!>Yu=vkf$ zx1#D-Iedk429%;<7nC3NFr4;THTnAf_BT^Je<^phEGaO+@+BO+`!BlfRN)sCyA6@Zsbj%0`L> z8(7HHPC$D1N+1Kdg<$wCOV~Mn5{$kkF3~6h7yXvb{YsI6WzaaRIs4R%4~D23N|WLV z;6(Z2cP?eK)mkD5PfTQ}k-+3o0lr5B?nz&&Cyl}x;t6r({EyRA9PQm7JV6{FetK^> zaUmaB#(XoC7;@`ELNis1aV%ajY!kK^sSRA5%%Ngf8xmM-Wm#BirGl{ILbuMfHY+D{ zYAVr*^k8gl6H0UX_GwZJvNp}1bIP779g45Et_jigh21*i=fi`d0-hzoa~hpy$$o=^4}(`842 zPqViy_elVHY2AfEM>11uyexwqEwhz9?s#3NiFuawL@o8nefZ}PB-fFb>{HKjr{bsi z@s>Q_MkiUeqw``qeI}nS^nSB)0+YIK@LP?{OI?}tRaT`l5kQg0cl43*am@XWz!mZN zauzV5Le}~MN7%u3QI7G)@0hK9kJ~_<_D@(hrk`~lm{nz-_Q4Y`)B=Ko6uVvl-}s=? z)U?=^CUBiNfRqm(Gy+wn8TPtVHs|3<_P@o2|jw?+Lr zIL_bvl!@gNh4I;Yab-_9{QW-xc8uXe)&SN%etP{2$?M83mziAF7#l(G$qh2hNpZ^BJBe<$%!M4f5{$feSc!Ea$0=19CFnh z^Ju@SdM<}_6{b*x1VMf!0hT9@eZQ~hHi&LtbZvd#p{;tpcVO>>aqKNAtkXumzymC* z=K}I0zgv2&-fur@T4Hi+ecMxLN)SGt-|$)rUyGx-3RjzFdbYl?_b9$jp5J_JA%%oT zA>1Q2PJY&Z8{gFV#sDpcRrI|bT4XgUoAxzz^4=s$&=WjQ5~OpD%$kbW9$kFrWi?J? z6)!K6%JF^!Ujx~>A`lOeVVYXzB|U)|-Qji|=vsN(d>bjqEaZ^9y}jH-zd!_K;w*fj zjde1-H46hX`YUIqfUnKn6L;plWIwV z)OK!N{@B4TLc6hxy2&7BC)Krq4JvdHSz&%LtaiDbPpd`VNszI*u^2*$X$ zlEJeyYRyF)j10wx>=|Vv)I<##SSs@eMW@ zqH_|V0RtdC@-TvfdQAst|J&456Qx&st}LzzS~TN($P;jFazwzB^TaGQhsO{SxLqDd z#4jvBDpVYcq_`^9X@&u8uRH<=p)6!Xcr6^JUGf8!n6PX7V}&nilbS_YROZhylsvJr zQ}=ZI_CO;SWBkD9KI9AVOAitSHPdL@Gp1PF-n9wwua&Ix5II+Ih=4v0k-7HfHtDky=kIJ$!2L4NHb;oZb2cV#Skx)71|-zcQK z{@ADBaw$phF+f6QpAIm=e~GB+1`=2-HesA&o$@O?x;7kV_#4oCV1a62_$Al|VW_5T z%6brWYi=SPeh7|M*3*@?FjNq7*kCXhZI(aCE143bh)^8m^p$eMjiDpC5}^sB^xId9 zlCGC}=nYj|%}0Ub%08e;OLS~2NUQip^ZKGOvE+mMU?u>9js7Db{?_{2*qAUBsTE?W z`aCbpqb%aU96{J(69R(4s1j3i=>kdNaNKGAvocW(*(##2G0;aX&9G*daO?U zj9g9zN5L*Y>?fxn&inhq>-txLzVjnzqq+GDBx2Sj&H)rMY-ATwAw8SlC(kjO;sCX8 zIh7yq{EjOO){GV4Sjh%3BoVrU%~CjI3}%QGX}O`OiZu%$`kq$__vd713m<#}ZqAv% zRoR;7U=w!TwS`Ptc~p97XujkdBgv5unz~txiRTR7q{gmI4fRc0dFA%Kcu0KZuV6_J zzeyxEEd?;`$iD+5k+Vz3jg$r(D9n+H6_h)bg0riUh-`(T940|wZI=1!ZKOf41FPw$ z%fICIi8#`V0%jR9IZ-Z1(7@K7dt!4Z+?XVl`46btVlYM*03QU%tPI3kGtvH5_K6_C zuweD}|8V*tJJRb8#RvGCT`gvLjE^$iS zAS|TJMr5okT#~lP@Bh9(Iz062!)C##hv=*>uj)`+r|WpZ;*p&|JJukG64kItNYv;? z9P1z_ap>qqg%q#s7-ek?>l8L{RZUDbIHkMM&6miVJWK>9!?1y-(>v$c;`&} zs&Tr68)9+=bl7}4!revbG+ptSTXhdtV*{Cxci;qi@dLtd%yew<7dMHeZIC`iX~KQe zZ2#k}c^%XL!(i$OL$f*YntKB5V{&w3lTqH0ryyuGchi;qvB~A&1SdNHAM=4GD*Y0J z2Uohx;olbX%r)F{nU=FtYg#?oS_e1~B*+yEZRD#Wtki`{Jk@Q-X90$uzV=wqh~k(>Pkrz5 zr-O05C^@`yYYB*fIVz~c*_jx%m`aJrnFG}%LY;`g2Wru{Myx3gXhT8v{q`u?ac<;~ zPbQqbG&X-WZ^P37J?pMJo8Gi@`yMMxa9W2AIsGK|N08ODwGCh-HB3X)zqlBELoouU zFRhwE__p8~1|U7Kza#Z1_So7%bsY*(U|rWAX{%gdmc;9w|4Y=W!U zYfH9+(FN<@V)eIx*iN9)$Y$X=yFYGQvF0M0ydp&Dzn}iVpo3YSAB%K84YGv28k!|N z8(NCJ``0!5OsNNQUv3ciDA6Q--8AEN(6s2r{`8iv%=Cm3_;RW`DcH=oe*Siis$e92 zxmTY;Yw_$Ol$@kzHTozIqfYx;ico|LixKc^LNURS`eH)Kl3WZ%Fg%!y!8ow$wEF|F zn#@-cXTR;x?n1*H)%v6Oq)bK#&ZaeVHVDoSJKB6O$g)ms_`*?Sxfz%P(ZBaN2B$M3 zNCp=groXGic|#vQ260J_%+tns?L!Er-$_5f5@r@EjxiYZl2im*$vF$hb2CrM$v?{x z8+u$M>SA6`7;)N3n6nBbd#xwUW-)Q)ewpN^a2$%Im>7z6*H0z29h+>7lxfX`bv9tH zszP2dPs-Bc`nXck)9@&vbQH0ZI9i4)@pg=}*Wmm^v~XexgRxK{S^H%+x$2jMYp5@j zY&ghlNP81*S?hO{#lbb$Iny=7SgNV^bWoFdpnmgGG&dy>2lOMeQT_#QgLBVPW{W_fkqLF!Er_Z9EoYg9+t4mNiTyS z#6B$-H$fQNO&s?~IPXLSyepEGqh4eoSX3x_TVXtVm1DZJ?EosIa43~?_=w%A`j#ak zfNXR6uaU=?f0NU`0ggx8eBMW_L;`h-FyZ+{FT6t17o~q^hjp zj?!U7rc^(`IW$^y3f)HLHG=`(URnwIgg1LOji^^RLy2uT-=9X5vjvGChr20)=sWqB z?Z68UX<|MZ`@JxsV8Op^TF-L}tap zubTU{k+~E}%c!Nrh|C{^4odrtQME`cpl0Y|vyn2kP)ZjNRBr?POfk9cgf2_ym0(EB zdBhE%*R>Y|DH(3RdPDs&igSLfz3k3&oCd3M>nw#J&%rJmm*^%cy|a3&^nalBd%3T| z=YsW3d?Q0)m?VoHgYTNv8~ZT8()O6(fVgstPO)-feB0iVF-e1`Tu1MW>)>`jmYKM8f)x>ZM_Xao_31RVE=CI7$Yoi&&2ZEeCg)nI=C#yu`!mDGb zH)PN%&txnrXR-pT_FU)9khjLF^cxfIf<9&NBBi*d7(A{Ut>S!2Vuwi<4(kZmy1GYI z1d;hv(tvLw3@ZdczdI+%E5Du+g5NH=stY3Lcr*OO$@#iyKbel$0ndS;EI-z@7C`r;npc+3) z)IU-qj?%i*;oN%`Z%QF~g9=cJ?6CXeaa5{Os5cx|skZx6!K(jBp7Cgg>2j*XZEftP zK36oqsP$67PQRiJo^dWLt}I4xoi?o0&pmwM@2CW`x%9{3#+%fjHk>zR zK>-H>+v+auwitzLQ0vkxd8U&jcgC@Y3hj)Qe_tmbEnr$eftNJ*C{&d)@x#0&8T7d_ z5*0HvkWoo2!Fjmn`eJHq1UuKykH{vlC9SM^znN(kr8!OFOs_9!-yK#+Y*BS6cN`w9 zB)-ENQk~Udz6c{}Vs~Ww_Fx}>Z$};pOhN@KMX*JHb7b@t)-6W%#uH}37xl%v`l#fk zq6KFPduIwZkl8r|^%R(e#e{Jm&rgYRZ`3OvWT+mKWGq!xcN2cNS4tV8rZgA4qTC#1+~{+?k`Oi1X4Sj|_N z#LcC~h-UB+AQv0sMY9F;hzbYfwhLH-(YEI3rC!W{5~^gW>cuKV^i_@&jS_+jTvh4^K>05s#^EeS z>)8s9Pl45&O;Ev6IbuN-l(jr?AD8*j#NX=AjC%S4}5Zs@8t@c-|Z8^;bEz zJod?kD}?|#ZvKQv`(PiSM~hVIr2xME{Ut$= z0CXabgjMAiqW)J8O)th@IM8wgryAGHDGmAD)^Nq}SAfCaEW2JJ*G^ku2|BzMw$G2jvEu4C!V(dv=#5`N2cr~`oSB?vo#bw6N zm=F(uX>T4b_?dYnyiF-*%%r#Ntw?A;3Man8Y*5jK@n~%WencIX4XA!MSGwW^$jjjKxi8sz8|pWCFcWnynC*bnPTx5S25=B`dQO3q(&NI+TLSjm(~igUEw47lm+g* z6R?RCjP5}jjK8}JPd5nU1}OL??V$DFcz(-#Df-!|oLloACR#1@p-l^f27JF1MH&+` zamyUjF>%XlUojdhosHiBS}ybLv1e3O1fg4~E=8Cw&c!YVI;BCG^?diI5+uaXXdcap z7if{IVuh10zEw~zpB$8{coCh|N_}fzGje@+eiJgFe`NEMSCd@2&X+8X9Bg`_onxrt zIK`^8UsTU=GomNsxMyN~a0b>~#J>t|eiXJY>b_C7G!H%zwlueXK(;;*Tiv!CN0qei zg@0b(IED?{N5!Mlzw0;HwTg4nA`GG(+hur|G#H1Ree*m_E}NM-lf64_%qx?H@4sZ9 zyd2H$H>%q_92>o~9hDucF_~-R`wytPH4JgVT}%<0hlMqeSpu4XFu`e5)LMp#O|6kaA+kC@RG3Z7^`cu$N&P3Wg(iITjdx2x^7Cf4kq{ z{m6W%f>!lOzik4`Z(9Q2){NrMAt z|LZ9Y+V+p1@GBH%X%zIj3lF}<88qd`UNz-+xzPmbi(z(z{ZOB33>?urrsMwa9lpbe z73ojmX#_1*(*h%Y8U%+#_^R|6_i|{xWW+Cf&}PwszoNf_6uNN0cS17mHvu#9_W~R2 z>U^yOQ?GnjP}kBy*4?i~@QNjw@bem&iq`VMasb-|DlP`R2Hzzp>HDL}{o2J+eYy?N zIo>ADrLb6iZ(l0enxx2oM-5iOrl7(bh`J?`1WfM@?{)jZ0>nZsP$e*2={UPjGTFe%3%a8Rj(8O{~u|1kE}!EyA^ zw_wc7kTEl}9WygCQ_RfF6f-k3vtwpvX2#eaGc()k@As;<-q!9`y+2Ohx!oth-p;)@aIn4tVpA7^wVmgdY^lP@I6(JX3p z4jJRh2~o6R4OogVni=(2GAn;*yc2aTz(exdbH(E{6;nMdl#~L6ccWWPFu7yfzRv5+ z@TK^9MEdo~@G`~O)9GZDmc*HXu2YXezS3LtihE*VlbfF|`}%ON4@KKx5q9XJMSD(q ztPGYA7-3-q7>Q9dNW+?!w&Ea+*7n(T(=Nv;e^XOH0x6Ba0SeSz4ih>|rE`UYF)qZo z%QU0E1Vdu!TdxOQ*5;$G1hb6mF3*t%6X<(2UPBuzy)lh_zdH$I3ZNxPu_CBo)7cZEj1HTs>>v1E8Q1yklTQ%7M=}%A`Mm!lw>YtjA@mti-Nld(%jOZI$GJu zqDd;e9h4OEIQ3qcX{}IyBWM{W)GR4*?$U-l5Q5@O-Z@g`mtc8PY~NHHK%f)tCv5X* z73-)<5!{d2!#=8RE*9_7?jH7dqZl*16oiToIuk;JjXU$fY&Gg>I?$tPblW0ye1Sr}4*4t88F=FrSHmF&)Rl9gz z8v5tK5ts)X6;u#!M${PQ@!AYACN#+rjILXz$G)3-|HC%;E9DqJjfxm;Gac-Qo?bp~`(loY*XnNXva2I{nqTC4<$%%7NK$)P95U zj(2%|_}e34baGKZq-s-j^5OcqvNWa@{9$j^^&3t5>{UqL;|KoI0S#>dZLT4Tod-eA zpaB zquopW2roA%61*+EDBYg(UM!1{=%&?lrzqL097oe!14r>CEds#(@wI-HmJ$#XHzZtd zH-$Wemx~Af8>1L>`z>5N?~P9GfPX2=YmwSPTkcj(IcQFiuOhv4Ux=zllrk9{p@#F* zZTK2x_r?&wEesUB z4wuu?HX&!{;NwAz0yOn7Ib9+yhyQVuza5?baTYO%ZwzmzF^I2V=jJd9#MRAR_fpKc zT>k&k+}0rD{qNcIlvF#Z3>gug@n1Ud{@FbtUNI3xHuED*)V#`7sAq$ZL4l^Yfygr1^=OMI&<+|F=SsxjjJsuTJ zMxO&6rsu{k22EgEh1V_mNn@4MB*ja$Vt~>R6i!(sa`YKudS`$o0Kp|gQzgQ`Eksnf zamv{0n@Pchj;Wl@Xt%S=BiQ`n);H?yL_1Z!O%FAK%Rt|YX_gKYX?hA-Odo8sMpt&X z=qvr8g{zcDdd=IKjG40!{$6ztlmGV;A3O8^8B3j$`PctriSIyn!cdc|89-#!w+;xATxYMbCfRvA&n#;5Yq zvNmPg!*Xp#WGA)O{ptBOGSz0D5S#h=$hS`StP>rX(!BF|_n7Lp@#*`0Ez|P*?X;-t zCAIsRTiwW&ytNl0GXc)#`78IU6)&LYz^Ua!_WQdS#l$Ah5eS?tylPDxpxm!=W9s`5LBIWE4$6PlvL@T^ zbIqfvxC`C~L;NBvlom=gHM5<9NP2aYU?+SD0yQ)1!jxF`?d!L%1BL>H#m(&u#x9S?+5^;Qms7ivy2w0#ZQ#ce8FIK(#S1^D=ENyJg*DWQE zl~ZBV$|%B=O(gze*fF(Pl7*;(ug zZGt+n3TemDjjglw@$E(W>toaRcg|tM49K>_KAx4{s}C8$(?dA|sb`=&o)~r~Odb6w zKT{lzwWb!3>Wf z1K5UV z*t8nA?`-MVR`wr~X1eP_Knl$tSk1w%c5j{&O}bs%j;!(8$1Q2S#>xYEElRZf3A}V4 z7-m&1ZSDX~hY&;Pq#uEMGB?5A8uoPC?l@&?c~Una6|sFF4-xF)Qzn|nI-OKa_buGw z5q42`y{)L&+CAIAiuQ|#kQr68g1;sMj}`1GDZZ6<@{&D9L9Bo?_Q66(;ki=KUaxHUZGC#O&L3jE3E67lxs=LFAtmB$Se<6Eg$w(Tywl&*csY)H*IBJsL7XJ z5-|Us)@u5Fp){#pEly{@3`@jP0SA_TNJW=1q;D!msvrc({8Jj##$}l`gu!!40W(^m z7o4&7@YE7qd$%fecW9}KQG;|L5Wq5!ffc^x{;N z-7xsP#o}%aEYpy-KJRRr)0F17z1OKSwY$&q3d~gS!QXb$Lr{Apexsgy2-ZtpGU_;b zHSGC&q|1EvXZc~tdj#O)pUUt?=5j}#0ONAysnOETiS+(;ez83lKCC$oqTc-l|MMXVx!jlk_1cGFK~$Izn6$&(C_eZOVDrkEisy_VOYzDNvPQ#c zo13C|kV%Zhc=MEOZ+y{0+=C$_UZ>M>EH@(>`@pa4&E z3J$?!iYJE4xNo9ut`?iGnVmN~X%xsxF{;d71giXP8rtAxw_t7;qn!RbJ5jNG1PRAx z?7>|>_VnF+@Mw$@+5*6biAG#+9>i+&x^IgoSugAyMN3GKrWk1@e$QATl-Z~balgH(?n3BjIWeeS4(CcmKnK z62wqn8PHo3OBz6eLo>v_>0m>rAWN6*J^6;Sqt%JbknAxP^33PsH>&i}@A#$6wxAhWy$hwnp1ajphjeHeeR*l?Az&N5Z*mxDia7>^$=*DW& z_|Qt`&zFbf8#==(s{2qW3>Lh)Y^9|fVZSBB0e&&Hi!?$=$fZ*m&@?snk}Sc*Q|DXU zqDr|VxgrM_<^>a=n9D#FVvXuf+W6n+;nNiyKFK;Pee3vyy8M!2JE_yNT|z3H2|fy9 z;d5!PPz_}@ezY;+VviyTG3qH72v222il11*#V-S++|)K&)>UNr^^93T6NIq)V^mCq zg2;5o*g^JD4&$c+5JA{+kT(R2AaqzN;69+9frkjw{vn8n74*6LI$k5T-j+r1$J!k~ zt&DcZ${;XKilKfsG~JA8U3Ifa;!XWMN)xn6Ow!sl4Io-!>C}11%hXQFmhAh>nQW)A za}=MIu9&Yw+els4R~j`wwT1 zD=Ty*y|8#RzXli|mDLvT(dwclFhYhI_l6+zdTaNjN8#$3M49A4M*A7rj0}`w1yAW@ zm|0Z1U`?P0(j35}A`M}LyvWL{hbUB)>qM8#&%I9h5S6OIi3^v(=W<-3V2UtdVah|` zCHZ9WnZ=_?YUO3kjp$j^iCLQ|;a^E%quIjtSUbc77X=G?shKI)(QH&e$rM(Shc+wJ zst++A}!<73|;M!);G;Tge#O}-?0ryhGrA3LIi=I)yC zjqq|oX;Rd-tg>YaRAeUW~rjZ!o>6#MbrC#yN`>cJv^rZwb zb-!&O7jSbh4}@#5n|AVa(f!K~#M>C^Hdpv{s}}0T+(;sZALc|#wqq8)AnDgAy!KrD zF;f4$y!rxn4s^#fu*_t^&XzXzsv8aH!BOs!Cx(5{3l(9=mMJj1Z`Kv4|9k~sh8)a* zP;h-Oo5*%%SJ(kbl8FkcdxG|M3=~J7oUXjg7``aoUw!*nR@YWoHm>+v+3r?>XFc^# zij6z4TnB|)<4xmZam~=OJ`%QDbc)gLtE$tjD@!Xsv$aV1!t7td0j+JOVf` zO-d9^>HWB9gg9o=%li5y@ z`>3yR&srrJqw`KQ*2g&Z2W+_$rlWWwo`<#=HQN(&h-mFr5*EIEFb)T=GDL5F`Shkxu=ojH^)B&i_3AllAalju5g`ZST3i8R}!iC@8`h4=DixleZr${I4 zl~`jzdPmHKrLZIVF(|xg2_iD2+3`g285JVWfRo zk(2m!_F|I5lLv-HNtG?nZ&43-ES9RB4(gGCT8rF`HBN=xrGW7p`{4$tefO2q%T^0b zC4Rn)!J}}d&M!jaSSVF-=nh_)?I8Auu~aOhnYUl5MR++kA}piE7q#hXdk;5q>$%3F zh57mnkegjg>dwM+C^IP^mRF>jtiwjL55IrgoAxt)UitoVyTLq(#AaV9*5$tlkZeQA zOMR20a_4`TH;D{(c6)yAs823|79Y!}-8GeXd#Nh}u1?7X^_(p9uovm1sr(ii_mOSos8DtiAxhyL>9DdoWgj^hGT7Q zvNe5+!qaMQ1}u$j^J^!z7pU`x4R$~E?6N46C)B%DT4F%@OmE&{zXQ%8u~29q<_#Ii z_b}6u@27&k2KRYLE2Q>D8^`xB6ZpJIiXZqavMyu{iOE;U-iDF|;oH;`_7nbsd3^i9 zckRh@M$9k{VYi_YFx>3`P$FH^Lj;Rmbjt^eh#&TKAry=9G2=$28}0`4Rbn5mQ^j9J z{wB5{WkuB4b^jC-gIR<1BDq7y`YT`HZyrf0)nJFtg-1GCviC=br%ud4{WVYR7j?m- zjAdaCYe|`_WpC@*sid!)Ye_nFbMl0wNrtc6J%4v^gLQi^=z!yHC@hWfkrYE!Z$cZo zT3P&KFoq?3Xg@4GH>O(I904p1qqUw!fWb&VENi>40Yu0J91Y{ShDJdCTR-f1caUo= z98J(V{dfCn6Py|#+Q2JbgB{3_4*oE4)SWvV1q{QcgMfuR6t?`pq%XE-q+wHjxk6% zON7gYh})b5vXZoSXp%?X%rZPZvX0LBb&A-??I2M`$5Ow&{jNd0uyM7;S=}Q6@I(SS zv8aRduc=Sy30`+en{Z>i&~w-CDR)G)EaY=>)@#>(mxn)aS)AA1;sUwCXXW8uqWJh) z+yDJb0dGS|>wD zvwSkkrOn?$+>e29?4(CIw6MB|dgZeHz?!{hE2c`6uSEMNTNdDr8J86z6?$%hSU0&N0_ zVvp6FHZ(f-^Wu5?hjR{Z?ArM(hy09(U53j8mqqZhe5xAm%NDiZk<@t-*%Sp^|riGhi@Y6<#WEp2B8^?_zs%*%^+~<$&?#94n^yrZ~^wZA%K4 z(z}2X{Gs6%OZXRmUv($>WzlgiZ{wVzyfeC|zCIDpmpEw1J zgXuubTxX6wg=f$|hu?Yd$M)O%m!U^q*Blh#sN7B2DiofXovv$@4{lpiy9Lv`*=#-m z3~+;8^i_I~X#yI#&L5YlR7XKD>ucA_s%XFT9dE!9T6LHNXAb{9m73|LJ}=C^ zW27sQE)6N)!|zV>$!8Usf&Y|TrdV>`4*EsXnn!=+5r*6s{K#;NY-1xD@HfsN20W=N zB#WcLkyO8lv`)S8KQvsE|W zX?gEBk>9m_jB=SRTKnGNce?pV-c5x)At>+!+$}fj*;NmUS4;jFrjWuJa2GbSuB8k; zsi#VEIa$#Hi zG%h)2lgf&L)3J#+2u{dSJZKMQ3qq{!R7^k>XX!knYc>jJM&|4Ryr2cP(Yh7p>nQh& z8CQzH+Fr!;fM_M^LW+?eA-ArNiTKOVDn6bNR~QS?InFwv21msbIYA^#@-WkT(igYI zrAHl1<%3|MUNXk~H;I|jF%1opqJ~@8<$46LvD}&pxEae(YK8!@D$zbiO|PcvBpmetSBQLfp8&l9qg{zi3OMQ`-{5 zHC|~D0HQ$_2Q-3P<834aT6-R%*1A~hA=aOyw+w4nAE6n~IB}=iJdnt6j^>#0rP^#v zTkPn66g{mP;Tf+u@uTs%8ih8Wt=Wvl>TXP$e|$WoXnS=gZ=IEvIwnGV@GM!AL47C? zJf=$Wd$NkBNb-NMGmRDzz=-HLEy~-<78rAmpyEJgyK7DdG*}a-J1ze8LGT5Z>BVR0 zOqAc;pUKt~>7((9x4RHz6gImMv=_Iz5I~NGDz4TN63;ag%Y->LYSqAmqv_I|2Z=&nXJQY(N*4b;zspbQYoha$o@nM(Gu|yR{!U`%{{bl5f6rYoM z%1EWeR7xf7zh`-WF3KL{oL+N6#U$8GoBcc0R5&oA&D{3x595!axbV;2-PU9blwV=z zCQ~;oU0412;49NJzZmA5(?fNvknMZRuc}b5MntHkGJJZeQFa=GS%E>JL8n4vRNJCZ z{ZH`vn_R6Mv{)^V)9qctNZO=8Uo<4r78lDF5m3cy`RSQTpH!G^NN8nP<_`&`X`!pb z=$em5HVI=sAixIR`~wARwA5$4lj(R$pN*bOW}30euixHrHeS_giGE1ud+K(O!G>)} z!!sAQF-pb7rcW~2vCr@HN{D9ZKDfdX6%$eBtj=B`I5gbY%Mh%eruQap^(w<@nW}H#hr?1S?y?tp@2Q7`2T)TEO7hM|(lWWgB03 zkHFe%`r!UQ*}UY*@UDdRc0OD)6SS6EI#%D3MkgO2By>=BWC07eAko5Z9^+}PqV)pr zidh^ehM;5!HA{G8MKV&&jJ}$pTKB-in4)ej(5*&Z55C}RfTmAlc}T1NHND$JQ$4mD zX=mq!Z}V~PDLx7~{S5D}wtvaci7&wY~|o$o&(9*>!5 zY^N4pu{h}Jgm~WjB)K04$uJi-6u=9XioK9Gc-@}916!SZ9eKF;+x&(>y{1oc-V*QT zKE_^-KY`veA7i33^zvMX^VHfzLr!f+pFl@vKSz)!3UwDh$E`O0S6r#6=FoapFEOe` zrh-OldctKiizGiXq|@*O6jn=ATorlFK0S&Ry(*kehAe~@ro+QANV(KrMeX*Tzsf|ai7BV2z=GWFcoQx!q3gQDR8nD?>$sv0 zd~%_4qY8Z1*_A;BZc}VxDSY#|Vu-4b_<$lLlD__VnSaZy#eSK;-dy;xxwiw}$we71 zT}mPI2ljzMuE~0BC3f|JV)9F|qH2uE59R2TzKUTw^Kwgi(lo8kIOzu;qAKi=V3>sv zT6krr27A>DrTumQBMJnQJ|)R3VORoN7&H5u*vXs{F_ zr0fEO{c~8B+2`5$Ot|R7-xomsQ2yIZgTf{iPR{q5j&mg1G5D^P^@1LEQe-LJRP-tz zx2UNgi&Cji-KS(O)Wx&K%YPU9?=OmtpO$XKqq}sA`-@x6wXtueGmB}BJasA+EX^$y zM`m{3laT#9eLjd60qmzvjji7HloG6EP{o!0(+Yc*_TW+m2*crZ z#@&wvnv>_n=4uhnlo`o}n;27uqjlfjM+3P(+(7#oXRYa~Juj4x(qx7Qj9Q~ zXF2ab1mR-J9Uy+7=~@-3w414WLNd2RzdJIiX(LoU1aBbv_ew?M_ew<#h}EpWAi->s zp!h6R-m^;gG+=hNk8cS$0cZA-26- zr6YJ#i8HbV((z^IM{i&fN zTvWCG%Xw>OureX)bF0DyG9{lzj(o_6BDrzy8N7g@bKXjTva2ea&!8rao4nbb8y+7de zevi|ve}o<~to=YNYOhzpymt~UuL_ot^_J&Z;z6Frui8=>W=npC_WzY8hxc#Ai(SY`E5nI8M|=UjV~J3K0i=o5E@ zeoGH3dIYo!@9X^jhYLfgqs(KHli*oKbHz6|xmHq-rv19OcV|{Z^(;~Aon~k-=D~uU z3zKpcuKz}nBC#7zd-?2Rh``9Xqid1vWACUWQo?c5B^khAl3KAXvWE=}5xSVVS65XGy zluVm3kMX88H}$plZEV}Aa*XYbi>0+!boe%AhXV5Fs#nTIw)vhsJiW*oeh1E{M<2vC zgRbi$|MxwgFM=D>2=tTV45_OQYlQA;6gA;YwSnEajB@Zy*GJ`l8~2rTT>nm}Lja_( z`=S~yS~)&fG97MmpPKhYSm+V&w_SDOSboYoGqjiuW7YG@RZEp`Hf^X45u|pX8XttvzvH?_dgA;?8!L17 zOOLFZFSlFbCYE)7zsr~}d3NYu>q}?D;8Wt@=9nuIZ^Raa{fXK{NXG ze?~Ln;ACU_-<1TWzQr&PTBEOyXx=*o&?Sp(1!@KKDsHp%{k;XQOfe%DK$yRU1pX9J zDn6E%pHg=uLRL(OZX~#)NGcYc6aV^bd6}~Fvp<}Pm|JT1dGmccq6-2#%4B}VFufoc zTF{fmZrFWOem4B9zgj=;Fm>-Z4J$Xd-=+25g`-$SL)#PvYEmLHKfeC@ZO8QP_;!8V z%+!9o`mu*;KVUSY_G6ZB^sqonuLnxeVgfyQ{66l;fA)NMzP(Re#Ll#e+ACn~>wWsd z2?f_G!hwuGPCRYo@_4_z=WZ~3dBGib+HtB1U8a7^2>^FbJT}AoQp5JAo#MFvNreri z{<`wtgrWbH>zxyA(uRTuDn#e7P31_z4Nc|A5Baa_*W>-fRMV+L!xtJI(tl4DeB6S~ zXub1hV!rW#DdaTiDa5N1+BQTda`gvE0~;jLs+=71kNBjff10FB8C|M(Ul90oP4aMT zN=lt+0NG?~FhGZr=zy|U0rd7Q;L;2lT&|{Z@p(;6%Usfb?5I5$;Nd>6?D#L=9&D~@ zkx&E#il85pc(y?jQaUg-wb`yEOqTx2`2^KHsiq~Z^X}LQ8^I)m>{_&AP(rropZ9%n z+8hcz+7Iks&}v4>k5I!*qCa`{SqF&#&1wCl!~u@d7Wr%-R+YE5X7GJsflKy`I|K8k~pozb3@i|sY(?>h3?8bouTwP(YimMvs2$BABMQE_f~WCI+az| zKJz&9vF52(!j~UhT~Q*C%+X)XE&{b_cZ?!iFsjr-YJ+YFhV-`qn`iiiT^IZI;SgCJd(4SWRgk z7~d#XHZCAdM-6;MBL5RU$mop%5*FfrJQ=3 zXATvq%)cA-wW+8Zjb$53WzUc1j3!DA&A0ES1LuSQ%m+m`8XQ@@no-My8xtzZ0P#5-+H2~kt5oyh=HEh+&Dk#FDSWEIc3gHlCWsT5 z_KI={I%n9`d3Ok>jDL(nMr-5q69`_pRhe0hRkro{V#XO4C2o;>k43Kf-u}I?^ROey z_YEYP`-(tS6Q^NB9B&K{_aDnDRmjWV-n|bEEKpcnOPKcwxq5CY!3H3TH~Zq}3*5 zm8jwAOV~HDh1ZLBJ#(EurA6mqkCd7t` zb(gwpE@BrXu5m8VQZ z4n{WfyC|v14tb(RhH6f zs&72+0RUVqh{ucYt`dbuN&}Ga&znt9ryLLqMsLUs@wmsHJ#C zojQgtanhS31W>_fFhYW>QA{C+>Ng67heUuU7Dwf?gQ&*3Oe0GyWji9*Hl%DH!~Ykk z>!Aat*hV8UHW=tE2FqK(iiVJ6Eh3>A5)3sI4i8jdvh}5Kf4e_WB!_kK!ObaUt~gNY z$~Rv}#9FX$QqT;@K5KczPi)r2Lu^0``8mb|Y#ici)?SFixh6$TF>*z_DNZMJ6sYMM z#KzhtYb9Syn7;!QqT59o%PZ*x^w83x2ye>!J`J^Ep}6$XNCIJ zz(R)#ZBf2qkL4`w#r+vHx8QFuc?PJ8-;UmB+!feQ?>^!9!laW%{kpk??%uQUT4YED}BCnj)pG8|KakV`Nyr zAbz6R$=uuic|FsvDBu-ulb*WZ0Us>WFceO;nYmeBoN6jYWkX3G4F(Yl5yOPG{v6X( z#A6~e@**%SaKM~6^b6#7ZBYvOb02r;Uz&Tm7eTLLRF(%VI>D9vEn;JD!cq4cRII3eyKx+)*tz`p zx==p==#Vnm#_f1>5t6UBeUiYd`+_5EqQ{Y83Z2q>G)IJKTTt$$>s%PBzlA_Ri7W$( z1*snOn*=|Q8vHCiUXb_C10W)wMbJVrAdv`s{SLthxp^K(FwLiDje;}j%%A~5EkY?K zMv#y7<@?c_&1dwC{C|;Ha2jY*ElYp7%{m3CH^=-uwMt_Urhn zuk(j;psltyp6_67e51@3UGVP>y_YI&5LITZ5*R()zq6Zs*M8kA55Jx~R@3L{etJ~L z;nExYszpruH@A$30n^}fL61=(?zZ}PoLwS07XyxYWZ|GgXD}GNki2{}fR782!9xH0 zG?gi-&0@t%qS2_`$>NFbkDEn{>)U*&QY^Q<{MOrf4C@8tfG?D(rcqbl#a}?jX1c*m z$xM6RlInhYGRy<=UZ?fJ#xSh$r|t?uCs^P5rWs4OALVxSB>(g0T)kxk_C@;qz31}L zGTmNWr~gPa6jfCyVrAfwY@MBdi=;_6@}A)uH5JfQ9=etcA!P~%A%dYw);TJ=v2_!(xr z{`qqes>^<${uTv^c}qRGi5WG9f{_kM*D6Ez7PHuQC^cz0zjrGk6%3b;F@+|V`*XrT za;i29!0H=4ql5(et~V8ZtVV|7knpO|Vu(n9Qv5;x-3;HDHAOWxL8$QIkIr>hP;U{*&|~sJ(}StVKLK{7M6-SCAmRY)6{LK7?zc*c z#qJ`=38zX(k+c2U5E4_?)5_ai|1)#nMhxzm@5u>|JR0*%R~k4ktMw?H`JX`)z5+7K zU{_Cegp3zw{`#FBNjza9-DTm~{$D>=Y$@tla+{*9l~LZwp6Z6Dwmmd4F?+gtkx8kt z{WA!!9wP(`U|h~PIYg*;Kqu+ph1%ZFC^#MuD?EeHt%@Epk3(tQ{oTnms+dHZV;4ct zS;;N94CNb55xT@%$IlHlih9v^&;>XL*us>OLomXwMkJIwJ}ezirPcfBoH%HnJioto>&k8^i(Q5Z|oRw*b+bi z11s~L6jg{>9#5`H$RnWy4_fBWBy$Y_yhQLY#E4qjP<1=6m}y^ol@crSyOqpR{P#mt z#A34DYX+tlV*Pm_Y&b#wkg&xOCP|}a7Y)!ywP$TD_$#bOtqQ$N(i-RqekN!tZ1$(3 z<`SN0HplKbvo?9#{J$2$v*vvwc(|s2mmE0RVD!gX);MI<`%LgK9JY^il*gVt4l

zLF<}#lqXz*5r)}o3Yql3Q+m+Uf`@&apbl|sPQtj`WTp#bWB15lKC==N=F_9eC#w?w z0QvEY0pal$ferDWg19WwkSJ5$%s@7@zYRk&Gku**@iTLuv-Oavnevg3p#;nCqtGSW ztF(YLBC1U3&nB-C4~IhR@_HA= zZU#&9BrUp2{lO%f6fres!WP>}L!vh&si3dq9R)eUY{z?R5rEr|7hs7lTf9d zlaD3FYdNLx(@b)j*{w3=%^LDAx%cS{#`6wxl+rg$H%UxRu5ynjw3s*#sT+FRt`Q@T zu`M|dC}RfU7Sgk%#iwsSAf%G_j4%MbM}8u|B~<tt#Il zk|dkS!z&l46DvhZg(D{3Fm^!#eKUWt{zcr&q=(E+>4Q(nFhJVIxqoC9o_}d^!@~uG zVf#r^G(}c%1q?KL?DepZdPZt}>WYKUctuJe*YV15z)iUe{M1F*V$95;YEY>C$V?jkiv}Ds3sdk%b$xy`OlFu756h2>!O`BUQR9Hj-vv zwVmLA`}(i;xsx-D$gYMe7E!>4FVyI6>EbwKJJfUgS=uo{!WPAyPkPia89lt|g;SIV zd{ZZX{1=q*OZf|!{VWCkdMT`HOzM_)02|gL~m(B z7@U6>v=@8m(abS*!({qbc_o-VavuKc_|k=$eNwKfRoZQg$*|;o;@?1?jTQ4r>i5kD zmwJ@>mW|*Y7U;1r+CWB6Y)B$q6J#-UbwChCtQA84@fm0!j z&b)b7_!NQ!oo9|8Mc(|kFBG|Kx*@IU&nYo)%P}eb1~J`TfO}N%^~%RlEJTN%FwY_B z`Tbv%ol|sX!L#TyNhY?9iEZ1qZQHi(iEZ1O=nE&w7u!xIHc$TduDjNGI1lGORQIlW zsP4Vi-n-ZC{#6xMg7GFUBj4aW4Y%D`ekow}wmosDr?U9gB1^#O%=N~H_Ytv~+M-dQ z?B(8dYoWx|YyFXz;d)=BUP(5sbjnH|f)MYvXv{Z*zP7U~<c7-#E@{{P~6TkVr;0X6@x7Gicy$m1X%iM#RGE+_cVKL zqS}Lm+kr2kvyv~@;8ol_OG7 zjOvUiqjan!s7y|`hVF>6as;~fC2p@C<2-O39duTLoSHAwk22$@xK20tP#_a{P$Ax( z{2?FHywNt?->th8e#brLAsF&K9CUgxvwP$k<|U327iT`f2zF`qKeEuhO!pXEz=Y9( z!@DTwv`T>YmMntIfL?6It7J!&_m z=@KHz(Hn z9)ZTM_Fau`NhN{YvN&_pGFH~(g~5T(3Cjw| z10e{>2DGS2o?GmKoqoC27Z%Wx1zRCoV!gp^9tW~=4HS{$W9N!8Q0NJ=V6k$ckPHUfTswP1Or|P_1^QwTVcjAp zPOq9Y8cVxmu?JC^)nex%$qFPhX<~Y!c=0>w9igHd(I-IgT~D`RABgg<`(#)guO^A} zSDA$;F0u|q)_M=uB`%)R}*Z9L-Yq-+&&_=b=?YC3;Ak}vPor5=^kILM8#mnZuy z({rZ1kMilVqrkh<>xLA=N{~VMVAc(gVAcUW2G7n0*<6|S&IXlUL;`zZmuJav!q^(% z^$N9r+C<~>JMUIZ8D9;u<_f6u^Q#T&S%~T0~%u6nZq46a6&4a0wJVg zi&-Ttbg4y5_kH2r|A4g>GP=3#YV&qEwwU#L>}vZS3@YJ|ZG{y_7x%(Sq)9^^Co(yHm*F>H=)=-``)Xs)O%5M;b=KkD0 z8D_FVl*eN+Iv$2MS2H{0$>~^Hh)VHRH6gH`iQr%_kzVR)Wn<%W-lLYT&1ls}FD;wO z=!{Ot>41@-h@X&tlGhEB_?BW+4Ws$(&8Yn>6PtG$TKSwdW4@@>{0A;q(IH+tTG`vFgIfV(Mpla=4;K@E(#*z(qOP?VHDc>3mlO09`^LQFWC$2V zva=OMvI2|}A^e`>z~i^X%i{?>efJAdA_Vpjo!U8^ep67>mVYBNPM4wfu?msbg2q$r zLz*%nLO9L4;Ha~r%%J!w3@u`FOD6XT_)B>&O0AISl0S-b_IBJEb-P;eKUl&%&+gtI+M9deZun!gur=zS8#7-aUrf% zZw;q7366i`zA48-YkoT zAC9w110qDV>v^sGQT##!ZtKnDk%r3ceAN+9?iEqhm2G}H(P`~7l{Us!Zq>A>L)|e`i-0 z8mL5ME7uKml9mNy_Lx~#cr$eb4CYufa4)0xpytxc%p*HXMU?OcG!<}4pqCPEI1a{Z z^IeR_BpKC#;XB~x6c$)ZNU4jTrUXG_oQxLGUX@YB)urU}`7C?P+AP6luWY|K#VtkM z42?tAc5H_O6h~!Kgv3}1;d+mU&uy8ST^JQCZVt(ukVP13ve=xG_;;$(42oH)=h}T_ zXxpgiA^3Uo42xH&Az(}+KxO1~OH^nQ`ThAO+fQUgSI_>5>7yD>?vXEG09Mmmd!}5O zVSvAPW0Tofu9eozkyshY!fIo)MZ4=2wIyyM#RYs$A8MfWx)~W?k>+dICv!6xGy`RBvU9# z&fD(ge(zmaw3mJf86?m~*{b2l>c7+Pd%d(^6n3_L0H=uMEOX-OOBs(32hlD%-^=Pz z=P#@md|~H#b0jFDbtUDKi5HnBAB!)JYB;4jGCnd|?h=j`hYt>XvS2eY(D-xILkf>o zaH9C=5QFaG-Ic+=>;=jX#b&wmyE`44e_4NF0Wt5o#~kEljaHWPJY2QeIcc271SFCY z{OMH=P*d`Y#wdg_DQ|(#+8fSMzX<*GipK^nb@h@!#`0VH6^AM1G^Ilbr!b~*<}-ct zGZ`(|E>Au5m)LWCTbqtpk&kkuR-kWQ$bYMl8;z#k$ z69|m|yp$z-+N_mJd)kPdoHXA32AA~tqp_MKYGE1Hi_In1f^zu1a|rhD#+#5_KDw1K z+UV7@b(j zdZ8ltCwc;!;LiH_2m85!L&hzp!(uY(lGba|4={D45G#||z43RtWPa%O!6jz9jyOFE zUstFWoA;S7^VJb9Vw#1TCoczUsBj_D9-9E=G?z@~V$EZ{u_6H#R{B&D?w$wTZ4XH5 zDy}?&AEVGVb+A*d;WdB;!oM!>`zmqq!5DQin?L}XL)vwsisF2|F8`f6YU-?fLx6Nq zf`ZwsGW0_f;geOJC|9XBf1Ejh26CB*spzb@Szr@&u?2G3`KTNMZOyzhQg26L|_S>93@JIzpulwszOa!$G95 zw3nykWjf_$r=3Ug$^Y~<#!K7#^Je9whL>i|-RSRaBcFK+DBUItFB<=;x=Kge^K-f%BWqT$S=y4>VX}3X4 z^K?n}ni&b{U_)#?&T4P*_b+X0`FfYOv-)~Lhj{SDNfBK~k^X3rY9qtK)Xr|v4aRr* zt8*46Kn_edyp3zfM3HSUspArQ>O7*mdD3|Hm|=6UdijL;vO~#|pdo))y|+j%86A^l ze)#jJL=RV2F8Hw^TIzscfrV;2e43n17u%S5401iXr;O0hNPQb}{z{{qT%^)>(37ol z9H|0_^rCO&M-ZZS0y`VFa8%uqrAkUrpK6}Au1X5=thq<*w;9xLtNC|Q7Vi&sHZNg2 z>n1;~c^^3n5@b*8X-RB$Fv7|a2qD<>l7`Ch6w4>{H9UZ}tTi**Yp^CpMtp_h2h9Q- z8@BXh-E-ErITi2&XsVoou5Mv{3%5d=FAFl0a@&P8IJmiPEIftF@>8bu@aYq+a0H}YhN8Ih6exd#gpKUJ zu&(ZlM2`?R;^(~QLI6|BLOk>QO`qtlyqvaxEw0-9xxU?P0YL-F&Bt^Iiwt@F$-50AoWW9#Ua%TS0_8a9(YC`xF2|&I)p!_m+BS!n;#|@ zu1LVARr?dj2Qtq*+5{FDe%5{wZeZXI{tq+_`~Q-rVPR$c?=;PK(w=Biu4KQ2`s?Gc zr3}(}`0%i*nppq5LPP!n_pWp@A4Bgi!r#T!QUpqAm}2t{V0!yj1oY$d%u?>M$;|AB zU-+)GHz_Cq;_TFb{dI@*0D~6y30#ksFAf0ENKR6kXK(*0K>zcGaI~NPs}Cz}3|F2h zo#WG*@YA%Xja|V1?O%~`r0-b3*XNxR`FEj(Lk5BM{pGJ-O&3xTSMXZI5bJ<(QcN#m zt6#Ut;+;YPUoVu1{a@ZM?+>@>G=$i6qS^Xm`elx&S1`C~a6dx*`byruWUXc%gkvyv0`!{`}WoTtf;?>+A} ztev(xcK&&$tYssiCb{p&^{e0{{dLH>WpX?K9#nh1QMk67J(1m&N~tu*&;xL{!Ed(^ z&Fk_fVhVcPrBdBKoD;szTm4XKfoK}~dHwpT(Zdn%m}MTnzHe>B6W-@~)ZqabzJF-U zOXZph60C7y!W+9RopL1WLft9cG&~hH%s;%3JE0U0Iy6gLjaD?-4>#^Y%Q{Mr55O%A zaW9;8ElBNWpJ;r-P^}iO>X#)xRke)gJ!^~hW7f6&Z98V5lcqZ%Zcn#%j<}EAPy4Vk zr`Pd$={ZpB{JTTdr=c}E<4i$@tAI&8$U#}_r>0!uEo2^KzRvQPc~ zmyfB6{#Exj{g>a%VNpx#W8zoQe14>zqvPwWB^L6jRVd?DwV=8Mc`MA;3$u3O-QPQk z>fW+lalMYG@T)$c!PX}Lxas|TnSI>tu(!!^^e?BYyOhhPJ?|WG?eYC#Yv*#R@Wabe zK{eu$A_n=#5F3PH(~OwlQnjUCQ+XrRV3P^b{)I{z#UX3B;EhkyOk13gxWe`Z)p@iy z@3KRGYPg=B-3rA*nA1nD2v%VVSqw3)0AS;Z>Hq;uSkeuuIHMcgS3S}Us(9tiAky!< z^Rb5dkJ+b%riD3FX~HibwiezfwJ9A0xQraD>`q=dI{{TznP52ZgbdfVlT0_v9B7sM zoh$L0aV<5%0Tb2L%Xh%UBl=m1ans?^IoJw8eF4+b@q62h#9K1G@I*#)+hZHbAu>Iz#ulWYR122!pw-t5;Q5 z2S+1B;~=;2=+^hx`B@$nm31}MKN>3h`9ASbox}Vh$oeAxwoVwdT~fi)=4z_*a(92f zB(TY8NBpGoLqN$J)^yU572b5T=W8crw!gSAhid6stl800p+`EUWDA7SAyy+&^El`- zB(`#?fHln|bH0q<_ytiC?y2PBtEJ(8%(iKwllWRH>z@w!w$enFER8&G>!vZUCVn(O z-x8{0O=U!2Doh^zhV);yT`n^6YV#p$(#Yl0zX_yLU~OLR)kn6_!n1t)X#Hf5m#XEM zC>yKK`ei{VP}bJ>n?R-#3$n^4K~b!TDqa;5PA_}Vapz@piZQCPjKR!QNN#yfo_2Ge zH~Jvc%P#oRi6iDxem=E7lBdF~#jEOXUGoFYiVf}RYy6RSp327;H7}~_y->c1fl`=P zWg^)Y&Kg^bWp(DrQ*41&zTfA@igsxPvzty6BM(i9`UrOF(HMIUXk2-C#57mN$x$k# z|E2(JNm>1x_3;bsIxa?{v*sTeroIu-7XP>%VM`;!x*YPqtXiSfX1}9iw3dDBid0%1 zYHoY(bIj0RJ8OkQVDI26B-r6AS#9>#`sj<; zWLK!#DK)ttcW3RmGp{|sNUq{$BqF0-eEA8+$#cQ7Uy`&<`P(cD<0{3E-jv}=2r{o? z*l|r_rk+OdE!mj2(}M~g#(Z@c*08h<`)FxsY9SCS{w4{Y8$nn%Qz_c;3b#w8$Niu= zy1o8qT$$?Gv(reIAk=_%3&S1lEJ!0`r&L(FvUJdERj?@OYVo55rx~M1djhB@FHBwF z1egxL7o-V-CpJftQS7Z8vPOBW3NX4&CoJ4b|I{?MEry$(*H%J>a(kr68qT0F$)n7g z_Tsl|F-@MF($PRxb8^fqPB&0*bjqB>B{rx_`FwZM0AC&%Aa)%AcY3=`1S33b1h1-E z5<&_GP9l?&TB8A$ve|8$T!>;duBoSbWW-z}==p$7p*doR)n}F;O=5dC44dBp$=c`? zKN-H$$7V2+ zY#(pq$joT@-ucGIU7qmnKpB`)Nzo#bK(XxCkc;@cP5Rd(=E!bHxkcjEmXY>QBE{sg zk%6x_oJV$-5!hC@&nApam10c@RtYZ;Y}-0d0o&tK=oM4Ut#7L&G&2PF29i1w|nLB*?F8q#>tb&P_trpQ(vBdzv&JQ z-B`Cmzm0H zn8*$`cBI>^2-}S^o|I*h4#qE5pW~GF2$fCXt{6c1w=|6c-e!STu7OQS(|TVt>wZTI zCjd46f>bWDi3i?k(qCiYmygBwLOyyGmIzPfUcNgxyaK`KP&^?sfi27)o#Vmn4!Ih% zc!%5fCLZARmVLEw=lb;bZBT{3gWY%(OYwfi z=YP-IV%#-Nmyc^MdgjYFURt?nWL65ES;hGEI`4eH9#b$M%IKS8&T^F2?zHdjj;;87 zI5fc>N|ygjqR?0Me|$Er71R7Sd*G@vb#o^<(${5LW(n3Y=HqAKHMb+DBqW#Vx`mIA z+u>fAd%zR;OBPVI9iN!ujwLzYV*I7MuB{+gT_40@Hds9DnvYNVb*=qKxyc%|5! z&`7^qWMkw(D5AA5w!C*o)Vj;wg)#mFtVX+C+3zw*(C0FT={3CpE@CS6P5Eiy=kZ&4(LSr2c1Cippmi(>j9s53;E$Sk3t zJJV|EDSfX-U1Jxtf$HhS!CLWr#WgWMTiC5E_rPjvLc?-|Y?~9SkP_80a{^DI26pn zYeb9VVT!O7KMQcO!07fhXKf0YUE~gL4u4$~d?;qfFeqUCuF%RbbSPq6oQ`I+9%y0w zq9*{#bzzA`pnziX)t`yo&(!s9r99D&F)h+EX+19!{?LCH9nO!;0sP7x>(rPc>TAAT z63zP^YFFRWxD+w3Sk^ihg%_1pZco!+AV+j6dBw1N#W3N+Mx0SI;$mgH3NVzX3pBEU z2{&j??A`hRY+F5i&5QBBZrH6t-DQ}OjOCYeiOoJuHIzJB)6^ zU^OVzf#fn$J&_)0^6!t@+UCb`3YUukU#JLA+U_$uk(+wvd6&L>mu|^d3txGI{F^@e zN2iB;5eJ;qxyPMzC?}`!9zKRb@(@$_CtcUmwj;1q3;kH;oxwP1rNsx6q)(u_iGgBE?sps1S8fc ziK&~%@kuvUAw(I*Pl!Kdky{DD0FyjR*@^41XJhOLB8@P1F~iS&dNAlk=f{vFrum{ z?60GlaP3r~{UH4zZ1MW_E_-{m>l`T+W_ z#)VDwmxjYUS!fNrcHoYEf#_OSmh^vXbw~)Mgoo*F8v#!GN}IU1_V!09JrffhVx`_% z=(x+86I0RE`;*pT_OfikTeMB4$Z|2>0W=p*(*&0N_=yX+>X%27YbKbud5m}7o!~XW z!z5e#z?KW~f9K*jv)1m#k6zvIl$!Xf!j(*Fis!}(Z(Tumu*FOYcj-aC`V$J4|Ig}GC(zj_`U^x(jZB&Zk8w7-)UL+6EQ|5WLkuy9fBh3w5 z(!pHhCKj=IRbu`nb+EZrW^ilO%yo;Hx~c0adu^I~TR(KDUkCcUpSQmGC;f?EMu1gO zm`;l$Hyf=ducqaZtu&xU=Lrs&3mnXinLaFe-BF(Cm!BZTRH4N_BNq#JFKJ|0?5g9gQhBSOt#oYYwn0nd&Rj$)qU!1UTt?{8|pVSQew#1)a+pB`Q#k zc_t0ET#Kv5AF>-# zV+#IrA+r0Ra0UXM1h2dX_^DV~xhHCi?&(+cM-zRrOG!P zM5v`DabURy>Kh^vjmaRaLVJFvdv?MO&6*6jJbc?wyjV4GUm+joxL}Od>49065Sf&>3IM)Cm$aMUfCCkJ%4?%-E)#$2y^Y!k{pCsz+TGQoqPJ)FH z{-fLWPL2H#X0AOi72YSmrn38p=L4k~_k7-H{{{sNUS0qNtUNDrK;5V3{=&x3LmLJB zw14-bgS!bZ?A!;tS7C?zhUR(7VFaYOZ+N%YPesph2wt4NN}u`>v59%~#DhAtzAMCt z5e%=J@(~;OeUt&`z8X5OCcZZH7X1$Y#01vb5eNtlbRa3vxWtI<;k^3raJ}ah%Nk&5dleeT6?C@2j;&Zmp&*d*2KdTKscLybI>D3CxSt{YHpwcJjEH$bNhiCBv1?sFyW& zRK<<PW_oCYJv9Zb7>gg!aASd9Lz>EKby*@Cat^s))Y!ZwbVqL6LT zTB11q-bT!g%nJW3Q-{}sMF>}e(w|{pbUbd)cl=zV>IF}pVey&z*)j9e{>tg=#FzH0 zD@|r$!5kM`bQP-Hh|Ki3>QRpNj`;+F@C~z6v!bJgvB^p)OGJQ-h;hPyUCKzOs3V3* z;3_-+ElZ2aEF$w1@F-y)p$mgix311O-g1(|+N#gHd(Va*>k`qFfnV^9+9)%Y!@h{b z#wnhw_IY#QgV+bIzV%|l}CdRdmiZ!L+@-LBBfcr2wJv$ni%cU?6s^^?X=E#RtH zGhPV2b{)gBd7L`n*8L5m&~#z&vIV8rEo(Qf*~F>rB2pwS?F8=$^Inl7e58wK#}(pV zM2MM}q?~({=JYzcI~A4Kp|z)Cv_gF0>f5_*P-nFo zBD&o<3-%FtfB`;X+|aK_jbo19cU+?td`6Eg3)V)ZG(Ddg<--UGRl-+A;Q2=6ImB{A zw1g$O0@PepX7;rC`H2Q|y*XXyn%teaX209k5@Zf!g(Mtj!pW=2pVLyG*MaAWtOaY< z;9Y!@Fq`8Oe%~85>$4b!r-G5?inAXv^>gmm zfH;}@t~%77@y;2*Pb_sw|JDdU8d%!I2|@nsb(%6k!pBBVNT+`i#__kiYVh&>2{G^o zi&Oj-*?wM`LcGF!*N2BlqNyMLq=GoUv%xInv;K`7NBvfGMRT&*9IJ|ujqbgg z@0L1GYwdsuvzleD6jD&+yS40JqLoT?LK$Gvq?Bi!CW>z)yFM3pt4c$+$I$%hM;oiw zY`7~?9IFWnJ7VXOoAKJYh@3-$s^f?FYrt;DH}S5qgWSb!g~#M`1zf(GUQh1GX?;bq zP0z?HB`(4G7sI}nTec3{K!@l3?k6Ej$Gm3q_}6iiW-g(CGt|zo^`YT5$WDWYAO7{z zOF%@(!bV6=KTC-`YLs2yc4o5VHRsHgqxmiO^XKf{v1qZING=ZiP`1xIK5ShV*MKCj`94;$qW2f+>1g(o=l89p(hHr1J!p}#} zZknICXi9zNNbR4YzBT02pv@(09X<^J^~iyh zHAXd3%?Jo%*35($=56EeU?qT@*-KY1F^W21HE_Kq;zZNR!m;s%)Kopxm6K-C$e|)G zM%f9s-4nKsj!=cl5SIcl@%pFzPnbaG^RfbPX0ED zRC}Q%2fZ8KWUNBQj6uZ{q=9FCY5Y?Rv^_+!9QFwyC4WoQV0cUajiIYdl-YFY3K&+u zf3V^|;q7^|Xbb$PCy!(h7fezx${_C%-7tXrsJaZQZZe^M*MU{mR1LcJf2MMDm z+0~tMsTGo9j1re<@9SeUx7np{ah;X<*6Oz6nQlXbXxc4fWsPU2sm==OsLlq`(cInx zWtB#^e<60I|6(o^^ZV7_)h>Hr=z$>G*0!T|;O0>o`F=&umqbN>K+8OlEiAg{ zrJ>`r(pO#~vZxa6&AOXfL?EZDydcC?ULlbp|Lwc>TNYIc!#s;hRie2qZN7!y?2AGb z>@2wmL0Lg5!RsKj>xQ+o;{S8OQdxj^msgxqGOfTR_3!pJ@|h812Q)TuTO}3P!zo{h z$o}eI#ghLnR6}7`B8)r4rM4D*;cDW@0z21dWB))jc5yG1wt9NI|9h2=`c!I1#l^d? z!_rfM786cd`=mVz-WqdlQdUe(yrdKtkVZ_KG6!$MU+9+O{N0mdwxUv zq+v)1zY>l6y58K(4pf+0%CK9Uw6^;Y#JA-s-Y5yUHm^T!JQvamUahk}PYNV9(#`2=}JW^gZrCrPBiO7ju&<)D|=r(go`VlG4@CY6A>xsx9<{n(7tg_wr z-)6n>a6UFdLV8a5)N+sKfR&W+>jv?phU zW#jNrF^7azNM_^pd(nQ~{``;G32BH_o-7ukZQw-^ybJ_nG_NSr>=AKOkc`YO0=Q4b zz?LE=rkOmarz8Nyi+5du<;y6eSyM@pcJ?el&+Q!GDLYz6?fM+WtxY8iiDQqNMkKzcq(%j@KtP zM__a?T%FDI8OkgRrZzL5P#`1@4L71FzxXOhMl)l}a;t&1iT=JEVDeuFNP zKPJ~z(d2Sw?@?1LRouYz>w=e_Q&*;4K7Ul+R>FO`A@v*~i!MduaMPsRuMehE^i#;w z*!xjYn7~%iS0Ne?eON`bABpouu1sa9bBJrv_aW}$uR?lBpI9p5uO@wYf{?CDYz-S-89w?Z_a6F4d*v3jKxKrcn6Q8MablAirkbg+}DMIBypQ1jNGu$4Dyr5r&qQJm+ zWA|2R9AwGN1p-t6hd=Ojpr9ly$$Pd^&Kz}`5WiATY405w62FNTZASE1b=GL$rFe*a z7>R5;;WUn&Tso(JwkGfe*G%|jv|QvzadaW|YDVG0)>+}(^tv@$07Rm|X&<2x4;qbO zu#y~q`+?Q^gx8;+#nFEygh|)y#e7bF{Q8Axtg3||wFc{RK>1c-e6@Q$-a4600LvTa z-3F!*95xE7P+T+$qEP%E$0x5JLV>l?aqh7ZOfeBKTet0W1<(t5WxQWVqN_~sKJTm} z7~!KPK18NQfu?E>cPB531*;In_t`CPPO=Njw|*U^4A{?nHJSf6^d=dePq6DWLcg_o z$bXVL@2jmo0JQhsLd-v4eq4jmvYSf7_OT-bR=bER4b(ZfMo8};_yh8a@gBmo_AyNURkVOhhr$uis@k(55ExnPWBa|KUlOCnFtI5dOzOGV^s(? zfS-sv_d!U>%<}8|?Ezc=2XCI;%y3z7Q|-mu93j!J4%14FDdKpk$0`1!Q`YT?^Z?y3zcIS*YM>Sk-Di96oiCHv5g(wf=v0idyrp6Vj<$Bz3mS%pS=QQYS;M8C(()5MyY4$CT5kEv6cr;}A;RO9&y_*#$ zIrUGpxE9(_Xu(Ts>)>m{kb#AdLQA&9)bQLO4&=zSBIC%&B%(B(?TKiXEn{M0qU)VC z%49_f(-4)Qzedq`G8e>Hm2G#TTPv#1`nS$pBs0Apoh2uP21QbFTIVuiZG{#N|IP(( zty!kB0||rcEmPeLL!pWaB~-*#O3{Ua>gwG)#TD7H6S*S`e49#t$QmH4%4+F~lp{wD z6<6^Zw_#PxFmPB=JeXN2*Q#0t7DLbJ>iCpeaV(iiU^yplmW|80HEE}_mQt3MBgiykugC3-9r%|J{d4(@TzR9xP#B|7@wKV3p4wb z-=B(T>1s(b>_W#?QM$tL0$+R8i$;xn6$a~|3T4R@e|CYDl*3H?;t2@O9;Ma^h%8Wg zHzZ&c)nF%h-&#wo#gxUP^X+>&$}XsJv%H39roWA&#+sgWNnFI8zaY^G;R8Vj;5E^* zBmZL0p0$JWz_0_!sb(t(4iohAhAMkEM#nY>c?);Qi%CssBG%5|Q^u+?BsyuJ1Ozsf z9D@`$Xp+^;&IcZhGRQqnXz#b0^=ClJ*$hN!1P1xeS_abOlcJk6Oy{)N8r^j|q4oxi zjl49NJ?&VzG1!Ne%$Z7hDvg-=`zcNQci*Dds42`9c- zdS@3BI9z(@vr}_z0_E@9B(xs%L3cy=8<0;Py%?{=tTx~@Y5%40(%GZY3mVAGdHU$9 z8@q^he(n3UFqlfd!;d2t?f+2;XAOIx}qU(e|Pk0IwH-h#C-kN%=Z4^c8S>$vX<2|!}r z4C)*j)#J+0GCl`6A(!xCAX!_-lWt;rT-s>`EMSRkY1_FvLCPU%d+kw7^v(0S;>t?H z=4vn}3$)jNN6GX`9(~@=f;1ysmV%X(+*?HoyvD?)R6e7i{;VYsJ+QFz{+u&y3_Z79 z=zhuzKSe7T#IRN1zda3VJ{5LLQK-#@5|;>8L449RyV3QEpwHGG*#ESt$tp8*c&c__ z1}N?eZJozz%!{6W`PH)kI@x2p=YO=f-1dcQJoykZgjdJWT~xJ!!;m0WI#0Ro6~Az< z6=f78=R7nL_ZQGBqaPPb)&b$}{@x5h^QeVEA8QtQtdDBniUU4HBxo<`gyQ2|IKLP* z?c->3mn0s_8gJyJ5i8?*ZMKDlOHC6#{Y3UF*>jcrqxsxzQmp^>keXW@xZjj5BHcK3qRUGn%dIl#)M(vSQfK!b4 zPFmbB|2Q@}Am+W-)~jEkIbmO}@P>mmedx8;rJLf%bE7r?^ZphBNVvo{f%5dBra}xj z*}Spw0=G%PbcVs!i_Z)u+YC$$I!U!koJWDeZjM*9VhagM{9%8^yjp=)RO|r_JEH~t zi~D>oC?n`DC+wH;-$Eku)Xm?{Zc^<;C`5><5EH{W8A91W9|!72a;I7IitQE;mqAE9 zd6)xD+#3FdPjBDepRx}xVR<@vK~OigrAJBW<$o!kL6n|E$*S9A{*Dx1YthXv^tZZ`(5&4#1Q>{4MauAc zR-W|EsV^v$yz5u?x1#$IS*5nI*F{SD%SZ-BvRMq4hVlOfhfSwJcA*bH|F$>{J%}CT z92#+x;Sl$W9iBAzzI<1>-WQ+KKU`XfIru$Vb*#RYJ@K!TWyCHYI`Aolo_4FaOVjJh zgxc_<^78K%%{K&rm6VnY;@JX z(0UFK>1XYO1V&z7H{Rgsi9@B?#G(@sZNwNb&;9PDu!13x9|b(AECcCo#4JuVuvEm6xhZ+&cJf6qDPTPiC%wR!Ki zNkwdIs&*~c--|Np)6tvI`gnFY}$7+_FtkMYuTFk3=I+*!;k9X)5dnlC&ZUOuuq<$txNx z&kG)K6~~#9=e1JnT(0BjdZzvuo+?b& zdlcu5seOumvCus$T|Z!pr)D`f+q7E~?zc}Whx=ailbkgFaNx5H2E*8bI1fIy0Fw=i zGGJP-RJZKR(yRJv6~+!!%u5%}0YbOWCS^GLhhd*oaAH|Bn29VZLM#(KCnKO?=Z|PJ z{}d;qxPf{vtS`+gIwW}!v^gM%i5opRg_98(6E7pO!U+%*B|CZe6CoCSc)@@NL3Rcd z5&+l1tlNlA#yF-_`-esc^=H#+1~TP|p)OIGoFu4@-5wg}1yZk|ZS`;Pmh~2`#_bGl z1X*<=C&LKyks$oRSTNK|dYxlCw-)2Xr4E<6NK3tNrwH&!EaEB729fT)Kcc#hhQIQ@ zr0*e zp+uQ0n>Uyat*>#T9r1ml>*t!{%Hr#w?pt%XKzCM8kj@Y$@yT}=aL>q7G38ojb~LEY zC1cs!7SL>yx$tY){ooYAh97pRVTPz8!SI%f(_rEd5FEckLLj5S2H(%=1N0R%(ri_h zscrn1`Hx*1vk5_Q+W-xTEFz?Jf5?`uhNE6cO%}!nbDGwHkmnP5m{KRZac|~WJksJd zIfBqRPcErKa_GF_jBNj4`AiyHMyb6h5Yh|fVo<@}T#)cccVin)RdmmM zIUsgKz`I2X&k zT0{#gcTCG-EYyBI5vMR@t5_ZFfoaewUNq*;ZiG3%R@0zS)A8SieP*ZkF>yCfvt;u* zC+YdzO27;>d_{G)Qw(sot^MKGu4Gl)=XEhxj5Q*E<^ge_T@*h`63|AHL$D4p5kt}7Qm?+M)$fKpzTkReY5O@ z%YnJd0`|HY>_dn9SwFvNQ#Hcl;upA(D97vsh;sC65fT7_SH%6DF&xJNM~( zHj(nS=dJiq`Uf$Q;^4T;HHk2{mfu-jV+Iy~%5xG%sox9d@3stOW_XUv?t5I^rDk{{ zWW4h%Db`zZLfH5ehJAf=C6%~2*UJubwA!tZoup<^Z%FwR4#@ZvC_0QjTFZ}5wMveo zh~|20DU)yr7Nc36ZHgp0Im|_!y&36IR^=pr9c~U&&Fzca|4PztC1t*p%Vs0H(p8vA zK_9#C;piwk=F1fllNhAM&c`oW<_^?n% zw^iD$?{n49FP5+1bpY)RrjOZ?cYFe$t79y}7({jo&shx$f$DXJiDxHYa;M>ywKY3y zi*ov#BGryhwD>p|H|Y2bGR@-rWt8NU&l(%r8CaAgV^K?}gT0G78OedU$z$e@wU7F(P7-`5=LmiN0hUZU;D0nQ!RXm*k?H~ax~zTgJo;&atE z*_o@~7(rongY56~TN})0stQ>sy7zvJ3H&UD_J+qkY&xJb%+^ZWcsP8hE4jczy z@@xH@j)4Id!E4Z;rLgR{2-gl3M%x4$ZGM?j7U$PIGI`>oaZ)BMfkQ0;s7CVA zTbCjz6&?014owu~=93;TM>&!Sr3b!g3a2j>r$z#hx)u_Yi$D5DOpCCu zgPRk&{UQK4E?A!iYm7x2Ust_-iJK6sJE96yyqN!TT(0U{4 z^?h|3r`^kTvg|ygo4)W<@_B?#yx1H6kLKX?VI!>&eT^wX`zLus+c8&;WZUk^os^Z8 zkP)Zelu|cbEVkQ|xu~1#sSeY?(ib6N!${g9yn28&5kV#d z@;$ko5DRhbJ-Z+@62UqoL1uy`f;s_B7!`sn{94jw#6LuPexq==fPaYY{6>%tL+_TN zMrZ1H4MMvRy0j66{#6<=SkENCfQF2NcVZ)KqcojyY~yRgV+isj9x>T0)b?@BmW+$E zhJr?o$Phxyhm~HWLMhidY4B@O8VKrws?alGRwUEEt;Ui>x+hC$8sl%_!^C5Qz>dLEj2gX-!YmslJAov%mKYXStzj!+Z`vy$1CJVo_OX#b zi5JcT`13c!H7WK3iyGmdl`*v-=T{$%9dfey0XD>)3aCT>16UI=^t;5f=S%VCa-yR^ zAK#xsx4?$MUB`u{NqHc|vNU3POk`37{mcO&>a?!uuUP-xqQVYFiMpne1H?Fo9q7Dt z*iBtSaOi&Hvyk3BvvC}VKFx%bxl#>0E-LbBTYk}OM9xt-8-oSiB zQ0Ep;ZAw>_r_o3~dIjFBX`7_ZIlaJQ;$?w$*S@?n1wd>DB{nHKvtpxMKgW8S>dhi^ zum*%ZPp^W@lC=>XigdrXIW3CxO+WaicayQV>2r|POC36zRD^75v~wz2c`JD>vD#l; zsLT5lpxW+C+^G|>gZ7rBNL#bSS^Rzuv>^GI0}S8PsIASYP&akb)nH8sy5Z$hbMMLs z-$l_H^k?*QT`WEj<)*~N8kd~QYgKHna-B=z(cxz`-k{EPN^EZ8Cog=byu(H26HE|Q z_7jYBMd~xHh^AXqRO(Zt_?H1ueDgt`pHJne0p_e#`fQ=?E7?dkUD#pcuT!Cpy0+{B zZhkCWAq8h5&%kKj+7tbx3&oY4mfhOBJ@87p#yz+N_grE7)cFQy_bREO&}bWBRgBsy zfhnA~_Iw~4X@Ma_kZK>5>fT^QDq-F@86itv?&3aI)D*DFirRewNCrANBRsC&_JmV> zRuOqY5?K3^th8o$&)fujT5I%qioRbUL?U30_009^2A0@FT{@q0mL5^m#F;jcw#jm0 zPJ#XLlcc~q>nIxF>!Aue(F1fITWM6H29Vwj5IaY-)>hC5*l#EzKsq5tPH&?rrvuPe zSBMXPNQjUUf?4?OSu`Svk%cBDDeeWe72enq?F?>c{FPZ}-U&wE+pX%SB+Z$Uw$ z?0a7Gpu%YtPxlWcG15-o_CrgEdn5`h8>tEbn7qY7)%z#t!cr?4uh9C)k+Rz)a&AeP z7GMM*_*%e2bcx|e$RGEu2qqzavjHjGJ)!`(mSXfM`gX1pZb0l)y-FiG57$P&Xx`+< z+N5%tO|(dOGq`DDa4+pOkU?ge;o`f+DE6=oK9Ine#`9Lcg8T)5uZ(K2f#*3qL#b9` z0J|eZ9<)3Q>$N`c?zA{R+{pBm7@CGN86PGGd|OV_ldrtY7Z#ZyVsCZZ=F~d?C)`F*=d4>I!;?#k6!0DmJEBD2Aq| zE9^`kD4}!lQmngWQ3RgIHs4=o^BiapsPu!nrXGfm1wUu9?rWL%qJQXKy?ABrdLmT& zM9x|D_*A}`=uJ=MSmwT&7}=cRV7BTau%Rx0*ZY1b>k!sO5o6L%p3ZE3h@dg9A^r5+ zNOU8@gsYSpD??WF#*Sno{l!tMEI0Z&?M+cWNk757iQBNFE5#@Kwb z51*;48nuy<%?%VJ-z#Os{=%9@Wr#CX>t*mDJCbQo(XinLx&O+r1XK}~Uf|?OA2Y0m zjvk>563LRabHgdQ{OHjav#5ryxyz~^)E?EGER-m+upO^xntp5_nuU?k!6Q{|N0i(k45tcvq9kb4K zFZKSMnel#quZ-IE@_yeU!rF}-AH4K(X=P?{u3xlc_5NJliC*-s`f~gH+=N1v7=bVM z>&Nc=9K04j&D4JlqYLT6WB(itH~0F9vy6n@xE--C_8KAmz5yREsRm%zmwKSpX96Q% zhkvl5YVB1!u#RzIdH%%w!QVg=ez}hJSHHN>ogK;&fNlIZNo6H@GZ@9C11dS?9jb2y zJJwzAix?yK5POaB?_L|zwB>5$$?>&453p-%qks}HFwP&T@&!C@77ZllRP&es6P$F| zlwI!i+C#-pi-HCH&;bfBeBt93&OmyAD7-60UB6AV#|N)fTio_?ub^Ib`OuofcpR1} z=WYhqS#Qfv6Pr4^aeV-Kn&LP`wYr2DL3xs@`+iF|vHp^5_-=pP^D6JH_CC95m2uEo zd$X<~BE<2b71emL{w)_C))EHETgr1x&$4DsWN2bMp{F2kP=hq>?C?FT8n1b>U2J+9 zl4G0`A!#xZ!%@NlXe%8+hFti(vm=T$CbLtRBTY9IhL3@pIH3T;aUsD7Kp)^&;8CO(OCiCEJDGnk3QL-lN~Xg-&wye*3ZnL1_ApBWzoqF%B4 zDSREk@(+q_{X(|$o!#!KIm4_3Hx}Q|)002`<4*14MqcZ->mM*CmPJ@oOCcfK#A|dx zCKM|whcqGRQ^2FBur&OSqS9D=^g155F-n3EAgL-VVuC4=NWZf7L-?S!Fp&Tlg*vp5 z)3f4y#9Fu~ySrqBP>W^|!@%<%kU%-Fn;cP%S+&%I{9~nA5U0Eo-B}~C8pb$xtAtgre4OHJI7nHg*Z0@jQC*x7_Zzr3 z-GRhlHm^sgw!FLUzGJ;%gzJz_np;^`eiUHUntt{?w$3AW*Cc$6&~1)4cG3g)g0ITpR2^?Yj?bx z%+8c8gE+j$;oY;f_foU3g~TV_o+eN>v>}Tu;G0|r*W9Ib+up{@B%|{P%8rj5@SuJ- zE$yB}@W*IkPE%lY_o5q(245G1z={RP{kzt?4FnJVk&4Z7g*<-j!-%zf1nps=g7~Q* z87O*0FT{2XHDXOgg{Y@Bi^%M-{#0OxijYi>xnTth;Bs~Lcx(FdM^i|63DRX{KnI)C zxo~e#d~oVGZ;I1iivqV$JCS zXqkL5@nL}8!Bjag2#kk$q}SQic(}xgVPX^f@s~sfRR8u*t4JBD=@le|G>6WzFYZfH zwN?UGLOsw7G!v96<1j!f5cn`6Q!%KG47K|Or=S`jA!OcyDvKsE+0sW_kErZHRGoxB;-U&GCAFxm_~F^)^woyj@b>p7AQX)94MrKRC%{ zS{w0y9_#F`4azNfO|I96W@`*bU8^An%k7bzCo=cR^h7q3}y`u6WG+DI6i z;?(Ff63+W9#pmJQ#ToZ_r3q)*}XGUqvczrW(@ex!Ngw`|>wR_8BM^aNRz7{Y;Cl5Lqv>vGk=>i()v zTGqJy-Dawa9Q!hi8{D~DV!Gn1+6HBFum*~nqD?i&(y2y3YbQDcdL6Lg;UY8wKN`|V z7-VUA%r`j)1De;vUZ+4LUiX8k6_^i zvmeOcH9<4VHK8`jRRIj>rlVx({YXVI24cxB_nuk-90!;cq`K{Rk(0#xF9M^&NVX1`D8Y#i* zMhZX6wdQ(iK3dpD`XII9?R&(8`ZP8Z@9*Cr#7FI1gd3W9_7S8D4Gr%R?t8?EE;4>2 zScA-|XP_M~xBP^p*x=#dm=tJWgAs$%S<6N{ua;*l)tL?Zn}0=U0+avM1uqdpkb0G$ z$B-i?UdOM7>gv~33Ef9%pl#BwICnNT{I2hE&l-eF3P6+6p#F!SpJ>B zpcu?$G7sTx`H9@6Efn_*jTKl4a(^ujZ6g2F_Cfm*ORPHq^2Yk9vn1Nn{khUu7vENw zQooHg%lx8=Pwk^dPz<-$HeL|vgxW-OhulQ8hukFS(8db<2lb5~Fu*&6kn!~%2CNdR z`c8dE+flcVi=g@$39I@^xF6svw7IM6WIxPHK=Udplo7d7MS7185Z)5T*f9jK>Z=N% z1P3Q5Uk#h6K$v!1D#9tHJY|X2yx$K3FkB0W643~(QUp%|MD7mLl)!LRwk)iJP**7+ z%vVeTOkK=FUm>xD1VQzb)URQ|G}y7|Qx760xpyS6zNn=(J`Jc;!m(1>rMU(Mq!s8F zwmpRXEpGu={Grr)vywCa;E1*gBr!Jueb0($-glW`=F!52mR)^OGZ|r1{Ut;rE&U^b zK%QFiC6Z?awDD|={93s!PZRz0U=-K{i&=e~>#Px0emt+nyF{9lBWd_G36J+x@F`N4 zPjTed08A7=8ZP~h+B(6k=&T$`lOlT992wv7cff$TTuc!+yny}VSqQ$mjmXW5kvAsT z{LnJH;OMt7&`xhg9@h7zA_i7=7GWMkuK>(kKL^f?StcIWoyu-6hSZTJE~iL2NA3b- zsxL7uD7iAJAQs0mZ{?{I^saDiar-U@CwhsF+OUM?X%m9R7nL=FKZ>C!`xe(2QBE2v z20O$wkBi)Dz|veIddF;n6ah*dm?lldvj`T{Wx&!dgy9cwF-gr^0?Ex1EcwN1-Yb`M zS0zVgqj;Wks(b#srpTCNCC+>F{F;zVR9eYuSJ$g)vxM+ql8cF@GmgfeedS4_tA9c5 z^`q>jKb>fKp?d+^QBfiOZkK%Uex&5=D1IBN{UO?>$l?PW^(mj`qgyj{m*tkO#(I?& znd_}D^Lx6T=`IW72-Be5_XrQTd4jM1v8{waZ2XR2B%wHN>@oSx_?MU1xF{@d|CElM zwbd&P2tZ`^P7fQ@EJCuxq%ePt5UQB*uC9gCrB}0J5gG!N7OEOsCTDv_4qv5C{0Aak zo?zH$Kme;7AGWlqXjU4WkJQ;Hau{DAb9lZ=JX0DhMA&4mIisfu(EC%wXE#Vpi}U2% zc&VKv{obM;Bjb8=VS;XzB={@C0{$od)}k)M&)C;Gmi`zWUiz7Q zVIz<@aCt;AomIRxcFgFGK~m6ZAV6_YA3f5)k>U0cg_|Jxt8tbNQBKpYZ)6oLW;YtR zg8WS5V^Da7XWi@H58?pLkh;?rN&~a*OV5ze0sfCzWi(FO8$rlJv=aRdYZrn z4713=VE6g#Km~@{7WsR|!=rB3y-I z-h9aNp)ws&V4fxh{Wat*YsG@4-wMdYHy72d)Cp+W&NM-*4uKI2IPD=a3m2NrPU`WEDh5J|uEY zR3%XK4oAjzV05|!6^(F!k(>g0aQ*|j$G;%77=8JOU&C=R}a`c)EfVZSux?vjC| z7~_7CVM68p6{3jh7b^0261r|e_@RFI#P8Uw6(f5n3J80`;+_UTn-igH86DSXEXSS^ z-H4IML-Mq8#;Js_2gfYP6r~fg!PiVPW&V42h^vbW`;q8$0x;t73LGdT37D<(a`w1< z4zy>z&oknTns%|LsB%C=k*)YfP%5_4J*kFC@Fs*QRWn5+h{~7e`ZuYW-;z} z%FMSL+!dx4>mv7OS$Ko^=V{K@Q5$2M@5waH*p0%*~buhXV1Ck{lwEXhWq8=l}+|F*MCRyFN9(%d6G6jhe)^A7uC z_K;&nh{UolZsSI#4q0W?>au4m-C@DSNt+^B)={%rPP<3^++4SU&Fgj|PrQKQ(awIU z8B2cbV}9Xb5vssk$g1Fz5`a=dDh(K?)gbHoJy2bil6%DbhD0|aCXTnJ$ zf|x&v?VWXP!0ZIEa!j@wR5klTnCOSUZh^zOzDt5p5X6WyUEaxLlRPHITt4JXXmh0xWi&)3ZnfCD8Pmh@PSj$guroybg4Y;z&_`DCS zF(th8ROy{eh~((oynft(x!mi6ajsc_bFTFQaI&j_ak5i_agG7{yZkx{F27EK%deAg z_3I>D{W=NjZ|!3@6>@Vj<-dRXIa2Fc3r+UCB2MK-o0G%`DEQ_`u_DW`SMoEd(Jo4= zOgfX~lJ>~;U*pPzJvRG9f}T3@3>PuI&r?BoJoaPC>#0Gv~p`Rbf=Ka_59 z@8YD;cC@JGv%imhdH@6Dr~dsQC#iYhTRZ%L^58Q`NJw0#f)>yu;93DVhn%u-| z((<7`{(j~W$>7TL!$~k}1mHq!?1C=^9yfj!HUD`O9;T1+u2qtK-lSQ*#Jt|8ZBr1XJD z5?_I&srT_Bz4i_G$Hqv7U8p>w}(gT8fMns*X7|d@H=y37{8I)f(6+0wbe&+k+2m? zya9_4L39gXCM2wIgl}^5$c0cMMT%g*OiRxNu^yG3X?leMsvyQA444}cKs|SFMnV--E-y68`$(TV@Y9}%bXlN zlQBMGDs6nxXkuA4MViaJAzdKTvLTdhC0)cU;tuU(sMx1i081_(7C9p!N*_71K5g2; zx-iobT*&xMg+*W^@-9;#d1i8VTO>Gw6yKAX*7W$0#y?MJq#|)6U#IPnK}FDuWO6#d z^HxP}i|BG{h!i=KaldR@9IH$P$w_YgE7C;G49ZSo`Q@r*D7^&?oi!BK*{aE%>0_~K z%0ZuG1(aXC%T)>}%L5FR6ja?`6>5i-iecz9i<;?xlZ}t8J7A$mu7uLmhjlHM>>*^fK>=S2s8{pX@i!OG}#8GOtyyV4QJtxmW-7E9}s`;!LvckfF+S z%2tE@zI)o6fBll^ZI4PKqnSGQwTTQ{Fx~gj7O2rbqDQp%Fz{v(GOD$n-Yj;n24oBm zyM%&uL9}#QR41?<}}Ric4K?NP*}3KUMg__NQY8fQgfs= zP;MOW-c+{7BYoB+ZawWpYT=#mD&DxN+@UazYiCg%qkQ4eAzs`(_wJmv9slFrvNkFDK+yRCIHB1?xAgl_#(5kz zTd;B_@5piZN>*hfAL{CMpM4{I*30A%=-E8s+@kf0=-2uH6zTuPc2!}B) zxIm~%j`$bOhK;5J1+eORoa5P3J24 z0zwp74{-q1>`{pkz3oNI^@;JGEvCU_C>6r-*gppYdV6(`NvQ_2Aw|1j9H#a&@u zG-V_hs7i`vd8kS&xgB{PToldWnMoNd9lC!i+{+Yl-4zsGK!JasUX4Y<%q_=dRkaa% zUgCaNO%oCsj1x)JKhFUcc1kzr2*Ui$f)e8c9@ngrX4vybX!x_D(QV7i`a+3j)H%xS zk5fuWUI5C{S9BbLq~0=0ikwA*X)ea%)!;cG>XO{$4M`e3ToUodv|7zoU_(z+2B%t} z)F)(Nf!GaE9t_vY@@Fz1vo`i;*nsR*JcfvZK=%Oz%V85(+-&PY00m@4V5t%HbH8H_ z6HQSLk-8YQjtPI5jGB=J8=iM9E-H#&1jdDG!QzT;a2vJ+DI-`3!SJLfLksbMXS84!(>#BK5Q#U6n_OFoSjl^+`|} zi}+BCN$#SDGrAf8EHE?ea?gK^@h2^`@i-yBIKW2?%Ay=}R}v%~ZLsl{%+6|u4_C4? zIwO3y+d<#@H2GK*t`7$x5zA4->bJKI0`7g2OLDClh=+ag|2n0{G%ZoQKR^`kl_1s< zH?Hf5-m#KzUPQ$NF%mna#CqHs(-xdlt!GP3rYl_Vu|PWD-=d0^jzX`Cw9mg6mJ~5R zA8k3#ag`h80@~qf$`Si&=g;IirjH9dLa3?FxpGS?t>@))rSZ2NMYC^7o ze&Qy$FwywPCIETP1;tX`pPe*-X&uvv8QYvMwArKz7N8H#wBj{%!wQ}M{K?HIb>wi( z@c(M|cHaK>h-Gcc{1+OW-<97P6tAz5JU`{^=y7(5$EKL4t>n3Kn8fH5S_7#4)rMxW zwfS`E?77w+;}mi&$NH}FYe!iQ?_EffZuKvBl(-D9$V3Jlm?F2i=^PptH&W=9nJmqm z@62-PuO|*P#nSlu*TCw|?w(`&H08R~v3{(Fw$TR4!|nf82fZ~&)xo)(irIFZSG*^y zNhjrg*_M00?sJ0!UbJivq~zv-WzoRK1&`!@BliVLjG9%}fSZpn!%?GHt<5#e zw(phT8XcvykB$u-ZW|hv4$BBAr5cQ4u=w++?_$@iCJb`HHN~sJv@>$7)p$ZofL#Vb5=Lff7B&sD}ifPK8eWvx+Ahn)-rDsMK5cFq-wBB1gUYfrx2m<%`kO zJ0)5VI~~W{)(JMU>$2o^yNxsTk7LOxZDk7kUvkTHEjTbWI~VXsHi!}ULV7^y;$fp1 zyt(Pk0@ouYTf0@b+!di}zFlf-X!}}mQ5q}XH>P80@Km{%R6ebHG2t6Vr_kO+8HVD@(aZ~0cxliQ`v6WcUeUF@yQ)?X#vF6uh}Dr9p!#4v(tvd z03DgC>+LilrNd>2ii4XS0$1DnU+K+j$*>bJ)?#r@HtiNcF$U%J>YKU3Jx^NW{+fe1 zT58YX3jT+S;ywD>R=c3c6Fg%U^7TmI+HSmdLT6Rja(i3fjCQ0&%oV^F%G;ve9lE2< zIEmoDFBVPa)R!#!fWWQND4q;RIn5ZtqswRRtIP8o?klSw+`7{2Y~8dKBAy`pcGo?h z6qR>3l$q#{wL3`sV(6DE6VoyU7q=}N7ZD0sqz+?NPJ!fx+6$IOLIwBO?0Fsc_@QV{ zbqN;DzaP`tm;cr~gy&4=m(5vRtJ<8l`Yo7NtPM>?R&|zmdZL{>nfLastx{fwHoKya zdd@?4Xcs8tGYXF#CF}hz_d00R+BMjGa|W<8Z72ZdyS3W(N~j(ht8BN&+7+ZKS5vZe zx^{9Vx*1YAT{aj&KT#0KRrfI&I*i+AE>>=7w61UJyxKQqZM32K^&U_HYy%G?Sfb4v zZ!%?3j?{B=Zn5!1(`FA~8XKXa!+JQ^9Xg1>Z#ZGg%VulfQjt1XP#XfvQl_!tRsCc~ zuH$5cv0hu8YJed)#4bq<4H!@fLA*F=KL;D(W!5h#bzJ9FNd0qD)=1yqhy22GcDDc% z*EYBTk@^Q_pwhy`wL`6y+FOz5uvbwM)tzn!f=QpMnr$Oa6mCq}A`Li@Hn+V^jW6(S z{PClQ6gysux4#_jy|+93D|8Vktg5%NJ62ZfDcPWYFmJe?UUsb(zOs#nZPyMqo?T~r z+zYo@M|h+6VSGkbEz+1ZWkH2(!}I-yCU1U=5pMU|EO_6bN(Z6*l*W^X16 zlQr!rHb4|hcuAn-pWdcW32^6UHbMxSwi+R98`LpG-ZCyqn;`f^bc|6AaQ;W0LvCdW zlW}wsN7_}|;KKDzQVG=aX>~Tf96b!sHrC2+{+)o-Y4wWGoHT;l8=xEOq7{9%(;gC4 z3X6m-iu5p#8@hYjyS&`TgT#)g5$H9|lz!T4;j}f5rsyJUW6;f{VMUJn;+5;wkoy1G zZN%_@x7&z?ot^&wnKQq|y-`Ed8h!JH{M6-#9A0F@SLauH;*^7g_7B{R6&7U_aR19! zk6&B7+@pkh!5gv4AN{4Sg6NK5n@ApvF7*f2bM*k6@H-tsN@8@TSLfT^emWE2`}7C= z_L(nijm`G#^{SWF_bc`QH`Q0C&j{1cf#Pb)_X*CIFV~QX#j%rQSSa-KgVvYBW!JV> z>-(0J%jazeYG4nK0DG<-xNV~s8O;L(va$H3_w%gm7eV0Y{;YHY*Tx9|LkhGv_uIuD z+0=E>M3KYi{pnsbQuQVGH%H#lzCZ6_83_CN^{h9BSEGyH8;Ar^2+oGfec}lc{RAM< z?Y5mKY=pocu8~?3H&48uA1F(rwUe0H z!Y7dv6(po$km&8t;s>cie*&6c=L5_dKcEy1C)$^qW<4YrordUHJfIe5P8__VA5wuZ z_?!rDu28?39e>j^NjlO#I@I#=<0@Sd=OiF0ghuhfRVhUt4lJt6oYZcpnFH^natakn z!CVKa;BJCYEi5y-EdPM58fF{uv9o2}eQbjG_M2aT_avE#xM%%5dgEQ+{4X@X6CQzL zBJRpf`@_b`ypGq!m5K!^!$q0#c*^OwoGErTI(S1BKL7&{E6mhEY9_4A}OD#6xkH2qSHG!@$=oWv5(}Q&4_m@YKHd2L? zG$v|V!$?{lrMKywGnnJt?zc!vH*JZJh5)+FBzo&2p!9K52 zq4FqK-wsy3Id|`T0GmRv{gm+ZBANg>4yp>({HBd`_07Ts0+UgFk6WTznIx@$M>lly(7EdG=qz*Kb_Et+_NDzPRs45@39ojs*Zcnh->K)!vKss8-RI(8$s5 z!;0$i^$?5JBm1%n03(zBCX-=|(}}5`iO&UHZe&V*q-g+?mjcpQ6}Sz|JpW0FRX_@Q ziS%Gcp}Lc+9?_$E`t}Y?TCsRZ>R0WL80pXo<%o-zi*wC`gfA3_*Dl<}Q;`C*@^p=3 zCJ|fBoh$jc_1R7D`x53D{j8Qd%aZ_~<^Dx!hTkeI10|c?>EsGP0;?3A1)#^4gC+8IE$mD3w?* z^MTo8dAw6gHy4smw{cTIH}@{EO-72gUPmq!LO&`-DFw#p$}eLF)_~hVh53Z=_5(?;_J3|<;snSZS#j~_`Imv$)a`yK^ zKJ$v|7BrT4OwG)u3d2TXD7_;Ji=73P=7!#2{{tz;x5XPs!Qowk57@kRsoX^?BfDbm z@ywhP&u@;(iPY^8>cui+dkM46!Dia|Y{dSJ-AZ|w3gkJjGN)nDCu-`Z*<*$yJm;0f z&;+Oxu*PU=d=qB!jni#Kw=j=+4#9{gcE~FXNn`y6cWfX%b}$BOfkV?F+ge<^hBa~G z<&cvWb3zex9|1~uUIM_F9SlsxNd;{d?Vv41_SQW*rnWIKKuA`-Qo7>qT9^?6#yg7; z;2h4K#3?t!D@Fco4A&1uV#fB6xS)B6tp-}Q3cExrGct)Xl$r0FwouhneF~VI$jnnr z`F%XQ$5*f-#I?jbr~3%reKhViXNpf8M&+#Nj&nLI6W+^4qbObtSzRVzI}#%;mZ;)t zWcQhEB3f}~8`{IPUSvJ#Cx#o(dm1KAYqa?~mP5ISZA}(JKOfQ8)tSz0ehHmaKYUi- zci-|ra|l}kO|(q2Ep1KxXBV-ubC*dDkMC_{X-=sXFxG|1z_ZVlAkG@i4oQ20-SKOtd3M}uBvvpB zGF@HNnK9C9rXxv5dC=%o{&APw;vt#p&Ob&{%U0}44fPy)RR^)mz5=dsfz|^Z{ z@u-?qZNm%Fa^3^Y&CIEkq}-eO=sj<-5M~hA$y?q|ycF)iu+&&yr(P5B#nwaq3#G9rnWj686Z}C)jtzEsdfmLIf2SS$cJNOG!eIp^hiWCNauTijqL~ zcFqtY(V@RLum{5pycl1u4s{?aide=ITK2r%PvQ2`mJ&$zJ+_$p3-D)MYr zzTH@SybtI_!IBFfo1Qz zDap`L$x}r%Wzm5}2iU{;@A$L}q>z_bzO|0gYh|FB82#_Kreek8ArE4qu1HS57{sY~ zaJtgGp=-+fp}`{c;rQWCtrdoVK2-5_gVC2RfH4KIJ0v09yQGbLZ$_}8S+MVImuoTY zY&OeTXsXl;8Y~1>VeHYMR=N%&LIHI;>9&XET*0dQ;^_+>QVcg(^~W?X^1t&pPLDVf zwXj%GCWtx_+h1;k2{aWSJ{rCPz%(SsG;XSi8VJ!ljhx08s1L?}$FPj>Fq=K*NalGTT=M#qUd zc#`>d6(=;xU>_D{A-lkhQf+ehmgh-Hb{2vFtC=(F)=H(7WDabrd2MqDPFhuDx@2Z& zO%qxBee%oVK_58y2~DR;j?gj-wsI&`YnquFN6+cBTjF z4Sqf}K@!58oL1IxG8-;OZD>)x>kMIWCK)b6faIFek7cNRQ7r*;&lo8jmzfRjEi8l` z8tPWXVM_)7XayLn-j|edILa=()0`yK4oDZ3nz&O4@J$=-HYF!qVE(vgsHd3d;y)44 zh%a!xA4o^)<(ka0xvJd{y`VpFsRpv9cSuvDWbKWat{t`jia}g#sPa(0FLu5bK#YET z$|Fo)o--p%Tm9(5?@dnklaGDdBv0{+Az||OlZvpHUwf`#chQaSB@0(LDn|@m>}Scb zsMY-S(#b;VF8?4^3DQA4IjpA^aeD6J6E&Mpl~M!YNfLwtqK$GEU}y_}p)|xc-N+cV z9E#S$&`f6%sD*H4!&*C;ei*=x5s^8bMjFhv^4cJygdTDn#Lm484d!gDg@bk_3aEv2 z6@sJv^V|JWCg8a6*OSvaNY`fZKK>@;;2<3snc3b`ktqlXdHsSqOtkdfBayH{xJSY> zH97~vGtWPuI**r|TRO+WP=9(xB2ngV@pYR1hQr+z2#3<%6)+3XJ{Jg^{!+RO`o*YU z2>T@6r*H_YXTrS#n?*g)QCsN5g#e6$*buN0*6 z8Xa?cNZCT>r+)=%$HOHhS=XL7v)DY7TiE$<`-#PjTE26#kWQLBAChk9&)vb0%{6Yw zonzaN#%yig20M>>ip}K0Sg`JGMO=VuJY$!ynvFc$;X|hdMAP5RBV)z~O&7fwlz+hn zMEnykN*9o10G9=o?t>OOenT7%1ri55{2Jxz73Yb8sin;6U zj?Zeh3*7BBGOI4ty(D%R1A&E5cvDSsZw#Wxr6y#yD~0f;4S}Qfpn_)`SZ#Y7GJMLm zfnb;to1LE)xN^njauqNknY(hBXj~wHpn%%@i$tA? zt^~wJT~gEY9pzX~TZQ`US;4VnX*@S5`_uAlrpIY2;XEV#9FJX6TkwD1%1hSAII#Hw|v9X`IXx(VCzYIx&ZWK-`VqP73H=6WuBZ9=*FjK{ z>2LoPJ{S4D`1_?nQ>VfdrHH6qXN#x89P}RXs~v~I_eNQ+nM;vFg1S{YMbqXQ)jIA( z#l^n0M3&FRMRl=~W0cux-2T-W;MoioBeUUaNRKLvbGd2V{lXYp-y)4Gs?@jZ6rKdR zJQAg&LNio@%DBUZl62$q8nTofaDQ0*!O{!vGZ%K6^A=j8Q$8r=y%7sNfkMFUAr1+0$x7@jG} zK-Hi^jn9!4|J0$PPb@}M;^oqnJ^f>NqM!m*qf9+=NP{T@^mJ~%^mI-IsySM6I5pNo zbK@JNUHn6N_2OCWtRy+{7edu}@10ScMPhJ^1J5!Ik@j3{zq?W;LAV zZPJ5QhEQabJXzzP$Zk9v=Ex`@@pL)Ps*Molqj(QCc2bg54>rSJAz7W26ZB8QbABxf4BE2TpWRNG3XmdYL}k z(6<|9v!x}0;r1`ADV@QB+_{^;@q)j>Ro?Sl=XIRpy_Fp@#3`(NdDFY9fk+nO9qc2h z!t{EbTy3{OWF}0dg=tmif4s=gjyHA0&VYg7U1*#EfZ|>Ng8VfB2Ko{Kf+$IB03m=| ze+8s~5P=i?dS~zSbPBV-GIusf00j#cg=Ij96|1OOpVQq!E<~EEPo1{j2HHJ}8GFc5 z4+A_byYOneWm4lHO{0RVAZ1RCh=e|-iHb1XC$eZY9>VP(K@V2E%kFB#ByHU8jy zOzgziZgh4NE%diUw|aK$Jym6pUSXKdyZwA8k__VZko!1p07E0jVUoM@xRB)NJCfmu z-r{GN2MG=wba4#Sb;NTa8PHypc5Z;Yxku!8S-R-rQ zv6__kiqRs|Bl#?i6@HW@KegeEWcB$OP>?d0C?BacAs3Dz#5uQrRXT@ZE2bj1_65K) zwx>?DyZ6x39xsnwXkhBk$Ab&Hne>EBb zKM@=OA&lI_sOgf3Z&BPsUEE;Tu4d5FM|rSL{bn%SXW9WRm43`n^gk$jrzpvSW>L6p zPuo_t&1sv{cK5Vx+qP}nwr$(Cr}_7H&VScB5BK5RhgcO+Svw*lD>HUxMrH&>D_lX_ z9+M}!LTW{)xx)74CzDlwcEdSe4h}ubNhN(F=ZTC^2Iq(ZvkT)191r73s5kow+~y=F zsN5uH0K3CJ+EG+T=f18n_`#F-)|z5(a(;&weEt=|J@aHP~Mq zRHTtdg+&aN@z?!Oi1-o?ylp>Lwuw`W?yEJp;Quha-$Jh7G}$$t#&Xr4#_CLSfUrK! z^rJY=?91RZ5irdR9?D$#X>C3BlX`lxpxTUwFu!;!4(5}DAM4s{Jx$iNBt5v5DMvTI zd*71gF!<=Vcgh};YEDZ#Yy7TSmC>?AO!P?GtGh*O?~)+4@NI$olJ?}(XG5-wZaKB3 z`uYiQ0uE1%`etdhMRwicnku+S22Kp#f6N&)~&BFik%+x7j%smCT+ zd45#m4fBIffd~q;>&vXAvCGRx`AdZm9-bZ86UyvXZNbzA=vlvqf-TyAq zrByd5)HKc!f1Q(CgI!jKvK+ySs`3F+BSHmZ``#2?l8?S(Sbw!8pqk%~S?tQch%t@Y z6M9aZaY(g9n;vyEsL7E*iL_&xKUmlUI5KObGLn0wKXQyzmVE4$l+YBjVBd#B{!j0vHsO?-t8iKGO&mT z+>$-7m3%7f$+*1u8*$)p!5MgAj66F2(L+W)euQZ4BQm#;ojoAl%>)RN?5#ZUuiX*C z)L%E%2oICB$WFVxft0D&buGM_SO<^J{$5(0zq=Bhf?B0XH+b>h*r34jBLKL<<}9^W zAGl}EGuNQ;pt_|cTpcn{IkpOB*9cXZ+7ZB^ZJ6q?!5;LCbKr{B`{sTUSGQ5a+o164 z6^g~)fgDVjsouPTFhbJx#=ZK{T)ijTe>$vFXFml}i))ad=8xC}*C0!_GRt+YxU=H=1WqIzqjaBu~(jS(Saxd_u`}DuR7yNr&8m31j(q& zjNVkMzmz#4A(Rg-u^ttfBh26}Di!{rI8`!niU$nrpjX6RyioYazHzM?ZrZcUp}a4@ zCqEE4i8IpWASplhG)K`xkT@84NHf$F>}@SxfK$8FkR-n!np7s5_%gA*jZFwGci?m7 zdmrz`Ms`o_B?p^-7jq1rjEB2^tovv_4|*2wHO3aX6J^bKbFdEv9eV{i@rC}i+QANR z^Hxm@I%j9Dy@}A*yQ}p=82AMslc`{z-o0*$J9?+`@?sy+YW8BBeIRGlZKkO!QT3z6 z*Ry@W!P3%)%vrEy7;7Im+4TPO+#7Ix`sv))zX6~iGwa7I(ao5vUV3vjyS#E!y7&f$ zgf?LgC^!(#^jdoOY9VYfUh-jnTP*~ShI*sjtiB`&cGkjhSu$`NuUObq;W#=z9iyug zDcY9!6_!gy`)lK0+StEqaVsXKbd%NEHhC;0fKx&+=*ouBHmy8dX3;DkuE-F3qdEBR zVJ#!Dz~uUtSM%#TF-OQ@cEcZGf8s+?yPaE6uVs7!IIj$pQMT$7=J}{{jU`Kx(-pI- z&A(*uOUpFcii#ai&NIJf!i0F}t5S9gC|_?Ph15*XX$AVV5_w_dS)H~5gN^KZuBm!e z|9!AblzzN|<@m6$dwF|(V--0~>|rD?279^9zPG$T1rqFihB!6(_m7!_gSN;x!11iH zi1poM9AiT9N4yYxl>I>1%go6*6#5O{?KrU2w$JVRpCu67Z67sNz_7uYdbD#PhQ`}w zboug~og=aKhF{pDKlt*z0X}Mc_fu}s;{f^hpDUz0JGKOd(W}S zA0*TD8(6mU8^~na$M@F_U+?uNBnNld`0iC9HTbEg&I??qZAhL5ijvob*Xnan7}y#&OX0u#gnb5h#ROYWR0DKa(;;+??qJS7;(-6vwhh-WbAzH zFY;M{sa`yP96a7ALX8=TZ@l6V{)5kB!HAF9Ao%urJMppn=K6dGtNsU9r)+KWY0>$L zVHsNB$m25n64nQ2Kbjh*{X-@qYPk`+VyuiPa9rgxx)E z(fzh~&lo9j=n1F>qwFqpJAwN|Xhq2*g}TVH`IL2(N45xdqR{oCh;mVQ3N6oJ^grbR z( zwx2M9qjum$VDIcZ6r#2Q&^^&Y0@iE`GFcHT=KPgGuNs^jF&|Bz4lEx%TA>Q#PhH3{?f> z3?(820q>{SH$;qF)YtWVcy(a;(rd=%O}^hHwJRLt7Y2rY)G*LJij%W*rw}JOsO=08 zkfX#yufa2Z#EY$WfJ#EqGHZq+N&lP&NQXvJ6&a>O9bri z!b+ve(FsD&n_tnU9CpcetZ~GVAt-u-?JY;mDW?nS!FR&r$9I`Vu30x_t()=5=n>4L zweB{U+Hi9hb&3@%a}8$jb61#-L3S(3`okM38Z0b2Iv2%TQ=q23aO9ly^zVvt{z3Up)3PDUt*um`| zz;M)NA5^lGQf+yr<4UigjSgFu*NO$Y>KUmq-HUZGzhRe?9QEkYNr{*Tl}`nDE@NOB zs3d$&JKPd&7B*6a%`<^om0)hk5~pzCq3A!|>T_=CXl_0n(pY~;bd^AUvv^@-_uP=W zp;Ijz;gq!+CY_asd<@gl6@3v`A;!JCoTeEmQchhd9k8;gpU6M-`Tbty+$=;dg4c!U zpXuV1`;(2qERtcsIeCUw#^Z$pyn5g^SdDDOHB7a}YTBmqu8(dtBZ?cAs{sABhfFHp zxDZZgq?!;FYUWpJ-^;M0lEPc8apXbDn-$jp!w)@8S z&%KA<8k%LT4Tfev>tUW2E~Zn=_TOgg4?3ruKfB~@!kEat!=%1lzSUEOI>Rwvf}`nN z8*@F_mMc42S@hhq)tle^Z0Lc<=CS9RKrC=*$iGFGBs7o9E2+V5ob||M3lLpxXW55y z8$eY0A2YQ?Cs?jbdd`nREtW=Pz9rUTK<{F9M zRMUAjBw+=mej``4rD~Q63L^&X*i;umsE_u&cMgeyTF$F(?VFl={3fHPwWN2vLU{`n zl<4Lp@RDt)i%mSb7{H8h%Z8+Ba! zdN}iu?a87{2+H_M=p6Rrn9neRodbi{*Ln%U<<2ZY)0@!@Yuu2|b-a2AerTO4G0Z2`#{-Q$1?nL8r$Zi#-_pu}J7Jb~@i)^L670q(4b zn@Q`Gaz>xgDoB-&J`x=@Ig^mfRGRE#2OW2^sPKLPUJu;X-ov?EW z^o$KGl-iQjp{0e@+6|J|Isn6&cI`k){OD1tV_XlPGJ4&xbxBY}L8BQgrYbrdM_xKJ znvt+=1)-e4>5IEqzZ4Coqek%HH^(PW!JGg50Vi)!l&1q)hf~X;lotX^%M) zDK8Q+d>+&&6efL{6WR9Ej}mC}=EUN~Lc~c*pTY)LGGI988nICFkd@i+(+^-wA7e7m zOXwKJO`?pvl5NA{&LP&(*%ONX9RyFAWN$l3B(~yiBw#gkcWm?WV)n+JW1sIfsS#s; zCEMvv;py{@S4P#gDA(nF0$Lzz`y}h`lI~A}SGG2DmEuj~$bfB{O6B-ykxQe4bUN#5 zNodOKn1~E(fzFSJhZi@P8N?wd7D8W#0~wg@4Cn7CiAHTg8PJ<=4US}dd5THxvIDH6 zAJR)J%a7bN5*_|uvjG&`07UH@8tJj7ovf|_ySnLHxyRjGv$tvOQy=Va| zF~UfbJ4EzNH_jdAPs6k0G86CHW?DQW&EMArC<|w9yV@p&9=27W0mqf3VAvr?Wd)(r z1k&V}q|}!VPK@zLyQbqtm?g!s|084up&9s_Hiwc=p~?85e@W0=>ze`%7YX0uDnS$@ z+kL-35P%F^qgX2^DiN{5lGa)zyspZZ5z6DfoJzi82&Ex+__so#K)u4(0!~GH#I?#i zrc7N(&9l~++0|IavUUagFg~bhn~1~WOlWw5e$ylgNzh>x0~)?ShqO>SIvE6*^ZCoi z{IGV6^~D4F_o14f`L*B-rQEl>nFG!zk$SRp9758^)kNkc=)2W+oeSrJ%zNi{H;0ks z2fK30t2RctM6{_AKbxupw3X_gSIOsR4eTm>{fU4GRBMS)1@wZD0j#~_R^@R_mog6} z9#aQZ=R~?R_@lUEt2BU@^Vm4Ov(Ue@jzsER5A)n~jV^DF;*6-!%&l$>@(N2gd}Yjz zeDv%W1$=R9)m@~?`?I)Lyij)k!vq`BV8pNuJenz(zS0PRu)q>gOwH^z+ohl_pB+ zL#-Q=u2rdf?nC!Z32M+++Xh9g1eH=tOk_L;PY3zp^r)mw74MF~W<3kV6F$}jvS>M* z=Ff8`K1R%9xMV7-_jQGeA_030FAiP<(CK~M)Rhlt*%~;a<0nZjiw^4GHa}Mo`u4gS zUPrNO7d5G}3c%Th17vyELXDoWd!|1{Y!1G~p5H!b-`nR_TIo-IS7^&o;lYJS?yoF0 zd6+HuY`PE-wq}tj96a-~L zW`6X47`cAs34_wI5>pMt*x|)4t4_tB8N&g;sVJXzSU2`Z`kjX#G?HFrWw*rcr3Shx>;dJYK=kye_eD0W$s^DJ)@USFAO(ZXTHTH%k3WG6M zpwZ9OAt&|kta)hKHvF@-uxpDUx)a3TNdMA+6v3#X%gxg=0hsYAl|KP4VoRb{SF01!xh3sQtIclJz(2`BrXzqhFWactixf{vP5zns+_(`@z8r z{Qg$;ezNNoxvePbyPfB;cXlNhx9iF4ZW7qGZCy~Azto#&qgx0ZEpIY zt)AH@;b38bR7m*3pLsbYex1vNNO0(c+cXi1UF#Yr*5Fy(QYUiCLpIOPJLVxFLpU*X z7HdZcrFxgqP`DAd()}fKpAEA}jf)Z7}`(2Mg(JPtUQB-i{0tg|nB&S=L$HTi)2Y zxPr|a-K57&zw~|U;`;ywasd^?&&gnsX$XI@0`T>Bg& zSMLvY1QS_|u$r?+yX-G<7gQhex`+;q1$mz@asRY&DMy>_i2)h~@(KDz3yXgkA9a6-BgfO0L&kZckNivelmv=i zVDi$ixwjST%kmhyEQEKC01HMA`zHm~fZr$u0NS}p5)uG@eI#qgFXc=eFC{H_NKDG5 zfi5KxpvE*3qlSx?TC{EGu$>|~V@x0!(p|;ryKN4KEQq8Jhv^Oql-7;EI2HyWv=6m~ z$WS*+HJv)fQx~wetQ8d|#?J}5BLw0RrRJ9%lt~z=@~;pVK16Hufr@s~$jBxYf!0S^1Q> zDHUKS?~{tN9pF@`Yzk5&Hb)iH5&f%AAx9%{H70*jL!~%M5zuvw*0!c`6gWX0XQY20 z7yXAJcT6DEzp&_)&5(#WF_~#Ao37{=;9&osQsLayk&^oz`e=pb8JZ3g2B)^RJEPi6 z+Ok_``(uAydvNNyihG#)q&riQY60+iSc*>DGOP7%scn>I{8*#Tw00{#om*z635~Y< zmDYkFwM5lP2!j;*U%nhkbhMwPg;?K&gw__h>+iY>4~qEAt0fX}`V-%$%+S#=7+xP@ zNfn_7n9f3e7S*uP5#2_xP)d0fsfbZHk0$Xj@#^l!q4yaZwSa^~4hKlBJ!qSOgBbfQZK4SqjJTjyjSo zzf<@scx{4@>g?TDiK0y0#EhP;hdX*|FC=r|8)@?u_}FOqh)~E|${h+9ODm!4yG z|FP%0qL9{ihe^R-@t2my2< z-mV5BH#)N07gMUGC)IW0Tkrkg2ARUzNcz%YrLZ=Y{}yycKqvxKwaobJCiMV+FixQ_ z;0!2X2*Nri$;VMGcZ7+?_$G#_sRpeL&}=hnnczt(uduegVFa@>INfJCWZl!C=TAfu za6#2B`L#xXSRPsf)v|RWhwV6~Lcv%5u#pHy;?b+C7i7j=jQg7TGe~3;zVI* z9U|ijtYTKrJu)&|p+>+CdqYe_7QtU*S7_zWK64Km!+D9jz6E*=Fi29~n4=?j=-&hz zSGw^Ejc98DnJTQA^U=pEqwTtA(yT@7?est{_Bcehex9bNG26(v;5+oUlCO;fQ^8f% z-MD~8RQb>9A8YHN>>@F$B+|mFjq?kyZJxUS3gTcFe6yR{riQJjnmT!hi=1f(hur+ez?Nhmh|GCxj{Z`?g9B$y7Z zw^gn(=0Zo6`4&crSTdMOHQXyV77*dLHSwPnD=y_Jbv_nHqWFkve0FX=yvpr{ptiIJ z<08n1c7)YafMZLsYyvV-;=Z7+Y-L?T=qbZ_^KqzrmsFv91Wv&6j&Uw_5VzyKm;7pbhQYJ@efskGVRvu6^Okewb<~-c zUjE#xjtk|sYZG34o|Lxy#=6isD1lV+rp)7}arb}*>4Y(p{XyaOyf$~h^PWCo;{ME9 zC-y@Q6!5-Zo(g1pHS^8=ZFbt_tcN?vF-Mw;!Wp|ira2KDsH>|sCdKkqvB5? z;ieTS!F5R=giFmF{U+WTERmPjzsGVc4+ucR4hnYgx4xFAR_|W98%&v@@7soW~ zPkv%3kms}BRX)yl#@mzYH4wvnn~Wn$2U?i#2#evz=%4M`{b zw$>CAIbgn#hMH*n2pjaS0cC0mr@@>i0^h=^v_4cJ(1>E@Bi+s zZ93UQI`o9_7xDucq0KgjWg@a!daTXSdH0b`C_kImjn`c|PSYPPJ5RL*%_MVBB~8R) zV2dp1awa-dh)SgmHON8%I zOItV|b4y>K5YBF2kr2*aTR9v@lzBhT$NFHdNAs|?IWYTpIT!i6-z_;D`7FnJH0*2r zFL(H5M|-{;XRkVlC=Sz~NDK&qW8dh7)5j=7?ahjOV6|ZEya$&<3aca9yB*ka59RzB z8VW`PQdv`G0vRmyV}8gGF`?A8xd6gROCP~hdc^f0MMbwky3Fjctqa0L{2gT9s&MF{ zI+ty(O;#ThOXTW?FS=R%kqmBPdal-P_B!r?aLD^&KW^96*qbma{6WlMJjkL>0uxN< zOPTX%J=pq>&PelbtID9cs}V=O+@GtR`SV?MOFB#VVU_n}hEL`S<{uwpj8w`h`(ZPk zWs-i0H{t8{uZ81pOLGJA8R-)g`E0Cpka^8Z0|9?F&QBRjt(tsJcyR&$ZlApGRE!!H zPYD#zIx+@RItm1e%JxduYUFe0XGopdGc8(oNU6VR)~g4|!Ypc#4`XLbbUZ8qg1vt~ zowi*^QqZXlZ5hole&qJL#PW^Y1RO_)x{VO}x3veP^-#GK?o_VzJQgon*b~eq1zQt9 zUqd7idlf%3#J%?wiucTSXVm#gtl@W0x(!_WzxZ<5{&&7yMkZ!< z*8l0uz4FqGFygG=e*Z#yU$b4F`vid$QdPNj`yB%D?OR_GHO83v{0;da5iTECSUJ9) z<+#BBy3j_wyxu-2@+OEJPj_PRzO%JC^{GpDH-oaNJpQ@CXZ`Kgz@{@c#Qo_+m)_yh zro)zQ`~B&&`L*HG_IwVy+XRG_e{e4BOmD?lD{`={MeS_QN z=G9G{b;sv(=s+u(qp{Ci2!Y)(V5>+>&Yjy{mq!IX!p{R5q0N(oVY6f3{#fa5p`BS9BhfRq{Zr-&rUSR6?(N`LwOxe z9x^LA^;FI|^6XSib;wl880g-@sLQs2d62tqX$~OKWh^|@3~JMAi>|S#Zax%*sSsEV{-QtJu}u#S>&!2xtfcP*L9Fddw2Orh~*@7#Kd*ns@ef=+=ZFPrC& z+&0v10NgQ6A5vyO>xb&RKn?Co&UU$wX-~Tv>lvVh=C#X{sR{_2G=lNdHU-iYf@6ba z6lrOn7}{NlxtR`b$arT)b>&xl(Me4WYY(deaDX(xAU!}!tJYp8Rx_{bRSAPlvkZYu zhm5!}#XHBzwWcHG!YT-Z%`;JfOv~P8z4?s5?aQK66>|yoJug9K$OU!NiFdJ#2^#}{ ztH2BmQ9oT+L3x)l001qjRBSFXX@0u_OxVY1Obo^~OkzZ^MjbTlMkh4;oYbBjpEDaf zHYrcrJ4Zf@*_OiCl?7cJ_CcnRb>@T3V>(nD^R)TJfRfa=TPywiyju5+%01wj!H?~X z+iRTnr<0w*H|wA5dhBwITTv!tnymTBJ^3h25I1f$OW4gGr|)#un2Ef(`5eUExh(!kY= z(#ih0J{)hxVu8uK(Piu3=ym=2Xd9Z4aezrzZq0)J<&jrq{8^fm?i3(>La8X0p7f?D zVz8qUa*StPaQs#P4`EvSkE9JklkV{D!^EqLf{-#qWtqgCL*r_VqI3~aWN@xiBnjxP zfkJC9yH%Ft^|fTgrr1&~7ApY3*o<|fX&_~S2I7AA`Gfy1V(eSV^ZS%9+zAv*T^dwz zFQ7|naneojAc3vah)brK*5>q&PA!BdU3&-x=97M86Ty67>|?)(c4Rx1*iG@22jBZ^ z6&FiLf*QTc?j=*EW8=J!e6_}tAH7tZso1abY!!_TkFqhFU)4DGWm12`f^)6E z49&mn-B_ELV@p2@Q0W>bJyNr=)fzhNMLdd%;^;pilig9(r2IGd!+0&U_Eg!Nr~V-| z<_e6K6m{l+G!O*&kl|pDU0K?6&oeO)!yLhG^n?+77$gAx-NF~q6L2nQ{U6j%it)RFr5x1W!l&`aPO?S}}b^J(6!}y7! zn1pey7?#BB_bcd+vx4_sb?x8woIP##GXXfI%usR2G{$4-NOZKX(1D}6f~iydM2Bre_QZ8P6aZMIZU{P8X!@F( zIFku;+9I4#V&ue^@kI}GW3-W7h1uSM?yD}0l=yLS#Q(La*+j|UqSbAGSt1`bus&kS7ZAFKawtae zYJuhV=}TC%1SZet1|@3bwhW_(n3JV5?RT;^$0}nD;vZL)jkG|-<#)0+>8UNCCy2$i z6r;0G1gsi#vbGT7c%4Pr5N)R;$2mB~R@I$ZTfmMEZEG}ocXs=9xKZzY1)rcJ;)30H zMqqKNqlfZ#QdT_C$&=c%ArB%qWM%=^g|Hj-bVZ;-XYqj84N6n63ta9gkGaZ=ktQ2~ ztwXKJ{&i0YZoDgCY23Xk{_Wfp0;62Etu>5MfxQbqgsQCB)fGv5R_%Ud6{9Q(;VNY( zGX%JCM^ds|>cFQ@0=bRe?~qj4)-EEyH6LH-K(E8wf2KuPU+R4?{wF9h+#;0HNfW z(bf7V)c6@4&)+cC=G*9$QjCn-?w6)xT79%(#BP?}EluU1f;%Pw0&ZK`$?$7QsRS^j zV{t&uOcL4sD=MKk%e0J-&+8jRn>Aqetv-;Rgcd+&kz*q236>_H1DXb{m0Hv43Lx+e z@&QZqA@Cgd8UYD0zjG-_Q#$(#?-Qoe{B%k{>$?`ev92E{^SX-i$1$1-T9-KQcSB7( zy~VzJ5hsfwAF9H8a`F4^%vFcuZ^lau#}Haf|l3~FkQtGExLc6kjQ#82>M{wQ2(fjPQ(W@ zvF+hUGbQMri3g0Nsb1NzGK8>&PXqyktGktWgL++8;2bFm&jGk|sj>71Vj5VXoM0Y^ zv=bBTJYf3JbxnlYb67WFT0+mS%SER&NiaNY=>e0SNOgf>rwy(@N1`nx%TrxB2{f#; z%26&xSh2P`ZI3R!25cKh_QJ`IQBq_f3!7SZ(E|F9@@MD(D#5Uz;V-Zo14cksohWg9 z(9CdueLBuwuE)1SI_SoGVg@Bc)vO~7@-2uSF1^$TA^xcJ-{fd6ZZQ#w(Dqm zIASk(sjHx1s z|Nq#6lJg1>GWtdvKI0)`AnpBXW7@PZ1lr@bZ&36tuMXB!l2U5hsk_76I|hq$Pd0Eu z4~QM@=wTnUzjrhU70j#Fa#LO~3ogc7UZHPU@wf)&2GV@qlC(&HL41&_A1g+aaPNvP z=>u@p&uGgIeQJ2c4aomrNB}|9$;wWVuHHd#3#|{QhN{0QU>LWWgME;k+Fo5*z zuOkHvi~guF4%|h&w(F}S^*eVZ9`Us4@RvL7zaMgY&SK1qzEHHr$|;ZT=WC*)c-6;s z9cY=p8}`Tb^7T1DlVmwHyKec@WmzMTad>0WaCc|!%CLD$o+`T3Z|K@u-yDG&Rz`PP zZ;_gztJ9`cysr7(i zj1rKLBB`c;73F+A99OhV8uCdjx_G3tL^)d$k@H6}oRw=wSq!qE8G{O{#)EHNIj~h* z+uNM)+NK6Xtg^OHD+N~vLq7V)0D`e>^O8F!b9Xk4=&}xIgCt=SQ@Zkgg;TFO*^vf! zww3vA6cJCv2>492TvG6#JV_iA*u-N6hoor5nLBqYOIMT=J%*{auwVDX>?l*#>l>40b-MLUi~gHd0ZO z%C3EjSy~$$2PxGU3lK%+t4izGUId1zc|(nT(-(c{heowdTkOUX(LT@GtH~ki-o;&; z#yEP)Sqr7g@1{WVym@(oPwohSa3K~DDxGA7&NiZeV6gcgON!p6oG{BiQwciX=D@5-<$>j*A@0q z+>jND;Hlz6GaNR)HGz@+_vB~K$1))TmzKuL?-4I^J&-F!57N~tWFjPzX~@`Bg2Bwq zb48B~mmKWDsS=30UB!UTe~X0Hzga^McVXn94{3=PLk|@_G|_X?b>%{=&`CVG)r)LF zO&$UVIJk*DrPj>$LS!MJW1Q+0TwCI=`hR5;-&6bzCbImIgYy!K6dHS{U|}dG*Teu< zBL75o`NOzF4*vXDF`)HrG4~3YNWLXBw#Bay7d@xFCq5m;Ij3Fq=wn|oMrEmEd8w9r zDZgSItp8d`?u%+5oT9{ioGgb_O|4&!V`3 ztggVw>zOi6Uq=cVPghQqB%`tSN>$%1tz;^(5lJ(hx>9DW-KcRtu>Nafu)0Yq!a^p8 znzukONp>2Y^0VleTBamhq99dE{#l4dFyUd!w=)GBuk&rLXD~ zMKgCL6h0K0YSyjz32?@t%N zmoEiW%Bp|BU5?#K5{RZfZvm{`iWz1voP>g8_dx2nA1$6p#zl*a#VoGRZd^3z=6{9q zt3LEYBK0qn#}9w}S)*EyL5M-2!C}Y-F-!ig5B{T=$lzi$U|6?HfHc-jBDQF!g&BUfu&`!(A?LDJklQ8t^fk7f4aGh{L zdqr}9&PTh5HCKY>RCv>nNRpdRX&OM z`Y!HXshjJM-rM;Ocpbq%s7!hDEYWGo7K=hxi%?=DMmP9!#mPFpPwlcpBVV|g7F4KNW8c0wAjtrV-4P%9!|Haah zuF)YIa2dkN{Mdj?aF1g9-t0156*fiAYRh6zwKeJg;+C^Px8Ho_fJe?&3-i2&hmJIqOuB`eXa>c@`!k@YsHr4mp^Jmla_JepsxE+s< zGPj|*6(gf2Ibe{_r#{i7Od`7tyQ{56I_a)PK85laaMD-~+yBr7R!c<`+D@uZ8^( zIju*TN8%U@VW!Ov;ixXt7To?apV;{~pA$x_g&AwFPX42|Zj@j`6br#>ptC%-*I1oA z>a0zh7{yYkpBB-dNuHf`Dm-GQeEOMa{qF~|Nx{q|>f0nUBEAnFxYx0P{p@$nsRO>h zkyTrAfztOrGx89y8i%b;*7qYMLa#f@h`#G02U{R$G`O9n5cpkfF!t_Pl|?C`^$*}L z%L{D(z~&F|ROb12?yZWF;zszhL?5mEBAwC)%Z^uuIc3eD;9tKC?RBVM0C|^zfKKF4 zr$Q<+?BLH)6#gQeWC*OXvxEw%bU|uiRYF3vC?&$J-xio$GsA@?hKL0p_3xz3_iz0V z(C7QN)8+>=#M0oi#9!3}RtJK{Cn-zd9U4nm9U+KMp=Twj^hU-#_tPjfE6cvKm6+a3 zga!qDfF%!&sen!d*BW<+)SCPk1UN&@huDsKLfQ@0=i=2`-iA!NAhFZH?gLNwcm7@5 z6+7m}@7`mHx%*g_eKsxg_#1o4F-^fu2M-=o;PX-0UXvf~;2&;Yf+q$OMA~6Eawjx> z@wH*6GAGYF?s+qU?W8tp*>nI!dY}&R`C4J8Gf!!7*d3FQRG#49L*Sr@|F;qFpa1ycmFI$-uH6W1mDfF)J*#7eXL45FOKI=GaNl;XsGHjbJnW= z3hp+2n%HpVwLpl?veX+y0pev1gj% z_Y&Md`9s=>ZeiZ+YlPKUBG*>;MD$O<=tpon+)nagofO`jIkt^d-kf7Lj|5)45Aydc z&>UoTw?xn!a`v_~x0Oyz2Z18yb2U-U+rQ3=sa;`KhL|%}gUSR666FdVXVK?rES6fV zNyDH^RM?z`-zS6xY9a@5`qWWc@!t-yiuw7#f5sdlGljP60Gh{tRL-Eh07+r6N#PXO zgh`1T)QxG}WN5k!{MgVBlIg!3l+&|geH-VA0A^D(ifo^9;{h-K&M}%Sg{*LN3K;7~ ze_irrBjy||#eC?9u6!o4Fv~qTt2P%~V}Qjac&$saOkav@U+nugymQ}>a%wr=Kb-LL zUU0M|>4Fd7#Hfs5NeNj1{g_H1N9**XMo>R6&AmYWz)e9r95k}052bG$NuYrYaxA$fnZ@@u}a$1oYObr z*kR;K>cM?Mh*hP4pc;P^Ds;3>S6t6JPK=gy2!|}e(hOiP;T$Sh$lUKU8y4i{l?Q^F z`FYbn2@E5&vY?qEDOa?DwI~iTv`SI$6TQ{!lS~58r2aOS1I5Prg)hW*Dv5`HZv^}% zQbqt0AW8<3r+h{Nf*HaC;m^&Ej}g54(am%OrwTZCc3N;9ls^wIvk}6Vf9nUk6=~84 zy}B)C1wxfX`YG3M)fSV~+B&`~n`fq0Iy7r*K6*V)=G@M(2N(t+9$`wnQoVB ziCw6zggZ;c~d;oGGN($E}I^pd3V@77hjUF2Q=H{@pZ8i@EiNn-P;^aPB!Pii7Q z#kL^qC;tGE4c;NG4ew%HOLT}$i?y%C%T}Yk*`!UTEk<<$AEUn$UQC zRxZf*D|H7LH6932d(6Z)c_Xok-}-d&ZG1(p?Ci4eEGXR^R4DtP(f`NTJ4IL8Y~jKk zcWiWQr(@f;ZQFLzv2EM7ZQD*dwv)5I{q22m#{XZOi@B=S8ta`^HLBjKS>Jp>=p- zWkmAbGD!yiB_cWniX0?|1Y*E;UO^&LDJ;hy9m12U19?HwHzkW-=#_< zUWLC<%_RDwQMT6$2x~#M;pPDC!=Y-k3ka*i%grr$M085_>YUtB)n z6oAH~e>EC9nd=&Y+DkG(*aK2$O+a4T5Y+nLeB^Ifik8o74aj)#@DI--<+H}&(JF=V z^e1MKIYnb2b6JL*3q_YCS<6U8>R00b7(AqJe022f%wt^b-2V~mMt}K-2WK&W{@}1& z96f_ZK+ORQvj|{ej>NaMjGT)mzF(D@x9^KQVdZkfM?^uV#+#io_7@9r3iHsmgY7h0 z6G1pTrM-d;b;@i#Z5t3dv43D=gcRZ^%mhGAKVhM#10^8J6Jj^%UI~NGhGTcvWBTO+ zS~A`+5T{%+lc`ZhXj=kXgh0FsgQ=HPa)#Y?>QzI#fITSSUWDAl>?clqvV-<3W)3du z2m<*FRx43bW{9GxjQ_riiwhoi)8RfC4+S157Re|TD|D&%C@5N#E13OFT>Jz;!K8y! z#&Uzo#$JlR^HTpp!B%fMQ4n3@Bq5BOcXsnH5%~656X83Y8Az*jIJNSF1X#Q=I5@{G z_RAg*S3hxD&fV)mma?jGj-j*WJ<1SufBLlUB*x~nsy7!-bU1hHDN^wCvEvSpIAV>gee}vs`K2Hpn0a&)OIt4ZDQQoNX)$q zJq3+TFgS{(`5d-WaY4aMl_0Tc=W-sDmlSbdzC)+anX7lxN|pWr8*A)!^V&gC;O`12 z^*pv%Aq~jW2}^86%-ErF853J6+N8ZuQ}QtO5-nyHG4wHCajURl_C8fqv;?>#vGQHM zyz2PkLYP|;#9bbgHLb9XK10z}*jrJygJ!URV+kNS6*wR|l@1_6Q#Bwu6;kY< z@%ebtDF@^C@60-`R;MESv@M3rYr#8N_>sb51N>tUZ>=8s{Tj&3!CH?2dTd~_)>D(M za^QXa3W-Sj9Y6+`t*?qLq*pxhe=^bwIW4*cO!hguxJNeB=rQo1(W;>p`7kb&H1B_K zEUp^EN!TR-SOfV1YhcY-Wui}+UdMy}|JFdafw^lAoK)@gN;K-+30F___OqraZGN2tvIB$ZxLBVQj zqcd)UVGTA0oPUK0PGenT*b29Z;LZT52(J8*5m;l`1`9-ClGeBkN>`2%1rgzK>7Cr~ zLj_y!L9SF-4t}8vyIz~4xVJ1hd|A_0XtUY8dQ|9Kw`OkIYtXhJ4gzk3legtF^0j-~ zRN3PMAh<@f39FEV?1c&Ux%Jl^L7;i*maXpmp7)C~=kJCG^xQ!_nB)ar- z_4dCb0~bAA-?q24o$G_=*!a-6>i?XBMRE*bYCDUrAJtyB;V6b~y+;k;krivC(>W{H zXzFntcpz8Yf!mg~_RyHL0D419@_A0)@3SK1Wem7ysnem{3#` zUl_@oV^8+^`euj^jQkj<7WGEhGjeC=9h|qpuVvbZVuvwevwg767%)g%!PIjI=d$BijDl`GpUc?j|l4lC)p=kl6100$67b}i@ovlw@+4=V5$zI?1TPQ zzP?XD=(O9EXY86So&m6R0-1RJH~AfLF;DTFOp?SwzC|ClfU>1|tMX^Qzxu5n+&%BaF#k~37q0OGXt;MZNZW^O%Cr7s&*pe;Lm0E`){_-)7GY z0ezfZc^QJ@O}jdrC#M`f(a?@v0yJ~7?LZPdFTKiK z#^Tpx+Rj>)SKMc9>Q6w2X57Q>_q~FR|z{bt~-;LWSvMLya!;ms#ztgaC0f_rSd7%HM{ZKUBr~ObTA6%P(6Ml?V7>QJh z79@SFY_$>2AI0q?f?CCB(aXez5{a4qJ_>Xixi>608G!kLDa^)kGzqXb_jVJZ<;C7% zAxbhy{sG-MkH%Imx38HHrC*9Tk7qcxL#G}zWNwf95e=RiHf)f8QCv;yMtPUif9IlO z$Bv50xM_DSJo%n|dN>A?On!dtSuh^ZS)yk{ZNU*{++su+H4csVJjvB9c4{&|5_|p# z?;XIBlY07z0#v%vDU8q}1{)e820N-*2tG(-i#UiZCw27$B>|a_{uPyc-qK&76$4TY z0Kje7-4jCr0JvUa4w^nxMzMZ6lcFFi006gL_g?@GD17W94iiDJ8d^>YTx!*iF#1%B zh#B9;Jp%tK_K7eLpC?S_dpFk=~1E!|lHT5$Xhe0va@;89lcuGe3Z0-VU6x=otAhrMr z|7l#shj?2D(EK#MM9W9NPL*E!L)fSp&(EL{A{XN_3-6SVo{JVD+`mw!V1Itm-yq+@ zc^#L9sr3SWZL<#pB|&0xHkb zc zL7d9u15&J5*IJE1(hQ{)X_gNS{5*$MBch7LmvX?flhIN2%{wX9ESz2wKt~}13t&nBst~rVPwP?D zaNaZ;02sF(fI>XVsdsC~OzLIVmh2OzQ2xt%0aYXc)VTyjqz~Bjd_buRZ5$PeQj8Ctt4v|byw?W`cyzw*Jb%sV9FnChSOwdiOSSn>EN7=r2k5C zOkzI&D`vH9RZRq@0bS(K-H4_?WhkvE-u}dNkq4FZyuEAhU+%o)IS@=4RXNhd3K%UX zfUiWYxs@fjPup~^NzyX%V&|6viXt-eN4L8T{**{vLRQN$OqX#siwfa9XFBw?;dYkX zSEXSf`Ru@+f5U^)0Jq_vQyn?i=v}0ORxh}ND-3Gmnae_zT+XX|N3t7he||8s>X~*F zXPSD7u|wEPvP0a)I%M0YFSo}+?l%Kr4Gw@?#j;xc-2Vg1&!s0A+md)MLTr_KneH%M zLw1uo^fPk4VpCz-^d9sk4F?fJ+(l!zYz*JOlavZf;@oNnjiKbQuU2w)FO_K8v|vNG{Hm$SCQR zW-Y(g9Dx~xQ>yf83IqRUG6O#swJ`v5G&W&Gnr?vfQh?7+N$}uP80mbNUrzAwSb7)d z?#eol!u`XxN#f2Db=u7_`bWJ8uIo%oTlVi6;i~Lk0{gNCSG8(xRqBj>vPV9=88zG)Xba;!aS-KgC3NTHp}Ok6omw!}`mD>oTg7au*rA)^xr79~RaFE<(ZQ}17j zV{7jAGO}0bj<2_+bp+n!P5{9EZB?UIU(lv{-T{D9gaU91&Ov%(1UQ|JAy0F{i^rlYt8S~HHYTIG>vuY1`a z{#>gCTdj_mW8#jsKfJF}4bipQRt?bo zoOrl0v9zkrTT?XiUq>sVx|IuvlWUMO+YCjPTY7a=AH34~TQNaH8Kl#aS z7>ei14F$+`syvDh&obqF$};~&%ChoJud?Nal6l}%ig}e(@A+!biXzy0wL5XYV6YDu z1(>ingN?HqQpCeznzguJtb){Qak)6lhz%|89E71*3J*`AC|zqShyWNHk)Mk|*cMJ~ zE`yU-&V@KTYFciPAh~qYUW-08HV?J?N6aGt?;M6Er9nkwE<_B^HTK z8Fw}6dx{+8s{eT)7fQm(z&fDbK*T6z1Zd1-B2F66TJwdN+%rIA0kvoWu>sWL3Lx3_ zMEpAqMEqH6aqO5P5p$Jh_Fm-=fUf2Ma5E18ZiXq#gER`j&8z{q8Ffs1RrMnPH=~P` z!Qd267Xz6Sg+@OWn)|$3Tq<+>3bKJD>S6@9SEIo>=+5i$c|-p@CG8#CzOAClo;^Qg z=a>r1m#ZScMh5osYxQv#FNm~LX0p)iA+&=RcP3yk8L6lkXEVCnU+7TE3LgiP$%CeQcgnKjd0M`cm5)@f}xj7eO!X*IA zECiX_Ve)-$2j522H_+`TYhY(^h9magF*f6g$iDkn6sUO7lD#=4tAbLM!c%J&Wmil` zVLXuVxAI^7dx@f744TRc`LX^I`o!*KR-$NDGa-{>4mQLn24hi^t#IZOQIqW04n+Li zMsQmw&Phk6hJD@I3`SN~=$7&lMg)4DZ)|b(M;>+_v%6A((6I$TNF1+W*UCv03mD|_+wI4hM zDeLv1$H=do{NU7)EcBgg{67I~JMQL>Y6l2jy|2@bWv-p#ZEEK?gq}jyjw@> zTOL;_Py1KQ>s#(c4acu385C>%1itYqwu6A$gITJ--n>-lzPoj9dr|zUq@xFe9n6f; z3u}Y(3)6#A(Ws>}``A^boXC~#Ex!z;pdjGQkN~w30wou%oo+ouz?>t|Z2e)1K)4L< zmLTETT(~bllrK!^0aE9-6597R2{s%yKesXaoajRk|I zAq??iMZFqYK!=_d+E*-ZE2bqyzq}DtA0-3|17u_yn(A$n6qzkpJG}8j-XSbhjtgZ> zmT)+LO)ba4lNX&Kih?BHdOv74z4MG@eO7FkHlv^3Favtj&blttec|IDs)@#!Q#AZCfsS@#hhI{IJgHzxGMkQk-Ncw}^t>$3Obg^**tfg^7 zDpEV&=au$V6Z>{VtTl$bGg@r)GvF(JY$|q#kXmm5dTHLmK%?@(p0}yzEUUyNYlC~F z3T9@i;Ml5CTD^5jXRZO3_TjEXeJuhsR4G5#vq{Z=;6U?KvC)XqCOaSIK+hJb7}o$_9X!1w_nW` zDvoE@gB-iY>EMNjX|CY&{tC@qVnbhl~r>Hcm zR>f7>^ba3Hh4k))dc1T`kI_P866~JGbD?{9_%MBoqDG3MkV!ulditBnKW0JRh6PP+ zWO0yWL(~mLzhW$6w?Wk zNNqgIn3&zV%0eW~7*W(M06QRg8gjkalUWTq4b54#6bnny9wq>)A0@d}{?XfU22Dap!(F%=DE^qp#5TM6m)28Aq-IPH5oCHTCu z-{$6V(#mg}oJCH)4180Hy_GhDQ3 z?nt0l)9?4-{vffz=0BYwfP0t_h~q|CdpUCJ#=yg(DYbO>tjI~_YQI6J45;ewKr83; zW~SET)je*RZc9KlVOtCsY|;Ry?OU76{DZc4CxNGQL1`B>`)oqbP6D=mk*lRf4;O&9 z?U=krJMvO2m*{z|o#4MO-bHpC%J2V%8rx=-4hI7F)SMKeBu-E4XOPYTN)#^8m>{ff z=z5l7DWfRgG4#-~q`*exn$z@HU7snaeJ9;GUZd3={D?ofdCV#~VLv-PWoj5%LywX% zP0+eInKO1OC57BzBDru}>b${!!e7(aVm-DAgy`_1Pq!|e?FX~mDHJZ75$o{4Y>}Dd z%?GuZ9uu^_hka67;VF9&!avPdG7iGis#uOXLuq?WVAD$Q1>E7g(HJk~Efc$;cP6DV z9K=&Qm|%V`u0?_sfpBl&ZG0D-EdS_sqN!*yX_UNaDB#RCu}mFke85NFD$LP;fAS8L z!E>M^QW_6SZu$gF)NXJ&k+E2=r%ILB@JYE`JFJ+2W36&CpyQ|6_GjJ>=C1?7%=92l z{Hx42dqC&%Isfxk@dB!iSZOnRB?xScJtoEr&F*7VYsqYdl1kO(t*s-HDzJW}V@L|0)F+yclb{#X;9GQm-uYgZIX8Du+xq^580pP2wcjBarmWU^39^dr8e$jX zrW+B4fYQ%p^8qV^8pH(#Rnh+S&Xbe`I~_z19(h@TZ0}BVE3_iTRF=q3!Qpy=01DNg z$Ad9vH+tG&9M3_A;w;7~)i+$V+4*BGsu6f_l|9nzj=C(TE>`{H(|C}H&HC-BfM`kZ zy-npT^qAZaJ2=1|mA|XD>!YD1)m-)>V$u*Jjo_jv46CMh84`y{=5>$R;+x|(A-CeP zoBrlFdl#7*v<8sI$tGh|J9E=?zr9MM;dzUy=zi3iLCMfEj$e(TrDV&{^tIFOoKzK1 z$7r>2YRYH%;ytNcbx)T1(xW88SxlX1E*$>cz)VtG^l%CMWN`z3Sw=iE7qT|2zm4Uk zc&bPA{eBeT$C|9h?%C3iD;boa=Mmrv6+>jR5^@3yOC=z=7!;EADFQ|kiqRr|1(GzU z7!x{2G7U$Vd)J_3yP0MtY~8g0+8#+2AR=P^qe#Sdp%exgz>7aGhMjLa2s66Ikw~vE zczOs-G26hC@7kp#gIYGVCoxy}gQ8-?3_l4&nO;o46k}6?BsE^LvE7}|afr{Ja}JR% zmEKs31C})Lf`A;{{}uy@tWioO!2ZP8gWoX?#79 zMP)TJ7M_Jlv{ha~m;hYJU+5@LHHuNsp%&}l~6*dqux6c#QBlN382qed$T;|eZ# z+C{9OS?BC?w}wQHlQK>%g?N3?@`Yng#z*Emh_`|RlOXx((8$aM@9$@ii7{$z>b zSl^F=_DBC^5PwNbStS}o*de5((P3BmerfK+`q^k3X40;=<1p{U_#vjZ5cNc}A?-R_($1B)wx_5& zF*|wR_S?%$}WyYp{=^xO#MBbU^TI?f%K2dtB2y>1zcs1WoTuNF`8Wx zoT8qtHi-q#nL>GhkM;W*z*ls+t)kK)TwvW6J%i!l_Z~fIrzJNT4jf95g(DXw14g!8 zi!gTK5R%4Z9a?tf5bdL_05kGjr@MWiQ~46ZLUm<>;a$xu`W0dX-hyZDM9 zB{;mSWHxs38QuM3>to_%|9VvX&k&m zZ9eVCJ;IIWF7X=>nV|Zf(I{sojCn``firnQrdBAkvvAu0f@OTfLngtK7sip1IkRnG zLL*y!-$E^r)xA(v>a;9eRyfmq(%*)1p%mA||#nj?mfNLIa3?zl3o2P*@pC5u)WO zTn*|_5E)7W!ewh>jpa~O85QGRwq4?3RGDVcr0mE4`W0VJDW`9H{tI8onx@q^P6Iq@ z6jA1VIskCCD`X7)o&_7EaNn32jZZyVuLjI@NL-=2^H{Wo^-S%d7RJx%#Cz(klamA^ zn;l0GAET{ygZjdQRmpaKnPF5Iyh&@`vEDCwP>d`|OdyfwDU#e#p~Fj~1x5Ng(dJ^+ zi0LC5z%SSG1bn0cfnY!k>wG#1>qL1nj_DWd&q-)32$f(ud#=Q|h zVT=nccL+e6>x8rw5+y}a$jUAir!(89>KhLmLfIg*LH>8FSOxzeg3YG_HrmIOGup?M zi)5;<{uvu)$rl%<$ro4lPYMlew2meh>8!Q_BuwZ+Q6S=XnY@UyiJ(_u0ZTp&I7Ku> zlS}SdPW_|BFJCXGzGBS6IM5!N911WU?c$00&ArYd=s8WB16p^GxIzrbH^-hQbpJ8; z-3=Gl3Kk_qW@ z5dS8&lRBytl(}D_>7LGS%!*8&Gc-+`&?1DZ{(Ji1hggED(50S5eNrh75X&zm(9=3# zX0k)!!RWJMy{s7Ny9W&`s9TQ(+4p4LO6Vt=B{kN8fu8`*!&AcGchg)$;KR>(6CFSx zn_<%xHIB3siiCDvtTkpjAVg`2~`1 zS`qxefhK8=uDsu|hlaH!%xEa-`Hb?qK*)hB`Qq$)kthM(3J_e%$V`LoAgHv~KL81V zO6&Y51&A9s3XrTHVeXG`W;4<`;T{^fQF0MrH2I=ImI8Mqu&Do1V@rCmLHdD7NcE7- zl5VU*DAPfZ(yP#NL3Y3>1Xg(hq*r?dTJ1Y4dO&P@(D0w*G?AaR*c{JeY*^?=sJ)Q7cI4@B6KXc0f8YK$wq+stgP`DX{ z9E>|yIQIuJ4lGzXop}mMzCQ+QE`}X6DuX>pI7$#FPmC=OJZf*pJ6X1V?GQ%M18REOZg(xF1ezF1~3UMSx))BC8B%5C{W^hjxHli{< zirouI9sLA~wt$QUNSS;joULvb%>J1qRAz8;&sEz^N*9C7;h&B{EJBL5MWCVMTBw>IE*jl zSq7A>Xf1@SWcajaYa+sF)8W_yNfIew_9-qMCTiX&ImgIs@9vfzf>}4()F}?NDrsCO z(X%I^aVisv8xP7P{ZKToQzSW2vbboZ6lexPGVKu9e=41?((xVJoUEr&UlpNC>RkB&9Lj{@$d=)PfB~E*&+`JU@QG;^6zzLqW}geB5NKzRQ7# zeFqnj?2`Fr&>VUi*i=|^4JkvBHQgKo&+|n1CRX-~menGKOv!t=zBtN9eo6mI>JDze z1F6eAx&`9vxxybw0AUnHs{QG_!z+Ia;m@^N`@_9fKgI^x9^_7lOFZxgw5L->==OWz z4IELvWS0mPU@ z77n7Hii?Kd&KN#W0vQ!pVX_tajb}J{CM0rtEpsfyxisNmspK6vxlOUF%Df zE-ErBzU&|kVse=#pkzy@3^PwmPBr5thVv{X#{HLqhaC5;JRsIu=L_(F&C02SNOz3tCFRVMFJ^np`T6RV4VbAto z=0zNnJM&x`gG_J&XmC?a%pfapd5C!QDDacN>NbFIB4DL!%?UU{mvh!*Tz1{UEhGhD z8U-5))IyhGwF;p^HGt1$p`%llDfy3!rmy#%Y%-l&@ra(>v69M<7$%P$#Cj?uNGIg_$mjXnYzYw=pelEd1ULK@_?xObrz}j`uET0!m~tb6E(VZN>rRjfxF@Od!l#r((*N%rwCQ z-e6gDFuxW&G<8P_jS>qvz-fGLjKL6sL3{C1PA!0rJ6Eq{3n6&Z6Et&;scAux=nGL{h{2svXS_6%!2)sAloU8i|P}MT#5VCFT?y#PvYLk=?b-6k!Mp{VZGrTznV5 z@-zKWh!h<}KthPfJRs4;!gg6ha3Nr&455ZA;PdDyrNw*x?B!jP_v6s|cms$+FaW%1 z2Ykw~uoG<>xs*v_=@H{B0~iQi_Px9g#Up-`G|0~FBb_VFAx%e_%W$8E?QmYuQ3#Mio|)+jeB=pH+P0$ z$i*>&(!g2l782t)oP>rUSkG2zf_Y8)dNcBr2e8A>>UoU_;C$x3CbY+9h{Cw$(>v$d8gpU0q0x^$$ zR|W202=8rv&M^|0rgQUp*!fc-AL5TzgM0A@8UtLsiYkZQqXo3Q;Y{Jyakxt<3g|O= zkC0tl3Ck$x^ZMA{&SNiM{LN8pZ%s>Qr<#mF{p)pzh79a_Y?04EG3kE8IbND!1>mce zL4TBTWkr>@!gB}^(o<<9TGghRh^fQ9G}eEq~^5BMCl-CVooYJrTzou)(<~5i>gfk|7agHQ5fOAYFp>j?XF4rq;Y&Da$Q+Jq3A;=|(_IhtOEOexnZmOaT4qkXJa`_{#ihO6TnzaUN8SbzOcsze=1Wfmv5d+h0N#or(^FxQ* zw*31@Uh?6azHY`X^c}a(a_$9(2ocAK4H@o!{5*=p4w{m*);3l{nBB6V%SSPuR7lnC+4>nBO*kVD)~ue zDc4+j1(8-%yICq~b|b2uxCMh50mY*`oNoYDo}RgGIE)u;3rF^am|51de)yzps&L%b)IT96a=!h3LNGA#sv0?qsbt30~t>UHf4$k^2z|O443js zVRAd>TrOwo*gn8yuxlOE`$u1}T^(UloKQ3PA0UYX8*JPUub(*^{?UQi{x^c7c4h>Lz3Xa#rjj+B?Tj)*oH^DVp1L=K`UZHz>%}oX);-BiFDq- zJUoBh4m7Or0Ky&{%1(@rQ+4qQ5A=^$M|AOK)qArTePLkgCDiCRqrD`+c0&Z4fK*G> zQ;<5#lSgY?J>Xnqv@!)pLbFE-{XE;JGca5EHL~3 z+)uzup(;}(H56MOilK9<}P5HV~ml;-XBPCbJ#g z=6>WX#($6$bazCj_gTSqx~2DoUNIaYw^7F^@Pa8dzG?Fc*|m#D2=Z72{d5wW;o#vi z846myzWAMU{sBqz=)B@ptcxf84a6~TjfeKtH1BIRa8#sYhxTGd%Vz13iJs~F0Ygjf z@jypg3igFhOU~g?g}%7{80wV22L@K)(+eHm^7}bJ!71h@08ru?nC$z_oD(6tHaec2Obd&hqhizo@G(oOQ%*eA+Hr(?g2I~J=$a;E;qw>q*uP0hs7*B4D92ezi1>> z?7@{|jTAZN7=6sVkdsZ23z~E%F2^j-LigJ}`C)H{H|wL9oPd1VT1P%F2=2ny)i=nK z(tzy$m#t=}`+sGtndts+wt6ets3oeqri5(;S}jiO6SxnUkz2b>Mh_pJF2k+P3?lUT z(;rM&g3wv!@u6{J8@3jF*zu3E1TV3$4lN@V6`4I4yt&1p6eb&@D8GR*^v-itS%`Wtlyj^4UBZk9Yk`rL_eST$`)2m9~cfI#~ob86_`m}q0-9CkQa^bV- z#^8PXKy&Tc*(H!*^L}}~7mSoVT#v+jJ426w;X#{lecT@SV*5V4c%8`h3YU@`G4Qs5 z_#$aZtSUgABOl6kP80=Wu0Y)GseYW28jBgj_Ilb-w`oaM+CP4OxIY9eonUu=M!ny^ zh(xfX=cs7P7QCY&DryS)OdF2M)sy|1k?n@b7VeFgY<-#LnL0UvSWx1ErT`{gl66~M zFF=GrObQqdp> zgn7b4h=^$8N5S;C*!f*u^hW>&7cMkOM~cht%{8HQ-RpcV5a99QCQ!gCq7L z${f<0mQ;>f{{60~qPLS!1SEZ_Izp8|lu5fZtYf=v

`ph8M~};wA?zVn~M)fNL5h`d}OqicVdSD+o^A34|Gq%5FD_1 z?_B5^nOzN5m4%*txEVzD`6Be?opCQb6(Ilf=&uQ*Upih9j(9FgIlSvHMdE?x@ae4R zo{RDen~x>(4Yvw`JE${8epnFzs{Xaz&hvGo2Kw5#UwsQQi_B5ezH()@p%sLNb|kTT zjM{o4eN)|m=rJI9Mpt0-!JScyNzttIX+QES>bOx8Wc{vNaBzJTA`(Rm8qW1AJ(O=p z)Bk(wZ+7S&Kl{^o5NbU!x?_{qpEcV0Uu7DyR_GKumczZMe*3eA|>&8GT&@4dk*eSuZ zGa#H+2&>lQCdLfZFMN+l9zqF|fnfbNCnn-Va(9C8F)i!84b+x*1`DzitE~r_-x`qr zFH?b)Uxmd9wIDFumq8EYTp1tYaotWBJV=99SR;ys@(;FDYlUJ5+>I|t^oWOHjf7*2 zWzF+{65$Hy=Mzs=N{bZ>f*H69su*AkmL2;|fPR`z3h0BUqcXEwFK3SqR?5e1Y0O*) z=p6l=V+&AIY>7+y^uMQpI_x*SF8HV7IjTdf(AqUEjH0Xm9!Z zaU3?L`?E9@j%rbFb1~yX8|c=x;hmVK!8hiVn%tlH?&K+}`Fmo$ZUM6i;|$gF`$rh@ z8624yAc9N5%s1gSjxdJ$SC$YTf9s@91G8wZG<**nX|~DI2DITJ4EWz)k7@Eq?L=Mm zvHPzJ*jo;Ru2mphp~t^-iEe9tyF92Lffc;xl%SH`&9?BqYk@Z_IU-RIU&pFmpDX0r zY!@<~jzEbcQ&$B~oYSg6pv6+**KHHvSA#h$td4oek0(b!G<0l6~-AFn9s#2H^3RlD1_Bl-p8L0+gtA@y@*(a zsX(x9S0L!YB$rI(4I#V@7%9K&9a*di9U3K`quKJ6Ju)#o8zp2Rh(s$EJL#j%l1vat zqgBjB4F1khPT5NlX%!gc!#ned(I5*TI2}n}n9Xf@Y0~-~bUE~I39rQK zHauZ23_0|F+PE_!!}PEANkI%->2ic{I0q;aF{b;^u`pS3?lz}N+*Olv%@xtg&b)t{ zGRo*Yn{XK5K6IAg(8C}_7-Ee55ofchDnX1&<)GoF4<+2R;SxUGa>ES9xV9MjC0!pL zCY+vSX`IMUnS`S_*WN{1rP{X(SA&KK#VDVw+_od1=JLpJooL+;8* zU`&hjS}}|N@tQtG5V0iBi$N_7O^{jbwJA5F-Z%bo+p}W(HNk%PFL&W(2K?P2B>1Y2 z1qe_}ZHG6%2UL1gsSSxe==gzcGZHAB%{ z0)-(1XIn2?@)&TekI0ddA^mSZT4QXs%4*n7p+Pt| z0$Y^Q8mdWEmTjrs)9we0SQt$=Ph0i-S_(aFmI4yJyvoiW>A~>FB&+3KR*_#EAK6`J zdL=F;7|-Oh9Uy)Z6_C6p6;JR1Uh$Hb>*O8|Gs|BlDXrC&x*$_eLVLg&>T`YyUXtMh8s;R5+LY#hm{Q#lW&S5kI|Nm-c5~ZGOTB_zjBqT zHy3P3Ejn&1E?1O(VbK@v7bzBhHsGY$0dG)%cBW-~eViGQNxH25jvcH0Nl#j3`pn$U zH`Y&M#Xa~$9Vl(9P{}Zxf2ZRg&$`k7lC`yxQ2`tNtxW*96e?`_sb`>MHZHm)h%qXT3U0Otlt9ZLx{)(&brlRe`9{N?l7*G6!l$~~{g6uCEE?A3U`>UZOX-)ivhuuHbi3aa8jO{( zw@GD5<2I4e_o|T>(N+Ue@8uz@Lb09fD*aiF1J-_z^}Nm7mK0(Y>)X~lbu{?)$A(tf z7U0f4W^4A@G}=F9IqT36fMD(?dKV0@kBz9_x&ar`;hc=eP@*CGdK>A5#)lpULsp0m zPIFfT-F2dFy}p6$PW>1sCc{^s95eTK$IWP#HjT1v-mpgaZJqop@W2e57ryv`n8)_v zGk05r!pX8wm0r01P(iv;?p5ED6Aec=!y8h4AgbWz;2+CI?N+2eTgP90FoiP+5o&@P zARTh2J(Bo*GrCoG5-3VVUq#Fm6Iyb2mfO7KBXNAJBx`1ZWQ-uX+f3BoUX7f#Ran>r zW#&5Uz|^KsW%m6!TfOA67z}_bSllk1C#NgnR;lhRY&7>hn+7W+=nUjN<*y*9<&=%? zpFYs31j9yV?ovHv(i{o90=kd0&A1Uv_Ulb%%q>p&-=G8%f>`V*8)>r_*&bmt8E6E~ zDI5+DEl@OQxeL{NC)w+xRb<*1)MLQAgksIO*>|9i@gefWF?pXpY%y$~f_(S6=ov2g zUSs3y%(;4I?u#%IR4^&@S;a^Da9}X z4U1SVh8Pq3X+4|tVB9etz|9nHbl#lAmWtoOrUbPZc}?q}CbCF?jpp zzz9W9gEoFm3js6G|$iwtL}BI2-CIAy<10$!7lPvVkIO?3i;IiM?MqTj z8P+*HS7cZjn|yorX!(=jN4AU%v%L#a4cbxuhIoxuJLIaBgIxQ6K7|_oXtp{a(`0Ue zl61=RTog$hq?K1CXPwo!Hw!DX9!-p{R`7UdrG2t<^i=L<2J1dKNUzWiaJ=rPd}e*z zFUV1eyxYtrB#Yf>7~R$AObpL_Ui5h-r`IpRgulvf?J+5OXpKHe!Q%~GoVo8a#ikRH z7b`i!t?g679W+jAppdg@ML-WNH?Y~a2mk5NOs%mH?rYGL%d$KgNYG4moEwi+wb8#5 zrG@8e0~@k!+P%3zD}EV<`Z8;oyHkYGP-v{;S%c<5j59D?6!qM{hsdFj`|b&eNQ=1J7Ej z&LY{)>CL47Cwq8sU##1@1l|eZD*7+zpK9q81t3baFwYB-6iG2D?qTnS(go2SxZkc@ zztU%3Q(5k5V{2qgp3tujf-MekYevX;&rc_w-LIrf-c8+wIP4Z>RW?q>XSAfS)8=U) z<_a-?w~PZ~3XzKbAI9D(%9dbh7j4_NZQHhOuC{I4cK2%Awr#AoZJVd}{{NSI$9Xto z%rB}UGApx2%^8)mDl+5S;f|3-R4h*CXkC}LK@ZhR5-F)3VvzAGtw$uG%J^O=_cq8j zH+tu$Rhre2#R(ZYPAlVkUka8A?Xch5bWfNvtR0)GW@G&Nnos|Jt6=(S6g7QU-I;id z6Qo+?KPiyu&1`1+O5&e*glD5#tbOg4`9Xvpd3!!-)jf0kJg7$R^{@SO zfa9H$;&7Prr6A<|s{?t(!JS|m{Fbi(NuD#v*T=4|Wc5e~(h(F|QQGfe&Wa4HdmmHz zCG0$>Wg#M0lYD$;EtucFA~AHS72bW>`7-_Utizj|uv<^4Ovq`vg^c!fwTZ(*Hm&y; zB#p^WHwFT#BhnlUp0p#?im7pFs6XM`hmiib8-psOAgJ{Gc^>(2UkFYxCPEB{aSSq& z(fhs4edl6#lqTQ5G9Amui@{{BAiEbpw!oMqsQ-LY8L1+Pl7%^&a+~$K9L&;_9GA%D zt8$?R9|}bbch~7Sp;asf-sS5WI($1i@DQj#oE*s_V7LV*`<+>q?T`NNbMN_uNVW#) zP4}Fp?1)Z9EsvG4FKvO9UIRz(ph~(SGGdiv*BV>*MMt@gH{aur#VYxJqHAv=h<9Nl zV91r_pU5B__=1E^X(4HWBCKByG!>?Dhaw!e(4{QsZ4dpk=}X`|3_>gcBCY>WplQL} z+h}$3LWnKN+`R49$Gk{Ii%%s(_vsh!pWKe7`K3PlFvQ06E3)=I^O9tpmEg1qFXKe|5BC|% zNdYt@!2CT27r$*Z=0G2GhA1NCzqyMz>go5oYL(2VWqlWaZ%e_LDPJ4||0oz2_AHaC{~5C*~woa~!k$)34R~pcijpA#HB20z{)3Upy*eCHPyD*|6F7 z3|B`B+IcTr^}sob+CD%ZI6j0JV`0&GA@9SA%y1pgvVsy(y}~8#i1ktNBP0^Y z6o0e15lPEfj)h7PKQoG8IHDphs#i#SAN|>eg-LZu3Sex$;(>Xz0mtH!Yh{LtKDjy^ z^#2Z3bf$}Ug$ym8>n}Xwn|I$aBoQ@PFTn6XN@xYzItRsa5%chF|7AU^wN%Bju`Jf! zvU*Amu%yL9URdWVwM`ANAE&`TF3~hgy73f@44&#h6`Vo+W(2H-i9OIou0_h>lKqk)9pm2dV-+3yCzy^)ucDUwMEL@~qAa2IH>Eq>6zx<;pGwf}*alRr zZq!Ch)MeF@kpGtD#P`6T53n9}XIiP`Ap{sDsqcbmuKPIa?^PBfQ74`ZH%HNd9XH2i zzt+V$gKmH@)Z_IoLL;!i#UDxu90TyMbY07T1HzH|Vs&`AK(l7<66#NvxAEr4ct*eZ z;$JlY6Xzqr=qmYP9Y)4jP_UTi{#s0{4p#P~!VYr1G=N&?%+>*mAW4*=5yJJ0CR~If zob`}^L?KWTEXkLg!yTXs6%owGA|TE}BoK+SUPB<>MgK>sSKqgRNSKlQH8_N$xCO8B zFK7jr1#@&VMuz@wMr>5vX67h3a}oD*&3}KK71-B53>mP$j#P~;1R;dW3KAPNC4T9k1>bB)}FvmtpKV~Je6O3bn^`8uFR$-fG*2wRTatlM%Z;?`GDs`(k&H6e*w`l zXN$XvW#6fZ zyvAa)3CTVnup4~%iM(bJ4fw9*)I8`O)oK2V^{u4hQcV*zW9o4vVdA`*4eJi9mdSZq zTq!6JCaqo-CS|BeZ79EL%2U8$t$$~EN!mBgbu78~`=X4#;Zi>}?hL1B|Hy$4!B4u;h~^72&^i`QUa)CkMig(NR?Ev4=n+xtneB1o6ZOW zRtFLFzh8_a!nj~eM4xF~Ax$IbgcJe?Ub^{mGlgfKF`?M-D+)_Z5n` z77G+>mz!mUFpFi?GUAml*{z!31B8uw!AXBiWpgh`DFzs+RZTcn9>ot}D?r`57oc9L zG8Jh>e@ZNKAk(x$2K3XOD1$rlnI7D(Xc!80p+|e$^=7?Wbl^gzsKSHx3<0Xf2-6c z8oDRI3`UuxXXYEJFACfM)kw8@0_|Mn@y1jB&|wm@R@5ny+L*18%C;9cwn_zwf|BOhgh9yj=+ z)0tO<$dy0qpAJx3w3q;|6<5m|^--V^JYr|sY-HS*znS!Sp&@4iWUK@*4esxhx4=Xr ze;TC{J5$8($>|;*B%_kG1SDo*4N6949m$9ckC^0i!+xm<3s=Kgf;~fwDBi`U;5j?~ zq1@ziKm=Nb%eP8TjCxmQU;_C->Dy#@;>hKq`QJ&(|EiZ~7=@~bjj6OY=#&0?6`Yu0 z{^xoK=fDic$%p1khE@;ksxE!aM2P@TB^7q3MRAP2?Kr+%34x2a^?`8+k{C6XY}Gf*H3sqGtI3oAaR#e;j0c!H3)}f-BPP}HLvH>#&>EA9 zvc2MAM?agC%T-;BRF>PSSVRr8bz$HMZi^zEX_$?3?jg*^shha#s#tsGug%;3*LHLQ zw^7z2&bMi({Uc!|$}`xq7NgkY9%^H}Dduv3YK`5+5Ji}4xUpZOsecBu5!!W*a^hv6 z9SpfKcT)$u4%s5eJIGe1UI#mY*&?`REH1*;&lc<*Xan&EvJvhYY9q2`h%Ll-Jh-9_ zp_r?G+Wz4dfAf4ln+qmc!AL|m#P9)2NbO80OtL>f$b?QrH^uY^S4iX^~itsg%~$$>H=n0$+v;2@ETB&4X_gB`jqID$Rbj)mI^)&e95I9J0Ri zI~`vyepfUFkX<>ZgKpnxVMcBeN5ywsYEE z@HLZ8erNOyIP^6Wm%kCO$w;Mw&WIBQ-2o>`+PvbNH?W(tk}v%5Q2>y85f;ImIFxX- zomEx+`+S*6v_xSVqhpNIG7c*d*5=%pWO@nV@_r4NF%ei-yc&w3Z9H8Va}hCei!c`# zvs0+E$+D|N+85?RLOHi^$K`B1-N$cfVcY-i6Uy`ocYG%-gZhO!H)0p+eZ!oMw8ad( zQ%kVB8>;#93wI3bHkJ)wF2MeGfEDP_Auqb%=dr;F{B*B>#=gfM9qFIa7iO!G@MT+T zqj~c%z1n!cVYrEx^Q~Qbm3q@PJ5W8L7r_3Z?nSlvbPhD;laWZ<1vx{qj+et~G%$L$ z3iy3y7edL13Sl;0Mtg(sq7g&l(~@AIaPT0ou6=NJsy7pIuHtptG^#+*s*%jY2e^%RO3iK_n?+Le-HL$>`Of?e|a z;7*`4D9CLvi?g<{o{|xS6L1;m_w}UaaoxZxDOu2Qn`2=OpynABGVRa@W4-#ZLAZS}LRZ z{O7*35cl)_;c8L7b!R7tn*fjh>k4dIhvR&hZR4O+-`210^>KWkS;PC=q*^q}&FT)0 zMmTDAc>iIs7oY#@g|@JsG6*`1*Y`c{03I#xW_jJK^Y)GTt1~xz9E1z`Bw~F3fmy## z>-EqehBjTKP#*1Od!Lv6%8l!XnY#R^W`)$M;fe9Y!|+nKmb}e;ZZh;E1k78FpJ(SH zM0U`rSr=y|il}Pc^2LB-R5S@~^l$Ss^2U0nSPPG)_c!s!Ub_bymh*a}{8hpEzts-M zQn0+!0nhmddDL^yJ`AZ`P*p!Me)Dy2|pE=o-fN2h^$sPFsXKKew7{T+6 z&o9VU1%9njMoerIuADZNony#HlMdFL2aa+2p90&aEcx5+qQaNqwI>OnLBlm^E51B4 zq<$O>Y&U8gV_$G<(KVD%GlAN66b7&$Hwz{lU?)6SyI@oL#249vx* z^CPqG>TwXV0ipQ>Q3ELnRSC6jgbnlK&fN1y%z^Is)aqGDo1K&+_)O8j;=n;z;t7KL zgv?h8A^F5ebQK~ci*vM;0-=#*$2%7ak>9mczW8|7d8~oWQtLcL3XG#dTB$)6OG=&;28`8)+FQXeJ=rCsp zGw9_!5=`nr@{$K7rP%vOjD(pYjgSPLF*zrkVI3d!?ap;hWbBU=Y`9p^(68WR?R7s+ zOCLsr_>y^Nu<-@fuDZtQ8WuZ(vY|^nytxuh_{`26kcNSt_A#*%kCEUId67~Q*k*0H+^t zihoRA_1gM%VhRiie@nhZ$a45oP%^M!Ys|e|#z#{#wwenvQHu50g{|Jyf)WPewu)dc zX!pLd`vuJId`nZ@GTTZ}j`W@jStNt^tN>wsZw6 zbp%|+-{uE(WE2!F++8@f^Y19Z5H~y-3$q)JZ9`VMKp?=n0_*Uh`oAJ<9PCzuiFe@_ zf`N~_AU7P_>B*?bP%WHt3$U_ zJP04BCLgv_rmkh!jfW-qZWwW>dm2%#5QOK?n8h7-Rdx14bJJWrUrJDO|GnU3=C1(0 zH)qXkIXNPgD2<51@rmJnvoF3~SGB4QubUn;^r-U1>>XO`J5&aWWd|{)BRn#_(D7V~ z9RWv43aWecIMa9g`Cy(nG1Y8?i_mG@RKqq!N*nilo>S4i-Ug{Vn104n?(Ec)c{!o3 z=$^^|WX=dgkF;_I7i z6OoA4pb5ekF=n+(VqK6)6U8s@%0gY^Y1A#uxVJ+;Bz$7@GX2Cql1u1TJe0&IP(64& zq2t{J){LNUPvw($C3N@-*+8GN6!6Il#D9|jE@uT*kP0gt6PF4rA(u^ie-+f@!yHY@ zsAaG26;_I#ED^I6)N8|_4E`?j;CF9woaQg{mX~eByF#X?fjUZ_%4K&XRT~nVR4u>uu^K#FWLHJ+nK#86gC;Bbp2=AG{lks{UUAqr zDL37>1r7pTLu)b$`n0ruSqkSvm;(FmdL0|f??zQ-4ZYls)h;hpRylKlm9KaEsMm`Q zaQ0Gsjwrhj`}$om8szS*oG3V)!AkFIE7vjVBY>KDXJ0PwEq_-YcH}cdt%C4v#$~r@ zT{2FYzH3iu8O^;$OfCkD&gsAqYeUPUp47Z?^&KHSb%(d3)$iLrP`q3|Y@&<)Zf{zd zLcHzFzWQqLoDihiI5cP0TeLiX)21(ykxWL04gW^oUo88dQ9trPr~e==%Z{RBh>VeL zB*w9N;kQHU+;APun@YM(+J>n$efT>>96~N4p9d94S>dR0KF^SNMx*} z){|D9#=FP($DnwUQQt@oid_Ra&v_x_43VqFUBrwtBgg3#V#}c|0>E=W$s=WDUeI0n z5QR46NWPhx$$8WM{b+fM`IBhjmB)zK0Lu1EQW$_mI<(Y4$P8|39w8i$ zZVh)hnCkYXxPE|9vk{!8o!e5QP4cJQJbYBPy2;tQ6x-{FI1IyOhR3p_Hv@ zR7;q;(Is=t9@W9f!gxFp>NtaC)wxb9q8Mjt6(ox=PTX1$u#!leivq6X4gxFkkd9}# z;+jpY;WXgd1>th5t_}^CwUs09GL!&27VGEG3jO(IRb%vj_X15Z2G+DnYYn;TN)F8} zf(-@-i1{_@#C27wWJD^y$VAfRp@`J{n^dkMFmXX?*c`TrYU4ws3zqAR5aAAwY-HqE z#D=;#R^0+JC5@DmbV5fwh(0JS0$G*a!WOJ;a}y8*o5DgB>~*ZuaSD*@2sBh_!lX`4 zc7H{|b+qZw$qOLp9Fxx~#`^ub&yt|&YfKx>El~BG(Iq6zTIiy$3rI6R6kHRkmH~>O zCB}|`&ghy{G|f-oMib)~;*1rdP)VYShXsbBhB6w|#ZrQs-FMe1S&if2_3fAx-^-cu zJ+qjeN<1@)HWf1_w+Ip*7M(dcI?@gajO-@n*}mvPP2=LRx^X5LXZTgfB*ERgg{%#F|onV?rJQ780C8oSV&i1b&O- zV@;@wge7pMxEv}tR`NvX9w$wgVOW{EJ^f6Oo_!~sbI>M+u6yEv|9;58rhEb{#&8sY z-%Su_I9&?UF>(4k@k8mahsEDDE^4+N#NNFL2~N%8?Gr_qq)1Qx5o zvOu2=U*hW=B`7{6gn(4CO%4>5vmm`yn~Av$q9F8t)GzGf-Y<`n(l1hI(+_tM#r-{`1#E?RM`po7n6u)7HB4h9ADIuuSz23&pc}RTix=GMAOR7 z+$e6@e0B#AD?UETu0#g_Yo?X@-{S+~U#R(4Ht6{a=c&~#`=LSPw-O}`Es-;d-((Dt zRsSFj%5amepW!8xm3hhSm!26%G;v_O68y;(?$~8LC-IC~=_0R0_u1yq*~4mX`fa-9 z7mond9u)=PG0QwyOnU7YZgpaDkTnL=#_(h{2G!pr4}flUY)fS*R$Gc5W8G?)QE_!x z+(NK`n-g}6^_B__APYefM~Gu_1kC`z<%XIGSjVvCh6QIbv&8A=7SKwAZN#k6Px;uK zA%@=mOAJe;?n}|(`FvM}$8s>geiMpYZpbmx56ycsK3e;%mI+&54ec|3CRQl z8@+@;-4QP7oDdu=TnC{oA(0Lm*o3tn1kNYAhlhlO(4hI65d262D_+u>J)}ZrB{@4! zxVKt9R|tW@G2yJbyW6|{I1Y$qt2~Xw8f|(eWZ(T>(t%y4wv(*;OJ*b6PGC^mL+J*( zW02)YbA?PP4HI}%_si4y3bvu5B77jvaY+cXiZ%eX@v4%duvsG2ov%k~aZxs5$|iCA z$)F1h_ne3&GM#1F1lv1lIF6`Pm?q3Q^0rnsjUKRm{(wQQwmXNdb}uht$E_;$;`>#_ zbR8!uZN!Dy7gPAfuiqqX8xlBvrNGeMZJxGSSfDFpY_p`nknaHZG?jU)I8T=kNovKC z9`CAu!TCGK%d5AbKe*)e?>xac7?zB$Xwa7#pr9u;QiY5U(&A&T$t+ zT)~6KpWW9{5tj2zq*iee;8>|9FTo(ZYE{?Q#r@-P^G5=<0Qc;xu(W=g!Yk(idP5XQ zzXu3rtnp`HTacgOnZGIK_FQtH-xA#fG#r9O5c39rDBJ)vbmk_AzD6X7wgnHK$356R z0(%1d!{u9S42Vnd{t3d8HID`CtFi7;jK1#lPsetj4v63Xs<009Rr5-1=v+B{CmL`Ttq5AQ}b{IkJM-OG*SpmE+Q4c!ms({9;zx#EFx=% zSzCgEOEr9L8h~?GfU^Xv?U57w~9Nq-*mfVqY^RtaK{*D zX2Js~>JsikjB$xm4;$1B!+v}HPL=*Qx%lhEGXkJNo*01VJ*lbsF3g~-o@RpV3k>TE zEfY;X&n~x#(d_@)GS=pgTRujn5e1m`>FR7A7*2>p~IX>$IXM{ow>%> zuQWo#ikuJ75J?b=?V#-|2x>=i;C@F?(%%u(#WRX&yu>ymwmXfn?I?81MNU6$%T|I0J2_}xAVaKDXfg^I+309 z_?I}4$yKzwLpp3xuek|Bq6bGguJJJv%be*tp>Y{|Y)k68voZBHrL@NlJEwR^(lMgf+YdiqM1u2wtg#a7H0FZ5WR0=J{@d%`27_ zD!zD7-n0epMfHiQYY zT973@D6&uTIrM!TBEpm~viNH65O{5SV}Qa>JjytbTNLec!_J*{HwZZ9g&#$-cEA7+ z7kQTSTIxaxVzIZh)7qcW){FILOQ$tq<%92D7h4qHyo5`4MQ%@a0+_=se5hWXGovC= z8{Z$72HAJKUxqH~N+PtkhHp>Lme$hr9?)$xecbS7f-pX)n_QjbCILd!N)k&KtN!ZR zdWGhs4Lp$+bnO{aArS0y!GmYIK~c!svObVrq4rLuJ>9T7j@Vt%~aO97R>t_@e^p>#l`* z!AVw8Hk*G?z+Vi34A35`nVY4&3gItvxg!J+Z%q#1C`An@K(x7TvM2XQ8u z_*S4JSJ3?}zfk-wU!eIjTmJaYk9+>^$FE8zXQx=Qx#K@u1L~9tNf1 z8cOp!PtNO~l4n`lv-#sB+TUP2MK=szV~*H_2{R3H*4ajK%YGAhdDaVQCI6b&-1q@XwbZwAu1oG zysH)Tu7#oR48f?2e}fNEj|Gt&-1gfzl>I}45I#4%iRMOB{>+mnjePVd*=l@gM;>SS z4;Pg{vJk>@)zz*H`LLV`G3ChLSW%F&8{n$M-H=<6H&qP=EZBH*4^}Xb3_Nap8=;$B zrClzqB{%I?#Aj!fX{ZM;cMe+b%k5^p!ntWJEYj^h-g6IkCzyiT`9ek zC}g@~yyp;k<5!EDmDPQVN|_Vz+Mzk_^5sWiq+s7&`(XJY&2P-}5cwg{52ZjMbE}7> zesl(&5usPDFHs}zIX@1vrBUg6p4cP4v!3XSS;jvAZ+01Hv?5rHi`sQGGIsr4Ox?vj zej?1jvckmF6T0`Gh>}i-z8}$e-GY8Hk!IsStxCe7)}C9f1XfM-N|VGu%`LVrNxeD) zOG)d}${-6>-LHfwi3drPxulg`cQ{Y}G`Yz+Wb8yuyu&$`vTXVgWh&e9OSH<#O|7zy zi!ibCIz`e~=UUVzu1VKRtdgPk=`uC-tgNyTLj9syZiT0X^s1OrZ*j%YGrf{^9S|M% zY*p%3Eh*ooS})tC`ln)t3R}^-`u>L^+Pkc5+o57Cd%j?dF<;xn_@+o=-7sp**031^ ze30L$3x+>3fs}_YY!@O1qntR{SVn*L2~8hMo}z6Vr%W~KtM|a|dWNf_IyX!9j4Rxzx`R(M z&-BNhA%to6-3#&3ZF&h4EB4*L?z86^5=FP?i66QvQ={&FidFN11P@vBg7qu@M}>ly z{EtoYe^fWBSF#%Q#|x91R+AUu-`-A$YSby({#2&jEng z8@W4~!I#t8nT}n&@UnMWDZgwht*x?d4P^t7kLq-@04fCs{In%zklAzw^}c;1TaB#? z4Mc8T17mmH;bq#rVv?^{>oGanz;vAN8-{70b4C=VWBJ4g)yZ^56|N!j&P5E?(h`#f zJsA#OeZfEju1Q}9PxH}apz^eQm}T0m`J1JDI$SmhCKDpe#enWG4Wi!iG1b|2Y^3X# z({Gn)75eUR%Ctb zWL7%wWlFjd{H(Sgd(yNYQz=-JwHCS0<|`u>ZE}kiHJ~Os;vP%cwtR>>w*5NC)vt4O z*~dj3#{I`R!h)Ln#g=)=j)NGl;-qy;@}`g4IMCTA;2N=-y@*OMp1Kq62H0Q(FE-z%FbbkdSuD#3w3~NJ={V-|qST z$uz;4z95v8D7vCjQrf;al$5ZYp~)y%HKe2=1=13d^WV)yMJ$I5(Ny(#{Uy*->rR2zXf~BNH!I_qf0?Yrsy4U`|xH67+^pIvg zGO{=}*)t>ery`1GUG9+F;@bLh^65>7-T$%kRmGJ~P?Fuzoq=!mkUTHht%$>6?E|?TDG=ADn?Hei+H7StFKsNhXKkKwsnFxnE2-5n+`?(4orhF0 z{Nn4H7Z?HfH&M z3>z~tGX8(V#@bOd?FqiM`U$hp#23DRjSP#rS7up&KmOZKG}3YXjX(IQ@`#B<$*QFv z*~+|DgIL~VACoeY4k<(^6HI(f-~Uat-5<_x^;oie@U$|?Pd7uFd9W|rxHkHqrOUN<`|y-UI5AJ4uvuD`Jcqr0Z;K9Keji8oVf-Qg z$&?M^*LEz;8R--z-s?w9v(ja_%~hM*=p*r4PY}KL%kk~(WD;L*e=n#0>GjPHU0lXq z+>Yth_4D)MD2|PX_vhp8!B1a@F~0@n%kVb}eehZcyCTD$eMh>He$n-S^q%v_a=bsS zNzWr+y(^+8HF>fl=~Rwkd#z=?A$7gu+ncd^-F?ijzZUs*gC5}6f?X#I#oGCxT`f9>jeJdm+P%bm%dT?7Q+o+Po0TzSmz1_T^PKvHq0DyL9os17 z(qek(*f`1CdipT+wSD}4S;mGHjWTDs1E&(9ur>AQ({t|vfopz$4MFDqO2H=7+}gb3 z1>wVK=>x}1qQpre9yu{$+@eExfYr&yk;3GFmY0(gv*C;uIyKDNkvJ84FWA}=y$Hcz zEVS$#2(C!~0IP$p*@&m=(X6S$*#=hNj1*p#@|Hld;+;rOb9gtY0spv^sd?DLG*wt) z!at0qw7FOB`{KSe%AqawXFxu?Zx4u(W^7#RA{pPgCEdL9z^-3i*^w;G9GRQiO3Qvt zlf7HD>gBq~`z5Ee^M=RIhyS^>(=9iYyqg)5#IMcUm}<;43koP$BS-#2M?rRMSat8t zgNkBg7;Dgjs%(z@ZGhD$Yqr*&Du4Ary+@`l@I0iaXp>hIR;XU-9IqHGKZvsard-h6 zDsoHuAHfpW@b$E%4p=;qM>keTananCam+x0(y46|nV~mj-C(ukss+>*>k17FS4bgR zk9&99knF&%^10lAS*Xs$R?;B}7BEC9a`yR3@xqq!lTkRp-smw#XQg~`XBR<)Yq{&r zYW6N%->Ub$U>zbsxPzPn4g-&ql@JF&C$zj!WbB)O9V^=RhA6)dO*_OtYllObC4@-k z@i@Y&Jv6(j$}qAjcjP@-Qs_wbe`bI7_SGOqSUsKZnn94QwoDWP$ETmbin^o-$g7LA zfZCmqy!x}n*A?of6e9=Xs6zJHQqHHZQxfkbQka+}mCnfTCb-gNCnD4HCbr2gQcN3? zlR+CfN~`^n2I<41CMN$eWh=P3jBfl91%cheB zyJ9)`ggLVmdht(e({MDiaqaU&`Y*bEHmv#z{{3|DGI`aRjA#^ntXBaf5t_16IUPjY zW+yJ)hPZO2I=q1n|AO$QQCq=3bi7E@sPtE7nqd|d!L3q(tG9_e(@Kg+`<_f zwl&n1?L5P|%=5eTAF!7;@yvh%$zd>2`qs8)ab+tuo2)vdnCBx?1~22;t@7((V-{iU z9*%!(qslgEn=TP-wuN2N)mMQgz6<`57L1e=dFm9)a>%#Hji!ZuQWq1SzM6?Y>CPT^ zyRz$O@X{xPlfPNfuh?v=ur&m=tJ{T#eOjTJO3W5c1G;&rpX{cC50!lXzB^5}XIN(~ z;PAXI{vob$iV2m%q2CJ?)%qwvA>UrgI$h8x(6w=&xH;8|90{Y-xvM}*WalgW%#Gf> zmpA2T0oM|yN-g(%PLdu|_nwM{jP;PpOAdm3Dg;}{w!bDOnszNp$pw~{rJT;3 z(qUBes!kJ7-e;II&{1i`wMb1z3zH`3P+}Q2v$%IJO&OFDgI%_r zT?*@HVph$?+}CPty&8t!A82j^^|-^Kp;RS%!wDa3MLN`TyMnWpGui}v8=R)IZ0(uk zAy<|=@)lsyH$DDIT*JI(>DaV&L;DZeN=9AwK8KC8rgL(Oy-c*DC9p2g#~?S_zg?bacGGg7yY)t2*H<(X}UL}gAOVWI1O945|=cIYe=Y1{FTz{3tx)0~R zN@Uc4g8Wh}WDWW|Xba(%%Dp|uv*kyJFNRHhG4TL}2THPx$BveCWvm-11?)xXD*1G0 zn$}K+Zvmcl`w30~R&fmzQ95-xCTTS5zzFUaTcGfOvfD3*ZTnJ`_JryDOZ3g&+I2L0 z+>0Alcj(U77RIc?$tsIQI?lV+>w`+cv~+hal~Gj1uVoSSx9meA75^ozsL)jRbgB=3 zorjUDISP$|)>ap-rL^PGTw{sh;ihrL@!_dj4%twJWNlIZD+-{3{S#PJBEOI#$&i+O zhQOW@Bilo5Wr9dqX(}oA;p>goo!qJUDCJlB?33}RBV%dkOh(*1ci;hqI~FD;-_tPB zrwf+Nmy}km-8Vju8?vwpSTj8loj=A9Lvu1#qaHM-=jt)bZFe^U<1l7yJW620cmnmT z3m?NlJzzK=6*+o+#H3?i3Uay_J*19xTkAT6z7FOJcKN>jU{|72SjWuiILDG{`^ww8dM*Z1PGSS#L2Z?O8DWu9XkjtznwyY5|j2Kare^vw=Ly z+V37ZN(b7q$YRnwcyb+7w^5Fz+<>f}xYRpBnf=e4bJ{|9YZTm5@@GOgRiC7IqU3P9A< z5HN%n8v0hHM`oAumv8)cYY-_(QVOxrSSKKVGznt+i`<4f5IfCPxMvy~UBZMhpQmV( zqjPm3p5sM5!cHt;F-?uN+LzR%FstxBit#pcKrv9=K+7B46ko_^0AceB5d45Ak+MS$ zfr)gwJ%GY8Ps#ZY!arTiL;tx4s7>6Jvso3Db&!27I)(|)~*OwW^&)YghQ64&6rq>NBr1o(W(>p-aQ9h?0 zW~5aO>(-=zp37Nh}j&!4}f9bXpjIb!svK*tq3L3lau`b+prQl4(MFw zW>U~&$s?>TVOM$gFfB!jgZRE!*c2POUe<4!}@!x~;?ip5H!Mlb3*z2YHgM)!wQLo>?1mh1 zE!$#~Q6p$AFy*;YKFrr0v9DCv&g|$zkC&~}tV8Nke^}`xxQDq=&4<Ea?i5Jq}t=0aY>`x zBM*E%N$zfNVs0&9@!;KxEF&Yg9Q0B}=pswvPq+bf0d_ zB+rFWXF8CjHn^Nd!*AweWU^Mf4uC)|C-1WvRZFI5lCB!bnxD;GUPzNon^pNsh)Lru zuO7nDvT>7GNxmU|Tm(Jge zSIZf=giMDAZ;W`=i_?E=Ku5esR5>SlmbmT{;|mi-1d;+(n8j8dp)gHfk8C1RseB|i z69I#9pkvC_;Q%T-p-R}m0VQL6*V9U-9S+Q8Z0o<l!^REYjGDeMO?USK>_?cQB9s zPDigr$8VFY8brjuPlNP-ML1r87E|sM3%NXBIxy##8;RTl#0LEv1Y=OB;=FJnoVjC! z;SDIJIXld6pi|U=0c)?)2$ukWop2tX4WB_8<;Dd4c~y`rn?hw$F1yewR<3!y!8p>c z$vI(7$xdB9p6b|`cxf$etHuNoaV{n=CnnT4HZ7HE#_rgt#IdGms|JM-=?@SNvbjYx z&MUkuMf$2(%(Yph)UejBB#u|2q)jGX@lvF{2IwTQ2JNJzxqR5pB8V2-ppv@RbT+yq zYC0PrKGc2$4z4y}cApr3bmsWmP=mVU2Qn_9^s$tCwNBeK`X^|TTh(Q}0D zqP)RpHTIFa!*1KSUDjl&Qf+Ts`k|Pjwo+f*v(=k{Qrxod>slG-Ey{wgCzi-e;iAu< z>Z!+%c3PVY>9x#%Jvq7%-KUR>c5@xAK*J6~I@Zyw2@miJEy{*p1sua}vaFm~wY^!m?P$pn4{!vcZX>u-esK*Z9 zP>%|kc^o#WUV0pbOGQ6SFt$ESAhJ3zo|QLmX>cB|w+=q3=zg@c=Pq4Trx@3q{9?4L zk57E>_bo>pEg}Hn;u|i#7EtI{O2Io!`*cn^BbR{&I;S8gL)BlB=GS-#H7!AVPz;h> z&=-G0^>PY6VB8ORVWK{QHX;!8NaOx}+|hgA&N4G;;#s+{tu?;Bu`Ap^G))rngsHO!p-4;`EdQ56Rn$ja_ zSGn35QoDdZM^dADm2r-1=$3^qZ?GTdub%LTPd}5>J1*@WwFT{1H85c}hj9qe?^3$; zSi2EV37<~=6*#^VrGY`USU+!_RK6$;y`!)6%Udt>NoNip9Eapq1HKhgF4I40&grn^v#@k{PpteF(w|U`0_8* zsh-`iQsmc0jPje$gFrqW6X9T_LG4SI@W47io_(ARS4ef1CsSMPsCs3se8v__4Y-1b46 zk96Qt{=1C4+>{5WJlc3k$p+m=sXqg80S>G;c^GDdYO$ddz)Gq@PS97_U)2c{P)*hX zy3R7v%d*Ev-x9jcKL@xf^OLd zd)WN%0r0diNuSsf3rUzm;{W09Ex_Vvwsm1VxP{;{!GpUK+=2#om*DR14#6R~1Pugt z3GVJra19nh@H;?~{YmaUd!J|j_w4^d_w-E7ns-&bwR)ATu5SHfDQ)i-jfsk&*T_1( zEGYec#f}i%9$#N}2X8}HSw!OtzJ`v0Smd7T8>s9BOkgv+STUe}#_2mI?sv_YhC9!( zauH2LB>9BTG35)Xz7SMyRgnGRIA0deLiWY%zIp)>l3W3G4AG?PSn<9WR?faZRsof1 zx%xXmzpx5Lzt!AV-?a}R*{cLEKVH9AF2WF9NhN@}JBezy49zy9t9*F??rBHGEX_1N zMjJcst%~(*hYr-g@DTr0Auy+Wb~=)PjhNXt_JUeO{*~w5iz!PA!*5g7Dgz5H=+aXS z)oJkjO?wkZEH=Vf9@WMB(fO6;L`WnQHfqC4kO~d+hPvWt7u9JXdq_jND^pJmUdJKS z#K}H|>@p`_7JP2A2g3oJ7n9ks*)!&PJqyo^&J!80pY(NC4qZNSw6|@K&!1{EZM{$R zODl%TDff4>qIQft1H6m3!5>%&vM8_94i6#XYk@NWJ&MVQVa=*7E@WY{;-)FQS9wPm z><~L+c5UPZRcsKk&Fw90V#;Pd8xXHq%wYm$))#ZHp|Rt3zK2qd@5n0VeiTVq{eYej z(%YQCFvLfbs!>U`5id{6sC=!m$uL{H|LVjQdj)l%e4ONy@o2hMf~HTqi)-BbD=%r= zPwsu?b_At^uV2G9?Z#c5*Xu!-mt&<5Ad(O(y!{fjY>!TsrdZ5$QoVQ)8L|u0WAoL& z&&KZJW4y0_7nwzW~k=f9t>|(J;i(mJHy%Jt_3oZ>u=~`I*WC3Q75slykUIDsZ$hEy_$gi7EUZstVE`3 z7h(v1weHEW@x`QomdUr+yR|njMmu7{8eL=EWTuw(X#jJ9P76ukuU%-?t=-X3ZmddD z)2BREdX7&qyf?qkUSED=xU*8Gp?^)6={;-4;m=>zz{I@Wpfj@8;U$L^9+_W~cELvG z62z^6)7T$qEPzO6_0{Wae+nEO9Ib^sLdX;kkuIQnG&+PGrQH2)^;&k58icuauYCb* zM+fsvqbyZ@-jU++WTu?pimiGTO%@Zoh2#59)HvvcT6o&2}BUNuOkdE;8k zQ6rAYGj=oOz9OpVL(fy?SFDHXrJ?K-K9L30rwi;R;RyAtAwGW|YlHjFJs|(;MV<$_ z2Fj6>QOIdx13$OK(#`h?4EWWC&M-@kFLQni3+?2*?-Ct+;v79)Fz>)$wk||gydX@& z7xtpe{dV*vCO6!pFf2=cXNrK#o9<a)*Ts4RBh$ z%pC1q2IR_&&O5=iQ2J}%yiiV%i@etuIG`uf%Ou@bWJcR$N(ojVCy^C2&+FHfdz|{q zfVXwM{LJOitH6?s=dK`$@cg5eO&Rap7caZt88Av0P78_pYh=WRQ%^wdK zdcMDyoWOZ|(swOh@~SY&vp23|DH0`$m~Az z3|QNBfLz0cx!le3OQ$X1^WjyPo2x{v$6eD6pAz)ORiS==nRPqas6zR=Bd~GHvZL$9 zbz)gT*;{D+4orF6Z0|SWK$d@m1Ld8q3;?uz78aIvu(Wdax^@qrC5$ahVQGZ{Ot7^4 zmNxnZHUPEzyC2hOz|zVZ=-C0(nCWQfSOE-7>@-Zwtjr7mdO8*wW)@Z^b^rqlJq;s0 zGf+UiwX~smV`pym;wA9!zEGCBCa~kkpwUZc*;Cdp#4&vG79C&dZx0WHR+6Jr$@g;*oHqdrM=^g zy#s<8F7&kqTIHYTlAM zRLOIFO@D}M-d^?}Xx%|{)84uJItfO;$0zY48msp_C|yMuI6VQ1j1qVNpL(#fHQ&;l z(STVcH5()>t0tRe9gwd1OVO9(E=A2&&@nA%(+Ox zrezYebJRV2XMH^iym0CK*1+|+vt9h_5!kh?38Jb{{x=dAP-k9v8vUK1LQkxhy)|qrqyWnU6j3>=kA1Xf#yL_}Cyhgo*8%}qkLsyb50R4)8b%GZh zR5JAjYUI{q*H>S7ZY@Wc4Cju!fU(=4DkdG?B9ke>UGyRhXXv1775*tl*Q81oUGq)e z+skj+q*!;d>YqX~wE7uv*3FyAHif&tsFZ3jNwn(pzDPIjd4rDs_4>5tJ%dP8UxLwW z+OrxmajwoxKbp7l@(o<@5s4etTHJz%gnC7+$6xn9zi25t_8Qdzo6B{nkqemlHo@NN z*`9$`q5S$4oL4COhLcEb1-u8g%{P`Y{e$&K3MoD-^#pD+>vo9)D;LGY z3!Y80t(Y1i2c_eLY)IzwU_Rp3W;*5=qZcwrp_o|$W;h7Q8qX}=xaio72DZzh$E=+* zKc%Z%;CRZ^PFFV<1oN&q5f`TF2+w$u22qqyn^-6SJ2;v>e1C8wJoZ~Swhp>q*o5># zxCeAn7(NVlc$egu=_DE{76Q73l*XOS74VMctQa6GBc9PwY@mTW3K3pY_=aQzh=PZ1 z0`y`qjnZXz;iIk+X~IqeOKY~QO8xTO`%PstaaCEj3wEYBS*FyQS0WzH8k0hMC*DB8$XE-Ggn!Q|pa`R&DG7m}FF0w!8e9K~-yHpg-e4M*{9nE}# zyF4tDc^6*=JDUagY7+QDFI!57AEp=EK3y55Qt~`_f&?@93nL}ED)6;H+iWiPs;w}j zJr~JUVr|c>d5qEYuJVT2{%Ph`VQ_J@yrgPSMxD*8{tT6_lZ>|1 zA7l)MV4DZ?Lh&_s4jvorSv2wh&4U|5-|O;?I)*VL{mwn4%x!zVPV z)fiK%a8S;b)$j}^O{x&n*lfz#%=V>LCTB- zi{xqWtnlp`AND+lJxfs4L=&4k-(scmJV8EW%~U>R$~+k$MKk5tc|PUFkO@Jgs5VGS z4&(nV6h^pBF0S~KYJF%%I4mgZ(^nabe!9gNq_G+6o$z_@2JjV^?v5;w%sk$Wpe4Xa zmQiMc$a1O4_@q+32{D3uMaO_Fq{By7PMlFDS(coV+rwYF=!Z&G6APaTQwtPB*^;rQ z=``TmNTSZiqTDswL}Q)|m3C)oKpSM83G%0VBdw+jO|00BTs}`Kd1TxUZ`3hoyczr& zZK)jeSy}}s^9evNe4!^+plyFu0DXQgCtjJaQ}mnQ+_u+SqwNru41uB#pv;$KDfBKB zxau4?dhq07EOLIn~jV9CA8yDjo zu7%Y;3kT{q`Gk)uN5K|^dD_I(^&osIAkoI@{ zjoc}3kt3C~<^}#ZW0<=yxjL9@Juy$O7|4j24+2D~)!=YGWI2j@7=ZDH!#cl@g(_8! zsQ`4@j0Kt@zDH+zZi+Xh6xBGD_Hkt4IT2~pk-naJn~_T%%$=5{A(i&9_cr_UGqfO8 zTvVjJ&|wY!FBeGR2KdnF9~`R;XX@9$(y)Qg?*F9PaJ~dyfBs`XibFA z{DMTBoQBz%S&pD!e{Jn`h3tZ#2=&R)#*{mui^uyd3wR$dFvV(2_JUq$(P~H^6;^FE z_L(vvFq`V?7wXV#jdQ_vqRsQ4GV%p@8RAjUuwX=cdT5?>!bqUkGI!#F4Y{4I=x%qh zmbvc@`?nYvTEQ$LCmM_IleU{>cIaphIKXY>AcZPruG^QQ0k8c>ho#YdwqIZ_Fy)gn z$AU}FHc<3gvDG33K^o2>dof9KyI-+;ZEr9r7@m2R*cQ7rxgQ7R0Eao63fee0Js)Qh znGoyQZU<96ORq(xESr9%k}~_*b@%sg+%`M2QL#lfhwOnjV--ZPMD^y-{y>JOQKvQ}a#Jd4b?{F|hvD`4BDx}ibmG}y2?JXoz-bok zlp|wdI9`Q8di$FAgrC5+l4oMm+vKx!`QO^$LMHn}h1x=7^?Za53voixiN}PQvW0-a zt8(zMi4Q-YG(A!8i*gsTXed0nel=V%B#qo-ZphfJ4iQtirHU4k{=Te?+b5jV&l{>W zM@>f;j%1)DfDhd#e032(&?=nJMaabW!ZAaIzx1^|_6J{7|EjN2Xz?ve12YRxV+@BD z7!wW8xS~@H)06sq1Nj0QZ_(iA*u}Xlwqxq(oH02JX|%C@jA-l_rqPTT5(JUjn+EQv zrHP-3rHPftF^ynS(=#MQ71tF;@z18AE4H>lpLI+JwICbj!%$r!xbq9V$#!l-&CYDA ze?Q2>l7~w_oMO|fxe+_Qm|{cW$k^@Z36s8jCvHN}qv5GN{h~SQ(8KXdeI*MI@YZtN z!(UOO%4c^Yr{G@!HR<+nu}Vg5x>x;##q@dd)_N z6307-(D!4GJ_s_Kr_f0}tt$Xw3P`E#B7YW)^1R`=q|ewKM&IY}@HOQz!k(KuJ+lI( z%kC5xz<_cIFx@`%!tj&0MYrdoZ1kdV9Z{ugU>FJZ2L7gg?d(g1ISe;0V)@4>o)a@m z>0aN=)Sy=)Uok^hzsO8Cyb4gf@nUp3TqH{#bu$nW2xzCI`3vtu90SDkcA@AKyZV7KOx&7iOii!TV4K@_ z26VMB8X#yDJ7m72_F*(kp|EdjrZs{1U_&bQh=B)4l}UU;6vT!1d* zraZk<9PG?6XJ09YS)hAuqj>d+6J`)rRwG4*gV@g|iZnO^DgdZxKF>Onz;CZmRFw2gf-jIVY zv-@;xMn+j|(mtHEZJT=xjnH@OvPVn|R=prqY#g_MWy!e2Nr1apLaUP}w#{ve7WE_N ze3Y^|F@FGdUDS(kzroIMsy>$R0ay;zTCyc!I6r=2HNR-#kEDZDV6c{9X|PCn!gq;% zZV|Fn1tWIT)N$rKXEt03mI6E`!rjBQu{ay#s%jgHk?{vOY_p&GE)t9^`=aeqXlI=E z^bC4g`ww~{jWINFE=#gl^sSoeoZ78PKang;d^4b(_|Rx#?Nlf+w1(fiA@cNYnL?>Q zWmO?!4=U?=Q7dQ3FpM-I{fzIpm~`;?B4}{fKZo&2zO#$|8}z!R$)mS(B%NAIF2xZM zUhj0!_=m|hdez{zM()C6PMW@-_S}HJ2>yF)nEgvy%-SKYS zxi8M`PY?I}JzJ*ebxAoH+Q>Osbvdn>z-T7uTmbTn*o-@-^5Sf-Y1kCW1b9~0YS`R? z52QKnpY5i_c2ry&!Lf(61Ebf9p5>5XOf*63g+ip5=YnH^4b7vY&w*YJ z!jn*fp}fU4)_O()!*=MZEJ$|Lh@*QH=v6W5a753G`f^-NZ063T!Z%r+T_@MvX2Wk5 z%vqb;i*Ek@J>Q4kxTgWo=9=s}&{MMKHweaRyF)EH0^;pgtW>524R--$l3!A`Q!Je? z@2C%NTYz_5AhE^X0d|?#<5IDm(PJxDq}Rg(pi{$0Vfey_Bf`A??!Ju zCvWeLE@lr4ZNLsW-P|}R#xUxRjyppkXYh(xzeGXzgVGE+?7!qmDv{(6OqK-iGpml4 z3aw5DX|yn^YmPFNFP>RGEy98rau>9BTAtrA)BGe1S;%V4^4`I2$Is9>_hM6Xr?BSY zgGqCA~As^2u2+y zs{M9}Z{b}#0rJ?Sp8wG8cN(yB#i1v<&?XiUhIfa1oxpoKl0uiy=1s~;v$o8dw!QNx`k zr&!!&f|%c9g5aDs#!f{p^~Ux7#v7r%#T${q@|LIvzXxR>w+F=zY5iSFe60Bd_1k2g zk0UxmS-S95X(7U!L-G@ZS4yMdZE~G_F@zMF*nV=}aapCXt)#RoK1SqJRZ;4`c7S=v0uJNbNoel_Wdh8~+wO0>c?KRvPN-Sb&^Qfo${5gqHz{{=;7t(Z97U?XNgHXQah{ z+$5hzpV;trX*fOM4abaQm7NL7ph22|NKSZSG8WMf&WTamUHTb*9ll!zjJ%q z*BN@C;l5%_oT5C65PtV34x>KJQnx4zd8HbV6E*WZS(XOd+k9!|g#urPp1lgR6<)k= zQC7jj9*1T9qDVoPoz;{bRo@O4%VNhWMT%SQAdIFX7Sw~kC9W}0ql!?d#|`yOZ71Hm zk1i6BvV?I;2dm6zqHP?a){-b|YpsE79BLoh^}9NIKJVFOwUGbb1c9f00~fUx-Mo$R zMOAWoY9*f7{1D640ap=vs&(S9svbv(b-l+_zNnL^&?U@=Q~KJ&?J4+|PRWpfo-|19 znRwv-0uGsLqt9*17$l$*nj=LQGvLiQ2s|_JqZx2dt!Kune-FwbF$U5a2>fDi3(K)Y zMbWEpS}k*bZWh+L`&Q}AhhufVuUS2?)fgL!$|c5)VBb3tYFDsfX`GnOH6w=C}GC`n;g|nFK9XQ_t;Xmv>jKnub1UMn70bdBtae=DX zLCRTOnGaMXx?LK&3;4urFo{q3O*p!#CCAaI|b~1PLh4JcH-ma{U?&x*`$-nkW!1*qb8!ZSzF<)s=8K9UQ;v zHrcK)r{62#P`?!6Wzvl*UD(L5TUf@t+`Acg5b7p-o7{B8yH$~FPgI7T{_JNZeYF&q z!Fiqu!gT`s@!}xKm&FoYBrYoirNQlM?o2aMeYVu3C92G$m090ctI@m6vVv+m)d@l@ zmX0G~b#^dZe4pPo=tc1H-dlOrqHnIOEKq9Ffl%Kn^l1b2PLxNV@n>km<7iH(ISE|o1PuIFKyK7 zBYl9YK2l=~N3%Wdj7amHrd;1QbfUUK8=j*Ry&zRDbiyya;GhihE=N$evBckqCi}fa zb+*6tzG~<}n>1W4GXGv{M#3njCkI?Ln+y$`0vQnxs>(V8QK(%A)fjuZC`Ob}eHhi4 zkbYE~19}+WRu7?uAo>nrxo86Liy*48AgX8r^Q>#Lc|oikSHvy-dY;$CMXp#|==RfV z9YT(xG#~64H;5xG8dB^gsNaRG*QeUrh_HG{(byP~+p5$HCS6pE$MWXUjIQj2NX^uI zsw*wG4~CLvO*GTUf?sG5#B%zAiqQOBE`c2UoaQxD8Zf2NF_^*1AsA|yHOaww<;pZX zzek2hmLU(NxvmjKZngl$h)*o^MsR66aHMxT3VGtqLQa#S3dmB9i+xys_jE$w9oB=QzNGl^K44{=aaIyo? zikSli`F|V*ejLSs;XolLI}tfMU}*0Cry`61MquPl78uE+6$VE6?$d;s0Qc(@Wq~Qo z0OlX>SOE9I%KJ1{z*cWPiF%FH(>fdX>Y&i zWd1Fk^#3)TEdMcd{<|pz(#b*(0B(;ovoHXF+kb;vmLHY*XG>-HC#b!z`TuB3{THqC z7oGpAb+Y`h`#)32_)k!Hf0F!1Q25VS=YMrl|Jy9`hr9SQoxtm7{wv?fa_?LIBk26! z`ObgQB7gbIKT`WITjy_mC-Z+zC+mNV@BIIg&U2P0slX5wf{DnfAly0Of&00LG!(n{*R{l-_f!9qoeq@QU0SV_h-u4ena_#r}@Vf zg{=3E{6B*7KQ?dw4j=qSYX4P#%=*v+242AVr=bD+KSAd`z5h?q`P1+Is}!<5jMM%~ zA^q=$SAQ`{wtL_HKgZ!e2IGGiX#MYu^LPENf0?P@wo3HB8#(=zssH$9>EG=y|7C7} z+Z56NZs_z^ZvTJN7X8bd{I;#2|J_*VublkHG#3B2dYk_;x4&&T=zljb`YX5hpa18) z-XDD3|BljNVe4<-(Hm|T|yJWL7$4-eG@V0p+7;9>Ge7Vt3X z0X#g+iUKqFW160x?#HCS&v|YWZ8rar8mifWM$pRkEQQ+Z0%l{Ggw;u5qEy=02JP%z?cHaE0FA z1Q_U9eir0GK+E3N*uqH5*g^-mqR-(zi;sr*Q#A`K^G|tOJAExH9b;gze^}{H8Af)7 zpV@oF)UmL%a5lHJ2b%m}L|NE>slSIa*D*Etf%(Jae`3Do9mX01UP6@>Pi|Auu z@CWOUS=2JRk7E8sj+ur1C)@YB?d+}041fhUzL$JF2YxDNVqpHejTB#=t84ix?9l`%nFr4hA-6mOA%vT88!(4~sZ~@{i~I&s;Duu>MZ|r{w|VAN|Kq zc~+)hR%~lvZ4Znw+UuBU{aWe?Q2XI%e#+C|XXjV0b&ZX*EVY0UU7hm)p|S!?QMXC{o%fTfinS35eR-C`uxGkkKa7j^k2jo>6v~5e@~Nxu>tV(`r#FS zqBAqI{}i!6Zwk}6EoA#y8J_i{~-UvJ^w5qD=X`7a_}e*G#X&g{h{KL8v(D8_|X8v(h3^b z0wd{E>MAI{}F|qt=a{(;c(!+v?XYw4Q_^+(&<7jdoIE<667axkT462 zw0V887)}r?DiD39tXavLN{v7eM1)V84g%wY)SLXx$RI-? zyenO~IGcsvtY3m`vV*u48N4>d0l2|?`HDLCN7qrCrmt#(A`gLB;edKUg41b3u;4#I zN9M)$tCD##?F9lq13)SP)uuJt^8$xJC-1Q5KPB`6S#`RBO?8Zp=>!?hyw>AkN@tgyVP+TB) zTB|+HNT-+$-bNCH-N-8-iMFbE_Pt+&k-b2a20b&R+e_K-9fd*9-HxR}O2V|nT%c@V zlqz{ZQi9V!$gD=hxjK(i+zWD;$CjHc;z`V9rlzMIbo|lq1 z4|##&OQ%)HKo9oXA_n-xb8S7xE05j+duv?_kN&BO4kMoTY2_$q6H2bY(*@{aIxte8 zVrbiyS0SVCsE~L;!~9;;p@z_?@{EW)9})SC`o@2j4#UEa9gP!&2ymojlDB(n^Z{0x zw>v0y0oGOr5kecW)655CAV6pYtmYGH$RxbE-GX5|oeRbV9qh?-kQi+gDxZr|34w@>vzzod&o_RFw5;_9*~x8PmaWcT3v6-=y3uwLA)H;U>8dd z1M{;mZk({VZ@`uUmp_H_cy)iOn1M^rz?l1Nu>an9!wMRQ?rAkY=K=)I5&V)5-?ktQ zHJ-m_CBP9yb&U=&@U@qu6()-gB<`k~3N46R+cgxvkrKmU+x!TE5*?1HQd{>C;-(%+ zWgE?RERqq}gVIbMA@mipBf14=mIO~t&v32TWTaQuXpImbNAZ{hSlq;l87`GAdZb3`phT80a_%?XlbS^1ggp`$TaT#!)@7C~sW$=dDFn(g}X05W@ zU9#GxAYGry6TP!R=#dPyUxsCOtK&jhAFa{x;vzCyk%zULC3?^H?onX|CeeX2#!OQL zkb96jr-HBbpqR)&_;Fp<;jtG(A$?s<)2uvO&BC8>DZRN0Uv~5uzCF;7;yGO3jFDJ_ z8Q>gs(j5&RBx`1C^|WPLxx3tEyHg6RxY5GL-@4OX*kZh8i%11c-|`%Ci`Wlq6qjIw zKsIB80Aqt-!UZ#HgbREl(BxZq`>E^33YurF>k{eK+^nLp2n~vn-znDjqQGF+SB#Y;|*}ybho7CaL_?6=M)0Xu;w1SW~UV)L&rw(ipDqP z@+yujU-TVH^=|ykX=Af73P<6n>@qNrnZB9`R0Jqo)NGm4E;l=K8ZAc5IfORAR#%ys zE_dNCIoRNwh87Fm7Bj2dDvbp0aCW0cjA`-jRlISB(h@-8(5Cu6`u-;0@WWkiclnJp zSNwtJb(xvxmEL!&NtwINz-pcjE@g%F8jBN4-7m|D8!d<3DjueREqbrJLn0y&Z0}lLV@+en;hLDjDyo40oye*1Yu# z`gQ(BGJ0+uBoTEjr-!WCk}i`Hb-i`@T~{HPCr9q!QNXxikd8wDkp26gztQtuEnp-je<4rLTwsl+vdm<&La4YNMiAp?%nR%an+@ubFiUb6=ll zQkd5h74Kfo&6`Y5mX8-cxiAIpO_S|~Nup;yCWfqYRVWHcw=Wbl@74=5JY^N4?z9xX zTRlU3x1ao(#%fSzgri+iJGB)sz#DYsm|Z?jcHx*UiSs$;+QYQ2YP7zsPo>y-%4Cnw zH1G`0bb%sXO-Wf=c~;14((Axt-I~>6;WaBanbEEVy(T9!>C`~j=UwGZyORRR1`g5> z5v^fGMpK8pjjT4)0SI(DM-$4eUoVyItn^LHhQ3}V3QNu9O?R95I@ap&=TsF}9pt7E zYn$S*gRoa_uCG^CM-vjOxRWzAR8wOAaj&Y2kCSF1MYt|+QRmrnw30f>? zV=rRJ6ciLCQmld%UwSOe&>Orb>C6rl-q;GqjpAhDq+}F8fV?r5>NKoMloaj-z;bmn zK-YO=3RCKt8S)mG$Wl(`_7d5E#~BYkBeJ2KEPO*Xf)=D8q^BOw;mj~7o2={o1`t1q z2FG;PAJJ8r%WJmeoTv&Wx7RMHrcD(_BAM?!)9}nhn^lv$SQDXxMLs`@cc0V6gPnV; zeA~Z{KODjrh#pJXW}d;ISXJq4ZcwQ!Nb`jbi>&bJ7PiQG8)CL`7RM+PA%?ENWIP_5 z9oN`X!#4)Ah*0o`V`gE4AI#o8ElN_sUmyiz1vlw~@t zSm0e)HCiRvuy!zA2%22)5J>gWydVrpS4NJYJ$La~tK_t^a7skC`VC{eP;`x^0w?ok zB1^@~E`3GFcgebDhGBzLO1>n`8DoKRrvjbGPszF<#@br}I|23$%(V`J7IafDi(gvf zd6~L%^7Z!zcO;U(*m)IKYxp+$o4lCTSw1$fM(tg0<}ef34I)(Q0J+7cAyry9a7-E^ zP{LK6RC#WE_Qe`7v718V7Jx28siX=3@>+#1Sixiqe^@`E!qnWh|AzePQL3eRSikJP zw=A>FJCSYq!no1(<+065<*O=hl)AEB_TXR{C4zAZusHhS7wo!moF}IglYO~w;IrW< zwza!XCgKz2Qb$XurVybkVo$e&*A-%3jjS|g3st#ifqhpQk>~MCs@hQgNEQHu6*dJQQLEaRC!qWb5l)15jgj= zV~F^-UTNG+?Cee$D@`X5V~L?5+o&6EIO|WiX!%Hl4ToVdAb7iUbqnjN=TdhWK@|dz z96DxU{b9jL0f~vmp)kSf4Ax{}2ou>zvNL5mfqLy=akiAvPV1MrSzJj{Ps#G~Vb&P} zMuTJATSe(WiENTE6R<>CaMu_Sa^%SJLS_bd!}^&z5(k1~jL~=cnHYA!&vwHFuJWR*7Gc2)hVWG z^2F;(7Z+=NX^5*d2rOW$vSpn7t#ml{z6PvHx={AL@H1ktUB+gpF_w_WHUY2j1LNugdxeeQljqyrkS%N zKG3Pblae?*>%!921$3FJ6vsktC@t|kiK1=TpFefRC{y05@3TnI@6)-_YLID=nIDMf zg>Q680{~`z)?BS8Mj&>9K!tFjpqp?&X@SW`tMZGE&XWa^-MUoAMXvh4w0b1V@P7o~T(^ z3id!j0(*6tz!ieb@8@q#9q5XAl4fBwzd(OjQGM!-uTH64t5|xYW#0n=|LL#WwI|fX z=6)6nSrx$r#wRH=F>8ryrr|cxW;n$dw=a~+?L44Ry0)n5CbrQoN~HS=x|TM1p#Hve zJ3Q6Xlf$_OU~zLPp1vvz^xN7-yiX2u9CQ)x)UP32u|sP0tY~jUY7-p2LwTU^76M23 z%!fLn=8E>|$%($bhn5jHm-IQ8OO%>Jsn77eLoSE#kv{nt$nSCscL_E4*KGbd<9C$W z)m>Uo0y=PxA+KL)^Fg#2qGP5RDEEG9cViW5Yk4`|e!dnG7{DX?VN|6xA5ubCNu88!D=K?`G z=-D&-oqXQ7TrJtw8NH$0&rgj+%iL`PYD z$xDTi!!Smq%Q@ysW)k-^l5qudZQF(UJr?W9&Wdh*Tt^}huLqSxz8+s%-_Txu&-S~+ zcJnJRVgZ4(7=)(kCc0+u`N-#tc;NH;A|flJD1d&2XmJt36A$ENV73=zq@g}28~#yQ z5{NTeIvt9lPag;TD)|jJuX56LH3`xB8>yjBbfigJOp3_x&@<@XOk=2i<9+Qrhv>wj z$k;-B{Q4%zPpaN$}dL%0~ehvBXByei>qLdq&(FkN{w6g}O9o~_V#Gc*=xNI{L{<(lM3Tg+51T}{I) zu+dzNmp%kQtdl!zdwyKE80{^{4BMA*tkt%At)qyDP9n8E7&(-|N*h%2ya!=?IE5?A z(bX#GFtv`l=&?IU zg-3u74J12ca*NW@p1eN>nx7QpVK(y|TBBksHY6FjGOsDIDqF#dQe~Saq$5SGP-{5s zQdHYVg;M_3QM6^@G-gcFPFyl1KL&M9yud6=UX`3*$cJ5Kgsv#F>^WrU za9ea2$&HR;yL0JxuI<42?^-6j&V0_bOv9SkL!jj|+xy}YJg&wC{1C6+B9!yNzam!! z9%mO2`dwQzN<91MoDjg9s(h?RV!nT>$2FTGAT5t~?Mk%{*9=1XK&sVK3FXxip#_6} z;tK@c)fsJGhs%`auAs>sM+T{-o%lSqRNP@sY$C3H1d}kUZ$khJ zcwJXyH6Kg_T}k9Bz~*=hFY@q`FNm3CwaKv9p}V6)KPt7DOGQA(IRzC zB()B}BJtLOA$>DWvq1tQ;YHfo6Y{CoaA^dy?1b|BAeZR|=XbVYRh6ZKce)#+y{8t= zu*2Yl)0lkdIbF~*%#54K^x9nk0ReE`ehYG|0YM<}WCVOA+9#d}N{*Z0oBAKao1(Rx zDCu_`8%|VBeCS6P>jn%~=VKOH zniE}r4BN)-Jkdo>uJz7y@*#hOM#+MY+0Tr|uDNJ!G^t(+_d7Tr)6eb8(;CXyaBFfU znpi#~ncfx>KGkJ6Kgz*C8lU25s`V*X{nF`$p#?%4QgI2F+;vJk{sE3;6iKW$Hjz+3 zo}Go(2cC`_gj5W*bUr>>jgwT4j1YYz%fA_@410#3fyPwnDDoj2Ah&L;n}?&MVZcL~>UDgA{pNsCT}!vy=7w>pk+@!FDfun= z$WIQg(5@Q8%Iy{IoW-3(#qHA@xy^V@`LB^@0+VtK8x6Ap}O5@nL=Wcp#D+Mqg!JIS}vz&MK43bomzR*SNU zv~j?6=UBaSB_Eqdb$C_#x=o?7)<;(CEt{aYX3v2i`Wd&XL=YU(OTfl;Tvj# zLE105_L}eO_J|uL+k{Z1-ZR^hFAAXE`k)WyT#&-7p)zQReoynmiyd}@0Y~+*bI4_7 zQKySB(x4l}&~l4sO~HExeLf2ig~}q|)^)y-Yl?LZcFi(kIq!H)h-4W`utmF}s&jfUUEb9BWM}zSR*R!T)=8NTR{eAV2`l*XM6VugI)`&7F(LbxV1g}fgFnl>>5$R3wbyi3v8 z5&3zhhxxwOZJme7`4D$Q+8*%EH`i=R0~(;lbbS3*^2GlTfzr`+v$9o>I2eXjY7b z?M%hBIO>wZlIuxL|1aL&F|e|B+Zv2*+qP}HQWe{**fuIw#i`h~ZL4CdV%zCm?>R4S z-}{}u-9LK&+WT4S(R{S_m}`t#mvmHj2YK7zc#wk0znK!-xyC*sfL8_1SH6CZMaP{V zYYEBS!DE(HJcDuW#3m4r_qM|6;??ky4T$h-=b4%tKXE&ldnA)6r zwdnhB^uCZ4qmOlqb4$ueui>?O5Mk4>!Q#YdnimB4C&_W%@67MdU54%aa>CeEX#2{} zRF5cWr{;&>UM-b=$h?BqG}2!i9(PyJCf|VUI$bE&*gDhOwoU{Uz4A>TbgX_D26ttc zu$lA4E)EgbTm7t$k5DHCUQsu8aeDfb2?>tUq`Rs?>DXB~trR8Cl)e;FAZc7ny_R6q z;JIMdamQ_8FrsnZT&e41XXXHX2<{IoG0ah{>CFW}7QUxBnV5I%HlwpM*A40YAee5x zsV-24lwy+8W-iPFd)$hjBoaGZTcxB38{w7w1Xd5z;xdIchH)!3^?oVGdnMYj zNZOX4n~Uw7n!9&N_yw@~7+#e>ekObp=xp)0uQo^+@*3XoF-7-$!Hu}+TD;Fy=5Zgy zy?rXv>(QA|5k+#ymZp`3#g6ico@iXv5acCUG;=mlmE>bccUE^6Yit$Dz-Wn2AEN)Y zgrwHZ%y+PZh2TX`I=n_@F6H!#TWQZqGQI#~baWCgU^`%DxBBta>M96U5)%?Ud1p_Z zMei`*^!WbG8p)%g?yHUFFcbXMBBIyrh+xRdOEYej}i1$@m1e^rD;*Re%tOx75CCqv&_@@3>M8Q)t=}` zEEhvWmYKx-yr)HMpe)iAM0t2q9vq2!hjRE!x(M!$5glB|n2Kk*%r`=}@}c9w zL%p)xj1c?E6R4S6n>}B+Aqmog<1-u9>}&@|Q9?x+mv!wtQ01i4n$&!{IuFI9*6fuS zPo{Nk_C=htY8Vs^NA2ME>@O*a_;>-8c3)`fk~_FsF6W)G71o6;@%dsY{3 zI|mgyEk9T87QL@(A$0!ag^#B_^*M)O@`t@{a1xId28z+DRh1;eJt>c_KF2_m;CK5R zH3re6nAMwD05Ob8+`V4)A-w2$*N63}XQC()^S&Ho6Ww=RFw7!)>w7|I$N)2J6#X9j z-o%-;==-{JqFj5TW{zHaR4>+k{qMMq;7#CwXc=qT2 zIK786;O-(2ydH2}{&1SG)oZ;h-S2uoEkzC8;Ny7Qye@Zl+}9Rx9I#E2@2&aNUcK!< zKGsm9xy_}vQJ+{xuzJ7MafHeM9Wz1OScIw92#3^u)x{#XFWU`nRNsT3!I1`U8tv#g z-rfz^NCSF^)L#g4zq^uWXfi?LQWOjz`D@_01nXFS@kF*8J9DjaFBZ5zZ!;PT+)X=s zC^zuA4XNy!d1*T?Njebqs}A5}Y+4VBnP34a6mYYOaDlXg{I5>{sxh1eR! zK|1U+76%rWvB#*$u4Lpk<290tc!20d-uQUjs@1olUD^zFx&7+kkuBML+603d-i1I{6B9gBT+P!g=BKtiR4!8*pIP9T5A8e$^GJvB zW{sX5@a|h1`nh}rP3=uOK4G@ApSsGSA<-$1Ci_FP(SyoCj11>cUBZoB=Nj)!upq-y zPPi>arcbELcaTI(trtNR^|yw(0S5|PkAzGeK8H5zc0t~BzClPHJ?KMLF4&r0V8`$1ZEVKb9xYVuqyffqo3WvJ>leBH(%Dq}Sds{$bc%u6233(*6hk=*EE*9e(2 z7>LTJzSRSV$iq+Nc6mX-ciIC=@R|te>TVYSNqD=3Phgd|)0MP?>A^G>=z{1#kg<8z zQ^oh_iFjUs?z7V)PoVv)r+^^ipoa%hbs9pX1VX|6G8^*2ok=3@;v}?O2ku6VVC_iw z^ma=k97i5`;z8dp*8vbd^L}f!{*A+vP&eDWtEkyXDOmmPg)}@IG0`M3Bq; zP7jXEq{P^>yAsY6EBT8?TofixU~ⅇ1;ya>5bN2aNn=(&Yn--0u)`48-9czeW#U_ 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

4P#DD!GJ<~Myy1>?^7Cl< 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 literal 0 HcmV?d00001 diff --git a/03_week/CMakeLists.txt b/03_week/CMakeLists.txt new file mode 100644 index 00000000..e5df5bac --- /dev/null +++ b/03_week/CMakeLists.txt @@ -0,0 +1,17 @@ +cmake_minimum_required(VERSION 3.14) # Минимальная требуемая версия CMake +project(03_week) # Необходим для инициализации cmake + +set(CMAKE_CXX_STANDARD 20) # Версия стандарта C++ +set(CMAKE_CXX_STANDARD_REQUIRED ON) # Гарантирует использование указанной версии стандарта + +set(EXAMPLES_DIR examples) # Определим переменную с именем директории +set(TASKS_DIR tasks) + +add_subdirectory(tasks) + +# Создать исполняемый файл для каждого примера +if (BUILD_EXAMPLES_03_WEEK) + add_example(struct_examples ${EXAMPLES_DIR}/struct_examples.cpp) + add_example(union_examples ${EXAMPLES_DIR}/union_examples.cpp) + add_example(vector_examples ${EXAMPLES_DIR}/vector_examples.cpp) +endif() \ No newline at end of file diff --git a/03_week/examples/struct_examples.cpp b/03_week/examples/struct_examples.cpp new file mode 100644 index 00000000..11484025 --- /dev/null +++ b/03_week/examples/struct_examples.cpp @@ -0,0 +1,172 @@ +#include +#include + +struct BoolBool { bool x; bool y; }; +struct Point { int x; int y; }; +struct IID { int x; int y; double d; }; +struct IDI { int x; double d; int y;}; +struct IDIB { int x; double d; int y; bool b;}; +struct IIDB { int x; int y; double d; bool b;}; +struct IISDB { int x; int y; std::string s; double d; bool b;}; + + +void struct_sizeof() { + std::cout << __func__ << ':' << std::endl; + std::cout << "sizeof(BoolBool): " << sizeof(BoolBool) << std::endl; // 2 + std::cout << "sizeof(Point): " << sizeof(Point) << std::endl; // 8 + std::cout << "sizeof(IID): " << sizeof(IID) << std::endl; // 16 + std::cout << "sizeof(IDI): " << sizeof(IDI) << std::endl; // 24 + std::cout << "sizeof(IDIB): " << sizeof(IDIB) << std::endl; // 24 + std::cout << "sizeof(IIDB): " << sizeof(IIDB) << std::endl; // 24 + std::cout << "sizeof(IISDB): " << sizeof(IISDB) << std::endl; // 56 + std::cout << std::endl; +} + +void struct_alignof() { + std::cout << __func__ << ':' << std::endl; + std::cout << "alignof(BoolBool): " << alignof(BoolBool) << std::endl; // 1 + std::cout << "alignof(Point): " << alignof(Point) << std::endl; // 4 + std::cout << "alignof(IID): " << alignof(IID) << std::endl; // 8 + std::cout << "alignof(IDI): " << alignof(IDI) << std::endl; // 8 + std::cout << "alignof(IDIB): " << alignof(IDIB) << std::endl; // 8 + std::cout << "alignof(IIDB): " << alignof(IIDB) << std::endl; // 8 + std::cout << "alignof(IISDB): " << alignof(IISDB) << std::endl; // 8 + std::cout << std::endl; +} + +void struct_address() { + std::cout << __func__ << ':' << std::endl; + { + BoolBool obj; + std::cout << "struct BoolBool: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.x: " << &(obj.x) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.x) << std::endl; + std::cout << "&obj.y: " << &(obj.y) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.y) << std::endl; + } + { + Point obj; + std::cout << "struct Point: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.x: " << &(obj.x) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.x) << std::endl; + std::cout << "&obj.y: " << &(obj.y) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.y) << std::endl; + } + { + IID obj; + std::cout << "struct IID: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.x: " << &(obj.x) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.x) << std::endl; + std::cout << "&obj.y: " << &(obj.y) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.y) << std::endl; + std::cout << "&obj.d: " << &(obj.d) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.d) << std::endl; + + } + { + IDI obj; + std::cout << "struct IDI: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.x: " << &(obj.x) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.x) << std::endl; + std::cout << "&obj.d: " << &(obj.d) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.d) << std::endl; + std::cout << "&obj.y: " << &(obj.y) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.y) << std::endl; + } + { + IDIB obj; + std::cout << "struct IDIB: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.x: " << &(obj.x) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.x) << std::endl; + std::cout << "&obj.d: " << &(obj.d) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.d) << std::endl; + std::cout << "&obj.y: " << &(obj.y) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.y) << std::endl; + std::cout << "&obj.b: " << &(obj.b) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.b) << std::endl; + } + { + IIDB obj; + std::cout << "struct IIDB: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.x: " << &(obj.x) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.x) << std::endl; + std::cout << "&obj.y: " << &(obj.y) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.y) << std::endl; + std::cout << "&obj.d: " << &(obj.d) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.d) << std::endl; + std::cout << "&obj.b: " << &(obj.b) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.b) << std::endl; + } + { + IISDB obj; + std::cout << "struct IISDB: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.x: " << &(obj.x) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.x) << std::endl; + std::cout << "&obj.y: " << &(obj.y) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.y) << std::endl; + std::cout << "&obj.s: " << &(obj.s) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.s) << std::endl; + std::cout << "&obj.d: " << &(obj.d) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.d) << std::endl; + std::cout << "&obj.b: " << &(obj.b) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.b) << std::endl; + } + std::cout << std::endl; +} + +void struct_creation() { + std::cout << __func__ << ':' << std::endl; + { + Point p; + Point p2 = {1, 2}; + Point p3{2, 3}; + Point p4 = {}; + Point p5 = {1}; + } + { + std::string Point = "some_product_name"; + // Point p = {10, 300}; // compile error + struct Point p = {10, 300}; // OK + } + std::cout << std::endl; +} + +struct Inner { + bool b = false; +}; + +struct A { + int a = 0; + Inner inner = {}; +}; + +void struct_inner() { + std::cout << __func__ << ':' << std::endl; + std::cout << "sizeof(Inner): " << sizeof(Inner) << std::endl; // 1 + std::cout << "sizeof(A): " << sizeof(A) << std::endl; // 8 + std::cout << "alignof(Inner): " << alignof(Inner) << std::endl; // 1 + std::cout << "alignof(A): " << alignof(A) << std::endl; // 4 + A obj; + std::cout << "obj.inner.b = " << obj.inner.b << std::endl; + obj.inner.b = true; + std::cout << "obj.inner.b = true" << std::endl; + std::cout << "obj.inner.b = " << obj.inner.b << std::endl; + std::cout << std::endl; +} + +int main() { + struct_sizeof(); + struct_alignof(); + struct_address(); + struct_creation(); + struct_inner(); +} + + diff --git a/03_week/examples/union_examples.cpp b/03_week/examples/union_examples.cpp new file mode 100644 index 00000000..af332dca --- /dev/null +++ b/03_week/examples/union_examples.cpp @@ -0,0 +1,117 @@ +#include +#include +#include + +union ID { + int i; + double d; +}; + +union IBC { + int i; + bool b; + char c; +}; + +union IDBC { + int i; + double d; + bool b; + char c; +}; + +void union_sizeof() { + std::cout << __func__ << ':' << std::endl; + std::cout << "sizeof(ID): " << sizeof(ID) << std::endl; // 8 + std::cout << "sizeof(IBC): " << sizeof(IBC) << std::endl; // 4 + std::cout << "sizeof(IDBC): " << sizeof(IDBC) << std::endl; // 8 + std::cout << std::endl; +} + +void union_alignof() { + std::cout << __func__ << ':' << std::endl; + std::cout << "alignof(ID): " << alignof(ID) << std::endl; // 8 + std::cout << "alignof(IBC): " << alignof(IBC) << std::endl; // 4 + std::cout << "alignof(IDBC): " << alignof(IDBC) << std::endl; // 8 + std::cout << std::endl; +} + +void union_address() { + std::cout << __func__ << ':' << std::endl; + { + ID obj; + obj.i = 42; + std::cout << "union ID: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.i: " << &(obj.i) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.i) << std::endl; + obj.d = 3.14; + std::cout << "&obj.d: " << &(obj.d) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.d) << std::endl; + } + { + IBC obj; + obj.i = 42; + std::cout << "union IBC: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.i: " << &(obj.i) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.i) << std::endl; + obj.b = true; + std::cout << "&obj.b: " << &(obj.b) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&(obj.b)) << std::endl; + obj.c = 'c'; + std::cout << "&obj.c: " << static_cast(&(obj.c)) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&(obj.c)) << std::endl; + } + { + IDBC obj; + obj.i = 42; + std::cout << "union IDBC: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.i: " << &(obj.i) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.i) << std::endl; + obj.d = 3.14; + std::cout << "&obj.d: " << &(obj.d) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.d) << std::endl; + obj.b = true; + std::cout << "&obj.b: " << &(obj.b) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.b) << std::endl; + obj.c = 'c'; + std::cout << "&obj.c: " << reinterpret_cast(std::addressof(obj.c)) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.c) << std::endl; + } + std::cout << std::endl; +} + +union Color { + uint32_t value; + struct { + uint8_t a; + uint8_t b; + uint8_t g; + uint8_t r; + } components; +}; + +void union_read_inactive() { + std::cout << __func__ << ':' << std::endl; + Color c; + c.value = 0x00FF9955; + + std::cout << "Red: " << +c.components.r << std::endl; // 0 + std::cout << "Green: " << +c.components.g << std::endl; // 255 + std::cout << "Blue: " << +c.components.b << std::endl; // 153 + std::cout << "Alpha: " << +c.components.a << std::endl; // 85 + std::cout << std::endl; +} + + + +int main() { + union_sizeof(); + union_alignof(); + union_address(); + union_read_inactive(); +} + + diff --git a/03_week/examples/vector_examples.cpp b/03_week/examples/vector_examples.cpp new file mode 100644 index 00000000..42afa72f --- /dev/null +++ b/03_week/examples/vector_examples.cpp @@ -0,0 +1,89 @@ +#include +#include + +void vector_init() { + std::cout << __func__ << ':' << std::endl; + std::vector v1; // empty + std::vector v2(v1); // copy ctor from other vector + std::vector v3 = v1; // copy ctor from other vector + // ctor + std::vector v4(5); // 5 elemets with zero value + std::vector v5(5, 2); // 5 elements equal 2 + // initializer list + std::vector v6{1, 2, 4, 5}; // with elements 1, 2, 4, 5 + std::vector v7 = {1, 2, 3, 5}; // with elements 1, 2, 3, 5 + // iterators + std::vector v8(v7.begin(), v7.end()); // same as v7 + std::cout << std::endl; +} + +void vector_reallocation() { + std::cout << __func__ << ':' << std::endl; + std::vector v; + size_t capacity = v.capacity(); + + std::cout << v.data() << std::endl; // int* (address) + std::cout << v.size() << ' ' << v.capacity() << std::endl; + for (int i = 0; i < 1000; ++i) { + v.push_back(i); + if (capacity < v.capacity()) { + capacity = v.capacity(); + + std::cout << v.data() << std::endl; // int* (address) + std::cout << v.size() << ' ' << v.capacity() << std::endl; + } + } + std::cout << std::endl; +} + +void vector_iterating() { + std::cout << __func__ << ':' << std::endl; + + std::vector v = {1, 2, 3, 5}; + std::cout << "range_based for:" << std::endl; + for (auto vi : v) { + std::cout << vi << " "; + } + std::cout << std::endl; + + std::cout << "using [idx]:" << std::endl; + for (size_t i = 0; i < v.size(); ++i) { + std::cout << v[i] << " "; + } + std::cout << std::endl; + + std::cout << "forward iterating:" << std::endl; + for (auto it = v.begin(); it != v.end(); ++it) { + std::cout << *it << " "; + } + std::cout << std::endl; + + std::cout << "reverse iterating:" << std::endl; + for (auto it = v.rbegin(); it != v.rend(); ++it) { + std::cout << *it << " "; + } + std::cout << std::endl; + + std::cout << std::endl; +} + +void vector_reserve() { + std::cout << __func__ << ':' << std::endl; + std::vector v; + v.reserve(100); + for (size_t i = 0; i < 100; ++i) { + v.push_back(i); + } + std::cout << std::endl; + + std::cout << std::endl; +} + +int main() { + vector_init(); + vector_reallocation(); + vector_iterating(); + vector_reserve(); +} + + diff --git a/03_week/tasks/CMakeLists.txt b/03_week/tasks/CMakeLists.txt new file mode 100644 index 00000000..e240c8ea --- /dev/null +++ b/03_week/tasks/CMakeLists.txt @@ -0,0 +1,9 @@ +add_subdirectory(data_stats) +add_subdirectory(unique) +add_subdirectory(range) +add_subdirectory(minmax) +add_subdirectory(find_all) +add_subdirectory(os_overload) +add_subdirectory(easy_compare) +add_subdirectory(filter) +add_subdirectory(enum_operators) \ No newline at end of file diff --git a/03_week/tasks/data_stats/CMakeLists.txt b/03_week/tasks/data_stats/CMakeLists.txt new file mode 100644 index 00000000..08a1ec38 --- /dev/null +++ b/03_week/tasks/data_stats/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_data_stats test.cpp) \ No newline at end of file diff --git a/03_week/tasks/data_stats/README.md b/03_week/tasks/data_stats/README.md new file mode 100644 index 00000000..d2580e59 --- /dev/null +++ b/03_week/tasks/data_stats/README.md @@ -0,0 +1,13 @@ +[average]: https://en.wikipedia.org/wiki/Average +[standard deviation]: https://en.wikipedia.org/wiki/Standard_deviation + +# Статистика данных + +Необходимо реализовать функцию `CalculateDataStats`, которая принимает на вход +контейнер `std::vector` и возвращает структуру `DataStats`, содержащую +среднее значение ([average]) и стандартное отклонение ([standard deviation]). + +## Примечание + +- Запрещено использовать алгоритмы из `` +- Рекомендуется решить задачу в один проход по контейнеру \ No newline at end of file diff --git a/03_week/tasks/data_stats/data_stats.cpp b/03_week/tasks/data_stats/data_stats.cpp new file mode 100644 index 00000000..b941c211 --- /dev/null +++ b/03_week/tasks/data_stats/data_stats.cpp @@ -0,0 +1,11 @@ +#include + + +struct DataStats { + double avg = 0.0; + double sd = 0.0; +}; + +/* return_type */ CalculateDataStats(/* args */) { + throw std::runtime_error{"Not implemented"}; +} diff --git a/03_week/tasks/data_stats/test.cpp b/03_week/tasks/data_stats/test.cpp new file mode 100644 index 00000000..7061f5f4 --- /dev/null +++ b/03_week/tasks/data_stats/test.cpp @@ -0,0 +1,80 @@ +#include + +#include +#include + +#include "data_stats.cpp" + +constexpr double EPSILON = 1e-6; + +TEST(DataStatsTest, EmptyVector) { + std::vector empty_vec; + DataStats stats = CalculateDataStats(empty_vec); + + EXPECT_DOUBLE_EQ(stats.avg, 0.0); + EXPECT_DOUBLE_EQ(stats.sd, 0.0); +} + +TEST(DataStatsTest, SingleElement) { + std::vector vec = {42}; + DataStats stats = CalculateDataStats(vec); + + EXPECT_DOUBLE_EQ(stats.avg, 42.0); + EXPECT_DOUBLE_EQ(stats.sd, 0.0); +} + +TEST(DataStatsTest, TwoElements) { + std::vector vec = {10, 20}; + DataStats stats = CalculateDataStats(vec); + + EXPECT_DOUBLE_EQ(stats.avg, 15.0); + EXPECT_DOUBLE_EQ(stats.sd, 5.0); +} + +TEST(DataStatsTest, AllSameElements) { + std::vector vec = {7, 7, 7, 7, 7}; + DataStats stats = CalculateDataStats(vec); + + EXPECT_DOUBLE_EQ(stats.avg, 7.0); + EXPECT_DOUBLE_EQ(stats.sd, 0.0); +} + +TEST(DataStatsTest, PositiveNumbers) { + std::vector vec = {1, 2, 3, 4, 5}; + DataStats stats = CalculateDataStats(vec); + + EXPECT_DOUBLE_EQ(stats.avg, 3.0); + EXPECT_NEAR(stats.sd, std::sqrt(2.0), EPSILON); +} + +TEST(DataStatsTest, NegativeNumbers) { + std::vector vec = {-5, -4, -3, -2, -1}; + DataStats stats = CalculateDataStats(vec); + + EXPECT_DOUBLE_EQ(stats.avg, -3.0); + EXPECT_NEAR(stats.sd, std::sqrt(2.0), EPSILON); +} + +TEST(DataStatsTest, MixedPositiveNegative) { + std::vector vec = {-2, -1, 0, 1, 2}; + DataStats stats = CalculateDataStats(vec); + + EXPECT_DOUBLE_EQ(stats.avg, 0.0); + EXPECT_NEAR(stats.sd, std::sqrt(2.0), EPSILON); +} + +TEST(DataStatsTest, ConstCorrectness) { + const std::vector vec = {-2, -1, 0, 1, 2}; + DataStats stats = CalculateDataStats(vec); + + EXPECT_DOUBLE_EQ(stats.avg, 0.0); + EXPECT_NEAR(stats.sd, std::sqrt(2.0), EPSILON); +} + +TEST(DataStatsTest, LargeNumbers) { + std::vector vec = {50000, 60000, 70000}; + DataStats stats = CalculateDataStats(vec); + + EXPECT_DOUBLE_EQ(stats.avg, 60000.0); + EXPECT_NEAR(stats.sd, std::sqrt(200000000.0 / 3.0), EPSILON); +} \ No newline at end of file diff --git a/03_week/tasks/easy_compare/CMakeLists.txt b/03_week/tasks/easy_compare/CMakeLists.txt new file mode 100644 index 00000000..f1c0b634 --- /dev/null +++ b/03_week/tasks/easy_compare/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_easy_compare test.cpp) \ No newline at end of file diff --git a/03_week/tasks/easy_compare/README.md b/03_week/tasks/easy_compare/README.md new file mode 100644 index 00000000..11b1e3f1 --- /dev/null +++ b/03_week/tasks/easy_compare/README.md @@ -0,0 +1,25 @@ +# Оператор сравнения + +Необходимо реализовать перегрузку оператор сравнения для структуры `Date`. +Операторы сравнения для структуры `Date` должен соответствовать обычной логике. + +Необходимо реализовать перегрузку операторов сравнения на меньше и на равно +для структуры `StudentInfo`. Сравнение производится для ранжирования участников +олимпиады, поэтому есть особые правила. + +Две структуры равны, если равны оценки и равны баллы. + +Сравнение на меньше происходит в следующем порядке: + +1. Сравнивается оценка `mark`. Высшая оценка в приоритете (`Z` < `D` < `C` < `B` < `A`). +1. Сравниваются баллы `score`. Больший балл в приоритете (80 < 100). +1. Сравнивается курс обучения `course`. Менее опытные в приоритете (4 < 3). +1. Сравнивается дата рождения, сначала год, затем месяц, затем день. + Более молодые в приоритете. + +Сравнение начинается с первого пункта и продолжается если элементы равны. + +## Примечание + +- Удобно воспользоваться функцией `std::tie` +- В задаче гарантируется корректность данных diff --git a/03_week/tasks/easy_compare/easy_compare.cpp b/03_week/tasks/easy_compare/easy_compare.cpp new file mode 100644 index 00000000..dd5cb7f6 --- /dev/null +++ b/03_week/tasks/easy_compare/easy_compare.cpp @@ -0,0 +1,16 @@ +#include + + +struct Date { + unsigned year; + unsigned month; + unsigned day; +}; + +struct StudentInfo { + size_t id; + char mark; + int score; + unsigned course; + Date birth_date; +}; \ No newline at end of file diff --git a/03_week/tasks/easy_compare/test.cpp b/03_week/tasks/easy_compare/test.cpp new file mode 100644 index 00000000..1701e7d6 --- /dev/null +++ b/03_week/tasks/easy_compare/test.cpp @@ -0,0 +1,269 @@ +#include + +#include +#include + +#include "easy_compare.cpp" + + +TEST(DateTest, DefaultCtor) { + Date date; + EXPECT_EQ(date.year, 0u); + EXPECT_EQ(date.month, 0u); + EXPECT_EQ(date.day, 0u); +} + +TEST(DateTest, ParameterizedCtor) { + Date date{2025, 12, 31}; + EXPECT_EQ(date.year, 2025u); + EXPECT_EQ(date.month, 12u); + EXPECT_EQ(date.day, 31u); +} + +TEST(DateTest, EqualityOperator) { + EXPECT_TRUE(Date({2007, 1, 1}) == Date({2007, 1, 1})); + EXPECT_FALSE(Date({2007, 1, 1}) == Date({2007, 1, 2})); + EXPECT_FALSE(Date({2007, 1, 1}) == Date({2007, 2, 1})); + EXPECT_FALSE(Date({2007, 1, 1}) == Date({2006, 1, 1})); +} + +TEST(DateTest, LessThanOperator) { + Date d1(2007, 1, 1); + Date d2(2007, 1, 2); + Date d3(2007, 2, 1); + Date d4(2008, 1, 1); + + EXPECT_TRUE(d1 < d2); + EXPECT_TRUE(d1 < d3); + EXPECT_TRUE(d1 < d4); + EXPECT_TRUE(d2 < d3); + EXPECT_TRUE(d2 < d4); + EXPECT_TRUE(d3 < d4); + + EXPECT_FALSE(d1 < d1); + EXPECT_FALSE(d2 < d1); + EXPECT_FALSE(d3 < d1); + EXPECT_FALSE(d4 < d1); + EXPECT_FALSE(d3 < d2); + EXPECT_FALSE(d4 < d3); +} + +TEST(DateTest, FullComparisonOperators) { + Date d1(2000, 1, 1); + Date d2(2000, 1, 2); + + EXPECT_TRUE(d1 != d2); + EXPECT_FALSE(d1 != d1); + + EXPECT_FALSE(d2 <= d1); + EXPECT_TRUE(d1 <= d2); + EXPECT_FALSE(d1 >= d2); + EXPECT_TRUE(d2 >= d1); + EXPECT_FALSE(d1 > d2); + EXPECT_TRUE(d2 > d1); + + EXPECT_TRUE(d1 >= d1); + EXPECT_TRUE(d1 <= d1); +} + +TEST(StudentInfoTest, EqualityOperator) { + StudentInfo s1{1, 'A', 100, 1, Date{2000, 1, 1}}; + StudentInfo s2{2, 'A', 100, 2, Date{1999, 12, 31}}; + StudentInfo s3{3, 'B', 100, 1, Date{2000, 1, 1}}; + StudentInfo s4{4, 'A', 90, 1, Date{2000, 1, 1}}; + + EXPECT_TRUE(s1 == s2); + EXPECT_FALSE(s1 == s3); + EXPECT_FALSE(s1 == s4); +} + +TEST(StudentInfoTest, NotEqualOperator) { + StudentInfo s1{1, 'A', 100, 1, Date{2000, 1, 1}}; + StudentInfo s2{4, 'B', 100, 1, Date{2000, 1, 1}}; + StudentInfo s4{2, 'A', 90, 1, Date{2000, 1, 1}}; + + EXPECT_TRUE(s1 != s2); + EXPECT_FALSE(s1 != s1); + EXPECT_TRUE(s1 != s4); +} + +TEST(StudentInfoTest, CompareByMark) { + StudentInfo z_student{1, 'Z', 10, 1, Date{2000, 1, 1}}; + StudentInfo d_student{2, 'D', 20, 2, Date{2001, 1, 1}}; + StudentInfo c_student{3, 'C', 30, 3, Date{2002, 1, 1}}; + StudentInfo b_student{2, 'B', 40, 4, Date{2003, 1, 1}}; + StudentInfo a_student{5, 'A', 50, 5, Date{2004, 1, 1}}; + + EXPECT_TRUE(z_student < d_student); + EXPECT_TRUE(z_student < c_student); + EXPECT_TRUE(z_student < b_student); + EXPECT_TRUE(z_student < a_student); + + EXPECT_TRUE(d_student < c_student); + EXPECT_TRUE(d_student < b_student); + EXPECT_TRUE(d_student < a_student); + + EXPECT_TRUE(c_student < b_student); + EXPECT_TRUE(c_student < a_student); + + EXPECT_TRUE(b_student < a_student); + + EXPECT_FALSE(a_student < z_student); + EXPECT_FALSE(a_student < d_student); + EXPECT_FALSE(a_student < c_student); + EXPECT_FALSE(a_student < b_student); +} + +TEST(StudentInfoTest, CompareByScore) { + StudentInfo high_score{3, 'A', 100, 1, Date{2000, 1, 1}}; + StudentInfo medium_score{2, 'A', 80, 2, Date{2001, 1, 1}}; + StudentInfo low_score{7, 'A', 60, 3, Date{2002, 1, 1}}; + + EXPECT_TRUE(low_score < medium_score); + EXPECT_TRUE(medium_score < high_score); + EXPECT_TRUE(low_score < high_score); + + EXPECT_FALSE(high_score < medium_score); + EXPECT_FALSE(high_score < low_score); + EXPECT_FALSE(medium_score < low_score); +} + +TEST(StudentInfoTest, CompareByCourse) { + StudentInfo first_year{1, 'A', 100, 1, Date{2000, 1, 1}}; + StudentInfo second_year{3, 'A', 100, 2, Date{2000, 1, 1}}; + StudentInfo third_year{2, 'A', 100, 3, Date{2000, 1, 1}}; + StudentInfo fourth_year{4, 'A', 100, 4, Date{2000, 1, 1}}; + + EXPECT_TRUE(fourth_year < third_year); + EXPECT_TRUE(fourth_year < second_year); + EXPECT_TRUE(fourth_year < first_year); + + EXPECT_TRUE(third_year < second_year); + EXPECT_TRUE(third_year < first_year); + + EXPECT_TRUE(second_year < first_year); + + EXPECT_FALSE(first_year < second_year); + EXPECT_FALSE(first_year < third_year); + EXPECT_FALSE(first_year < fourth_year); + EXPECT_FALSE(third_year < fourth_year); +} + +TEST(StudentInfoTest, CompareByBirthDate) { + StudentInfo young{1, 'A', 100, 1, Date{2001, 1, 1}}; + StudentInfo middle{2, 'A', 100, 1, Date{2000, 6, 15}}; + StudentInfo old{3, 'A', 100, 1, Date{1999, 12, 31}}; + + EXPECT_TRUE(old < middle); + EXPECT_TRUE(middle < young); + EXPECT_TRUE(old < young); + + EXPECT_FALSE(young < middle); + EXPECT_FALSE(young < old); + EXPECT_FALSE(middle < old); +} + +TEST(StudentInfoTest, CompareByDateComponents) { + StudentInfo year1{1, 'A', 100, 1, Date{2000, 1, 1}}; + StudentInfo year2{2, 'A', 100, 1, Date{2001, 1, 1}}; + + StudentInfo month1{4, 'A', 100, 1, Date{2000, 1, 1}}; + StudentInfo month2{3, 'A', 100, 1, Date{2000, 2, 1}}; + + StudentInfo day1{5, 'A', 100, 1, Date{2000, 1, 1}}; + StudentInfo day2{6, 'A', 100, 1, Date{2000, 1, 2}}; + + EXPECT_TRUE(year1 < year2); + EXPECT_FALSE(year2 < year1); + + EXPECT_TRUE(month1 < month2); + EXPECT_FALSE(month2 < month1); + + EXPECT_TRUE(day1 < day2); + EXPECT_FALSE(day2 < day1); +} + +TEST(StudentInfoTest, ComplexComparisons) { + StudentInfo a_student{1, 'A', 50, 4, Date{1990, 1, 1}}; + StudentInfo b_student{2, 'B', 100, 1, Date{2005, 1, 1}}; + + EXPECT_TRUE(b_student < a_student); + EXPECT_FALSE(a_student < b_student); + + StudentInfo high_score{4, 'B', 100, 4, Date{1990, 1, 1}}; + StudentInfo low_score{3, 'B', 50, 1, Date{2005, 1, 1}}; + + EXPECT_TRUE(low_score < high_score); + EXPECT_FALSE(high_score < low_score); + + StudentInfo first_year{5, 'C', 80, 1, Date{1995, 1, 1}}; + StudentInfo fourth_year{6, 'C', 80, 4, Date{2005, 1, 1}}; + + EXPECT_TRUE(fourth_year < first_year); + EXPECT_FALSE(first_year < fourth_year); + + StudentInfo older{8, 'D', 70, 2, Date{1998, 1, 1}}; + StudentInfo younger{7, 'D', 70, 2, Date{2000, 1, 1}}; + + EXPECT_TRUE(older < younger); + EXPECT_FALSE(younger < older); + + StudentInfo older_month{8, 'D', 70, 2, Date{2007, 1, 31}}; + StudentInfo younger_month{7, 'D', 70, 2, Date{2007, 2, 1}}; + + EXPECT_TRUE(older_month < younger_month); + EXPECT_FALSE(younger_month < older_month); + + StudentInfo older_day{8, 'D', 70, 2, Date{2007, 1, 1}}; + StudentInfo younger_day{7, 'D', 70, 2, Date{2007, 1, 2}}; + + EXPECT_TRUE(older_day < younger_day); + EXPECT_FALSE(younger_day < older_day); +} + +class StudentSortTest : public ::testing::Test { +protected: + void SetUp() override { + students_expected = { + {7, 'Z', 100, 1, Date{2018, 1, 1}}, + {6, 'D', 120, 2, Date{2017, 1, 1}}, + {5, 'C', 140, 3, Date{2016, 1, 1}}, + {4, 'B', 150, 5, Date{2017, 1, 1}}, + {8, 'A', 1999, 2, Date{2003, 1, 1}}, + {9, 'A', 1999, 1, Date{2003, 1, 1}}, + {3, 'A', 1999, 1, Date{2003, 2, 1}}, + {2, 'A', 1999, 1, Date{2004, 2, 1}}, + {1, 'A', 2000, 5, Date{2000, 1, 1}}, + {10, 'A', 2000, 4, Date{2000, 1, 1}}, + {11, 'A', 2000, 4, Date{2000, 1, 2}} + }; + } + + std::vector students_expected; +}; + +TEST_F(StudentSortTest, SortStudents) { + std::vector students = { + {1, 'A', 2000, 5, Date{2000, 1, 1}}, + {2, 'A', 1999, 1, Date{2004, 2, 1}}, + {3, 'A', 1999, 1, Date{2003, 2, 1}}, + {4, 'B', 150, 5, Date{2017, 1, 1}}, + {5, 'C', 140, 3, Date{2016, 1, 1}}, + {6, 'D', 120, 2, Date{2017, 1, 1}}, + {7, 'Z', 100, 1, Date{2018, 1, 1}}, + {8, 'A', 1999, 2, Date{2003, 1, 1}}, + {9, 'A', 1999, 1, Date{2003, 1, 1}}, + {10, 'A', 2000, 4, Date{2000, 1, 1}}, + {11, 'A', 2000, 4, Date{2000, 1, 2}} + }; + + std::sort(students.begin(), students.end()); + + for (size_t i = 0; i < students.size(); ++i) { + EXPECT_EQ(students[i].id, students_expected[i].id); + EXPECT_EQ(students[i].mark, students_expected[i].mark); + EXPECT_EQ(students[i].score, students_expected[i].score); + EXPECT_EQ(students[i].course, students_expected[i].course); + EXPECT_EQ(students[i].birth_date, students_expected[i].birth_date); + } +} \ No newline at end of file diff --git a/03_week/tasks/enum_operators/CMakeLists.txt b/03_week/tasks/enum_operators/CMakeLists.txt new file mode 100644 index 00000000..efb136e1 --- /dev/null +++ b/03_week/tasks/enum_operators/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_enum_operators test.cpp) \ No newline at end of file diff --git a/03_week/tasks/enum_operators/README.md b/03_week/tasks/enum_operators/README.md new file mode 100644 index 00000000..59f6ff0d --- /dev/null +++ b/03_week/tasks/enum_operators/README.md @@ -0,0 +1,19 @@ +# Переопределение побитовых операторов + +Необходимо реализовать перегрузку побитовых операторов для перечисления `CheckFlags`: + +- `operator|` - возвращает результат побитового ИЛИ двух перечислений +- `operator&` - возвращает `true`, если все активные флаги одного операнда + присутствуют у другого операнда, иначе возвращает `false`. В случае когда у одного + из операндов нет активных флагов возвращает `false` +- `operator^` - возвращает результат исключающего ИЛИ двух перечислений. +- `operator~` - инвертирует установленные флаги (для `NONE` результат будет `ALL`) +- `operator<<` - выводит через запятую в произвольный поток вывода имена включенных + флагов проверки + +## Ограничения + +Все операторы должны гарантировать, что результат не содержит флагов вне диапазона +`[NONE, ALL]`, даже если входные данные превышают диапазон. Флаги вне диапазона +игнорируются. + \ No newline at end of file diff --git a/03_week/tasks/enum_operators/enum_operators.cpp b/03_week/tasks/enum_operators/enum_operators.cpp new file mode 100644 index 00000000..a539be38 --- /dev/null +++ b/03_week/tasks/enum_operators/enum_operators.cpp @@ -0,0 +1,33 @@ +#include +#include + +enum class CheckFlags : uint8_t { + NONE = 0, + TIME = (1 << 0), + DATE = (1 << 1), + USER = (1 << 2), + CERT = (1 << 3), + KEYS = (1 << 4), + DEST = (1 << 5), + ALL = TIME | DATE | USER | CERT | KEYS | DEST +}; + +/* return_type */ operator|(/* args */) { + throw std::runtime_error{"Not implemented"}; +} + +/* return_type */ operator&(/* args */) { + throw std::runtime_error{"Not implemented"}; +} + +/* return_type */ operator^(/* args */) { + throw std::runtime_error{"Not implemented"}; +} + +/* return_type */ operator~(/* args */) { + throw std::runtime_error{"Not implemented"}; +} + +/* return_type */ operator<<(/* args */) { + throw std::runtime_error{"Not implemented"}; +} diff --git a/03_week/tasks/enum_operators/test.cpp b/03_week/tasks/enum_operators/test.cpp new file mode 100644 index 00000000..caf96643 --- /dev/null +++ b/03_week/tasks/enum_operators/test.cpp @@ -0,0 +1,226 @@ +#include + +#include +#include +#include + +#include "enum_operators.cpp" + + +TEST(EnumOperatorsTest, UnderlyingType) { + static_assert(std::is_same_v, uint8_t>, + "CheckFlags must use uint8_t as underlying type"); + EXPECT_EQ(sizeof(CheckFlags), sizeof(uint8_t)); + EXPECT_EQ(alignof(CheckFlags), alignof(uint8_t)); +} + +TEST(EnumOperatorsTest, BitwiseOr) { + EXPECT_EQ(CheckFlags::TIME | CheckFlags::DATE, static_cast( + static_cast(CheckFlags::TIME) + static_cast(CheckFlags::DATE))); + EXPECT_EQ(CheckFlags::TIME | CheckFlags::DEST | CheckFlags::USER, static_cast( + static_cast(CheckFlags::TIME) + static_cast(CheckFlags::DEST) + + static_cast(CheckFlags::USER))); + EXPECT_EQ(CheckFlags::TIME | CheckFlags::TIME, CheckFlags::TIME); + EXPECT_EQ(CheckFlags::NONE | CheckFlags::TIME, CheckFlags::TIME); + EXPECT_EQ(CheckFlags::ALL | CheckFlags::TIME, CheckFlags::ALL); +} + +TEST(EnumOperatorsTest, BitwiseOrOutside) { + EXPECT_EQ(static_cast(0xFF) | CheckFlags::NONE, CheckFlags::ALL); + uint8_t invalid = 0x40; + invalid += static_cast(CheckFlags::CERT); + EXPECT_EQ(static_cast(invalid) | CheckFlags::KEYS, + static_cast(static_cast(CheckFlags::CERT) + static_cast(CheckFlags::KEYS))); +} + +TEST(EnumOperatorsTest, BitwiseAnd) { + CheckFlags flags = CheckFlags::TIME | CheckFlags::DATE; + + EXPECT_TRUE(flags & CheckFlags::TIME); + EXPECT_TRUE(flags & CheckFlags::DATE); + EXPECT_FALSE(flags & CheckFlags::USER); + + EXPECT_TRUE(CheckFlags::ALL & CheckFlags::TIME); + EXPECT_TRUE(CheckFlags::TIME & CheckFlags::ALL); + EXPECT_TRUE(CheckFlags::DATE & CheckFlags::ALL); + EXPECT_TRUE(CheckFlags::ALL & CheckFlags::ALL); + + EXPECT_FALSE(CheckFlags::DATE & CheckFlags::NONE); + EXPECT_FALSE(CheckFlags::NONE & CheckFlags::DATE); + EXPECT_FALSE(CheckFlags::NONE & CheckFlags::ALL); + EXPECT_FALSE(CheckFlags::ALL & CheckFlags::NONE); + EXPECT_FALSE(CheckFlags::NONE & CheckFlags::NONE); +} + +TEST(EnumOperatorsTest, BitwiseAndComplex) { + CheckFlags flags = CheckFlags::TIME | CheckFlags::DATE | CheckFlags::USER; + + EXPECT_TRUE(flags & (CheckFlags::TIME | CheckFlags::DATE)); + EXPECT_TRUE(flags & (CheckFlags::USER | CheckFlags::DATE)); + EXPECT_TRUE((CheckFlags::TIME | CheckFlags::DATE) & flags); + EXPECT_TRUE((CheckFlags::USER | CheckFlags::DATE) & flags); + + EXPECT_FALSE(flags & CheckFlags::CERT); + EXPECT_FALSE(flags & (CheckFlags::TIME | CheckFlags::CERT)); + EXPECT_FALSE(flags & (CheckFlags::DATE | CheckFlags::CERT)); + EXPECT_FALSE(flags & (CheckFlags::DATE | CheckFlags::TIME | CheckFlags::CERT)); + + EXPECT_FALSE(flags & CheckFlags::NONE); + EXPECT_FALSE(CheckFlags::NONE & flags); + + EXPECT_TRUE(flags & flags); + EXPECT_TRUE(flags & (CheckFlags::TIME | CheckFlags::DATE | CheckFlags::USER | CheckFlags::CERT)); + EXPECT_TRUE((CheckFlags::TIME | CheckFlags::DATE | CheckFlags::USER | CheckFlags::CERT) & flags); +} + +TEST(EnumOperatorsTest, BitwiseAndOutside) { + EXPECT_FALSE(static_cast(0xC0) & static_cast(0xC0)); + EXPECT_FALSE(static_cast(0xC1) & static_cast(0xC2)); + EXPECT_FALSE(static_cast(0xC0) & CheckFlags::ALL); + EXPECT_TRUE(static_cast(0xC1) & static_cast(0x03)); +} + +TEST(EnumOperatorsTest, BitwiseXor) { + CheckFlags flags1 = CheckFlags::TIME | CheckFlags::DATE; + CheckFlags flags2 = CheckFlags::TIME | CheckFlags::USER; + + EXPECT_EQ(flags1 ^ flags2, CheckFlags::DATE | CheckFlags::USER); + EXPECT_EQ(flags2 ^ flags1, CheckFlags::DATE | CheckFlags::USER); + EXPECT_EQ(flags1 ^ flags1, CheckFlags::NONE); + EXPECT_EQ(flags1 ^ CheckFlags::NONE, flags1); + EXPECT_EQ(CheckFlags::NONE ^ flags2, flags2); + EXPECT_EQ(flags1 ^ CheckFlags::ALL, CheckFlags::USER | CheckFlags::CERT | CheckFlags::KEYS | CheckFlags::DEST); + EXPECT_EQ(CheckFlags::ALL ^ flags2, CheckFlags::DATE | CheckFlags::CERT | CheckFlags::KEYS | CheckFlags::DEST); +} + +TEST(EnumOperatorsTest, BitwiseXorOutside) { + EXPECT_EQ(static_cast(0xC0) ^ static_cast(0x80), CheckFlags::NONE); + EXPECT_EQ(static_cast(0xC1) ^ static_cast(0xC2), CheckFlags::TIME | CheckFlags::DATE); + EXPECT_EQ(static_cast(0xC0) ^ CheckFlags::ALL,CheckFlags::ALL); + EXPECT_EQ(static_cast(0xFF) ^ CheckFlags::ALL, CheckFlags::NONE); +} + +TEST(EnumOperatorsTest, BitwiseNot) { + EXPECT_EQ(~(CheckFlags::NONE), CheckFlags::ALL); + EXPECT_EQ(~(CheckFlags::ALL), CheckFlags::NONE); + + CheckFlags not_time = ~CheckFlags::TIME; + EXPECT_NE(not_time, CheckFlags::NONE); + EXPECT_NE(not_time, CheckFlags::TIME); + EXPECT_FALSE(not_time & CheckFlags::TIME); + + CheckFlags flags = CheckFlags::TIME | CheckFlags::DATE; + EXPECT_EQ(~(~flags), flags); +} + +TEST(EnumOperatorsTest, OutputOperator) { + std::stringstream ss; + + ss << CheckFlags::NONE; + EXPECT_EQ(ss.str(), "NONE"); + ss.str(""); + + ss << CheckFlags::ALL; + EXPECT_EQ(ss.str(), "TIME, DATE, USER, CERT, KEYS, DEST"); + ss.str(""); + + ss << CheckFlags::DEST; + EXPECT_EQ(ss.str(), "DEST"); + ss.str(""); + + ss << (CheckFlags::TIME | CheckFlags::DATE | CheckFlags::USER); + std::string result = ss.str(); + EXPECT_EQ(result, "TIME, DATE, USER"); +} + +TEST(EnumOperatorsTest, OutputOperatorOutside) { + std::stringstream ss; + + ss << static_cast(0xC1); + EXPECT_EQ(ss.str(), "TIME"); + ss.str(""); + + ss << static_cast(0xFF); + EXPECT_EQ(ss.str(), "TIME, DATE, USER, CERT, KEYS, DEST"); + ss.str(""); + + ss << static_cast(0x80); + EXPECT_EQ(ss.str(), "NONE"); + ss.str(""); +} + +TEST(EnumOperatorsTest, OutputOperatorChainUse) { + std::stringstream ss; + ss << CheckFlags::CERT << " " << CheckFlags::KEYS << " " << CheckFlags::DEST; + std::string result = ss.str(); + EXPECT_EQ(result, "CERT KEYS DEST"); +} + + +TEST(EnumOperatorsTest, Sanitization) { + uint8_t raw_value = 0xFF; + CheckFlags flags_with_invalid = static_cast(raw_value); + + CheckFlags or_result = flags_with_invalid | CheckFlags::NONE; + EXPECT_EQ(or_result, CheckFlags::ALL); + + EXPECT_TRUE(flags_with_invalid & CheckFlags::ALL); + + CheckFlags xor_result = flags_with_invalid ^ CheckFlags::ALL; + EXPECT_EQ(xor_result, CheckFlags::NONE); + std::cerr << flags_with_invalid << std::endl; + + CheckFlags not_result = ~flags_with_invalid; + std::cerr << not_result << std::endl; + EXPECT_EQ(not_result, CheckFlags::NONE); +} + +TEST(EnumOperatorsTest, CombinedOperations) { + CheckFlags base = CheckFlags::TIME | CheckFlags::DATE | CheckFlags::USER; + + CheckFlags added = base | CheckFlags::CERT; + EXPECT_TRUE(added & CheckFlags::CERT); + + CheckFlags removed = added ^ CheckFlags::DATE; + EXPECT_FALSE(removed & CheckFlags::DATE); + EXPECT_TRUE(removed & CheckFlags::TIME); + EXPECT_TRUE(removed & CheckFlags::USER); + EXPECT_TRUE(removed & CheckFlags::CERT); + + CheckFlags inverse = ~removed; + EXPECT_FALSE(inverse & CheckFlags::TIME); + EXPECT_FALSE(inverse & CheckFlags::USER); + EXPECT_FALSE(inverse & CheckFlags::CERT); + EXPECT_TRUE(inverse & CheckFlags::DATE); + EXPECT_TRUE(inverse & CheckFlags::KEYS); + EXPECT_TRUE(inverse & CheckFlags::DEST); +} + +TEST(EnumOperatorsTest, OperationWithConst) { + const CheckFlags base = CheckFlags::TIME | CheckFlags::DATE | CheckFlags::USER; + + const CheckFlags added_lhs = base | CheckFlags::CERT; + const CheckFlags added_rhs = CheckFlags::CERT | base; + EXPECT_TRUE(added_lhs & CheckFlags::CERT); + EXPECT_TRUE(CheckFlags::CERT & added_rhs); + + const CheckFlags removed_lhs = added_lhs ^ CheckFlags::DATE; + const CheckFlags removed_rhs = CheckFlags::DATE ^ added_lhs; + EXPECT_FALSE(removed_lhs & CheckFlags::DATE); + EXPECT_TRUE(removed_lhs & CheckFlags::TIME); + EXPECT_TRUE(CheckFlags::USER & removed_lhs); + EXPECT_TRUE(CheckFlags::CERT & removed_lhs); + + EXPECT_FALSE(removed_rhs & CheckFlags::DATE); + EXPECT_TRUE(removed_rhs & CheckFlags::TIME); + EXPECT_TRUE(CheckFlags::USER & removed_rhs); + EXPECT_TRUE(CheckFlags::CERT & removed_rhs); + + const CheckFlags inverse = ~removed_lhs; + EXPECT_FALSE(inverse & CheckFlags::TIME); + EXPECT_FALSE(inverse & CheckFlags::USER); + EXPECT_FALSE(inverse & CheckFlags::CERT); + EXPECT_TRUE(inverse & CheckFlags::DATE); + EXPECT_TRUE(inverse & CheckFlags::KEYS); + EXPECT_TRUE(inverse & CheckFlags::DEST); +} \ No newline at end of file diff --git a/03_week/tasks/filter/CMakeLists.txt b/03_week/tasks/filter/CMakeLists.txt new file mode 100644 index 00000000..e5f4644d --- /dev/null +++ b/03_week/tasks/filter/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_filter test.cpp) \ No newline at end of file diff --git a/03_week/tasks/filter/README.md b/03_week/tasks/filter/README.md new file mode 100644 index 00000000..4cd5bace --- /dev/null +++ b/03_week/tasks/filter/README.md @@ -0,0 +1,11 @@ +# Фильтрация данных + +Необходимо реализовать функцию `Filter`, которая принимает `std::vector` +и указатель на функцию предикат, и оставляет в контейнере элементы, +удовлетворяющие предикату, в исходном порядке. + +## Примечание + +- Запрещено использовать функции из `` +- Алгоритм должен работать за линейное время `O(n)` (за один проход) +- Постарайтесь не выделять дополнительную память, дополнительная память `O(1)` \ No newline at end of file diff --git a/03_week/tasks/filter/filter.cpp b/03_week/tasks/filter/filter.cpp new file mode 100644 index 00000000..6648cb39 --- /dev/null +++ b/03_week/tasks/filter/filter.cpp @@ -0,0 +1,6 @@ +#include + + +/* return_type */ Filter(/* args */) { + throw std::runtime_error{"Not implemented"}; +} \ No newline at end of file diff --git a/03_week/tasks/filter/test.cpp b/03_week/tasks/filter/test.cpp new file mode 100644 index 00000000..2ad4ff38 --- /dev/null +++ b/03_week/tasks/filter/test.cpp @@ -0,0 +1,172 @@ +#include + +#include +#include +#include +#include +#include + +#include "filter.cpp" + + +bool IsEven(int x) { + return x % 2 == 0; +} + +bool IsOdd(int x) { + return x % 2; +} + +bool IsPositive(int x) { + return x > 0; +} + +bool AlwaysFalse(int) { + return false; +} + +TEST(FilterTest, EmptyVector) { + std::vector empty_vec; + Filter(empty_vec, IsEven); + EXPECT_TRUE(empty_vec.empty()); +} + +TEST(FilterTest, AllElementsFalse) { + std::vector vec = {1, -3, 5, -7, 9}; + Filter(vec, IsEven); + EXPECT_TRUE(vec.empty()); +} + +TEST(FilterTest, NullptrPredicate) { + std::vector vec = {1, 2, 3, 4, 5}; + size_t expected_size = vec.size(); + EXPECT_NO_THROW(Filter(vec, nullptr)); + EXPECT_EQ(vec.size(), expected_size); +} + +TEST(FilterTest, SingleElementTrue) { + std::vector vec = {18}; + Filter(vec, IsEven); + EXPECT_EQ(vec.size(), 1); + EXPECT_EQ(vec[0], 18); +} + +TEST(FilterTest, SingleElementFalse) { + std::vector vec = {17}; + Filter(vec, IsEven); + EXPECT_TRUE(vec.empty()); +} + +TEST(FilterTest, AllElementsPass) { + std::vector vec = {2, 4, 6, 8, 10}; + Filter(vec, IsEven); + std::vector expected = {2, 4, 6, 8, 10}; + EXPECT_EQ(vec.size(), expected.size()); + EXPECT_EQ(vec, expected); +} + +TEST(FilterTest, MixedElements) { + std::vector vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + Filter(vec, IsEven); + std::vector expected = {2, 4, 6, 8, 10}; + EXPECT_EQ(vec.size(), expected.size()); + EXPECT_EQ(vec, expected); +} + +TEST(FilterTest, NotSortedElements) { + std::vector vec = {10, 2, 3, 4, 5, 7, 6, 8, 9, 1}; + Filter(vec, IsEven); + std::vector expected = {10, 2, 4, 6, 8}; + EXPECT_EQ(vec, expected); +} + +TEST(FilterTest, NotRealocate) { + std::vector vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + auto capacity = vec.capacity(); + auto ptr_before = vec.data(); + Filter(vec, IsEven); + EXPECT_EQ(vec.data(), ptr_before); + EXPECT_EQ(vec.capacity(), capacity); +} + +TEST(FilterTest, AllFalsePredicate) { + std::vector vec = {1, 2, 3, 4, 5}; + Filter(vec, AlwaysFalse); + EXPECT_TRUE(vec.empty()); +} + +TEST(FilterTest, LargeVector) { + const size_t SIZE = 1'000'000; + std::vector vec(SIZE); + for (size_t i = 0; i < SIZE; ++i) { + vec[i] = static_cast(i); + } + + Filter(vec, IsEven); + + EXPECT_EQ(vec.size(), SIZE / 2); + + for (size_t i = 0; i < vec.size(); ++i) { + EXPECT_EQ(vec[i], static_cast(i * 2)); + EXPECT_TRUE(IsEven(vec[i])); + } +} + +TEST(FilterTest, ConsecutiveCalls) { + std::vector vec = {1, -2, 3, 4, 5, 6, 7, -8, 9, 10}; + + Filter(vec, IsEven); + Filter(vec, IsEven); + std::vector expected = {-2, 4, 6, -8, 10}; + EXPECT_EQ(vec, expected); + + Filter(vec, IsPositive); + expected = {4, 6, 10}; + EXPECT_EQ(vec, expected); +} + +TEST(FilterTest, BigRandomDataMultipleSeeds) { + const size_t NUM_TESTS = 10; + const size_t VECTOR_SIZE = 1'000'000; + const int MIN_VALUE = -1'000'000; + const int MAX_VALUE = 1'000'000; + + std::random_device rd; + std::mt19937 seed_gen(rd()); + std::uniform_int_distribution seed_dist(0, 100000); + + double erase_duration = 0; + double filter_duration = 0; + for (size_t test_idx = 0; test_idx < NUM_TESTS; ++test_idx) { + unsigned int seed = seed_dist(seed_gen); + std::mt19937 gen(seed); + std::uniform_int_distribution value_dist(MIN_VALUE, MAX_VALUE); + + std::vector test(VECTOR_SIZE); + for (size_t i = 0; i < VECTOR_SIZE; ++i) { + test[i] = value_dist(gen); + } + + auto expected = test; + auto start = std::chrono::high_resolution_clock::now(); + std::erase_if(expected, IsOdd); + auto end = std::chrono::high_resolution_clock::now(); + erase_duration += std::chrono::duration_cast(end - start).count(); + + start = std::chrono::high_resolution_clock::now(); + Filter(test, IsEven); + end = std::chrono::high_resolution_clock::now(); + filter_duration += std::chrono::duration_cast(end - start).count(); + + ASSERT_EQ(test.size(), expected.size()) + << "Test #" << test_idx << " with seed " << seed + << ": size mismatch"; + EXPECT_EQ(test, expected) + << "Test #" << test_idx << " with seed " << seed + << ": content mismatch"; + } + + EXPECT_LE(filter_duration, 1.2 * erase_duration) + << "Function too slow: " + <<"filter_duration = " << filter_duration << " ms, erase_duration = " << erase_duration << " ms\n"; +} \ No newline at end of file diff --git a/03_week/tasks/find_all/CMakeLists.txt b/03_week/tasks/find_all/CMakeLists.txt new file mode 100644 index 00000000..e96cdff7 --- /dev/null +++ b/03_week/tasks/find_all/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_find_all test.cpp) \ No newline at end of file diff --git a/03_week/tasks/find_all/README.md b/03_week/tasks/find_all/README.md new file mode 100644 index 00000000..50475494 --- /dev/null +++ b/03_week/tasks/find_all/README.md @@ -0,0 +1,9 @@ +# Найти все элементы + +Необходимо реализовать функцию `FindAll`, которая принимает на вход контейнер +`std::vector` и указатель на функцию предикат, и возвращает контейнер +позиций всех элементов, удовлетворяющих предикату. + +## Примечание + +- Запрещено использовать функции из `` \ No newline at end of file diff --git a/03_week/tasks/find_all/find_all.cpp b/03_week/tasks/find_all/find_all.cpp new file mode 100644 index 00000000..74f393b2 --- /dev/null +++ b/03_week/tasks/find_all/find_all.cpp @@ -0,0 +1,6 @@ +#include + + +/* return_type */ FindAll(/* args */) { + throw std::runtime_error{"Not implemented"}; +} \ No newline at end of file diff --git a/03_week/tasks/find_all/test.cpp b/03_week/tasks/find_all/test.cpp new file mode 100644 index 00000000..f58dc607 --- /dev/null +++ b/03_week/tasks/find_all/test.cpp @@ -0,0 +1,119 @@ +#include + +#include + +#include "find_all.cpp" + +bool IsEven(int x) { + return x % 2 == 0; +} + +bool IsPositive(int x) { + return x > 0; +} + +bool AlwaysFalse(int) { + return false; +} + +TEST(FindAllTest, EmptyVector) { + std::vector empty_vec; + auto result = FindAll(empty_vec, IsEven); + EXPECT_TRUE(result.empty()); +} + +TEST(FindAllTest, NullptrPredicate) { + std::vector vec = {1, 2, 3, 4, 5}; + auto result = FindAll(vec, nullptr); + EXPECT_TRUE(result.empty()); +} + +TEST(FindAllTest, SingleElementTrue) { + std::vector vec = {18}; + auto result = FindAll(vec, IsEven); + EXPECT_EQ(result.size(), 1); + EXPECT_EQ(result[0], 0); +} + +TEST(FindAllTest, SingleElementFalse) { + std::vector vec = {17}; + auto result = FindAll(vec, IsEven); + EXPECT_TRUE(result.empty()); +} + +TEST(FindAllTest, AllElementsPass) { + std::vector vec = {2, 4, 6, 8, 10}; + auto result = FindAll(vec, IsEven); + + EXPECT_EQ(result.size(), vec.size()); + std::vector expected = {0, 1, 2, 3, 4}; + EXPECT_EQ(result, expected); +} + +TEST(FindAllTest, AllElementsFalse) { + std::vector vec = {1, 3, 5, 7, 9}; + auto result = FindAll(vec, IsEven); + EXPECT_TRUE(result.empty()); +} + +TEST(FindAllTest, MixedElements) { + std::vector vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + auto result = FindAll(vec, IsEven); + std::vector expected = {1, 3, 5, 7, 9}; + EXPECT_EQ(result, expected); +} + +TEST(FindAllTest, NotSortedElements) { + std::vector vec = {10, 2, 3, 4, 5, 7, 6, 8, 9, 1}; + auto result = FindAll(vec, IsEven); + std::vector expected = {0, 1, 3, 6, 7}; + EXPECT_EQ(result, expected); +} + +TEST(FindAllTest, AllFalsePredicate) { + std::vector vec = {1, 2, 3, 4, 5}; + auto result = FindAll(vec, AlwaysFalse); + EXPECT_TRUE(result.empty()); +} + +TEST(FindAllTest, LargeVector) { + const size_t SIZE = 1'000'000; + std::vector vec(SIZE); + for (size_t i = 0; i < SIZE; ++i) { + vec[i] = static_cast(i); + } + + auto result = FindAll(vec, IsEven); + + EXPECT_EQ(result.size(), SIZE / 2); + + for (size_t i = 0; i < result.size(); ++i) { + EXPECT_EQ(result[i], i * 2); + EXPECT_TRUE(IsEven(vec[result[i]])); + } +} + +TEST(FindAllTest, CapacityOptimization) { + std::vector vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + + auto result = FindAll(vec, IsEven); + EXPECT_EQ(result.capacity(), result.size()); +} + +TEST(FindAllTest, ConsecutiveCalls) { + std::vector vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + + auto result1 = FindAll(vec, IsEven); + auto result2 = FindAll(vec, IsEven); + EXPECT_EQ(result1, result2); + + auto result3 = FindAll(vec, IsPositive); + EXPECT_EQ(result3.size(), 10); +} + +TEST(FindAllTest, ConstCorrectness) { + const std::vector vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + auto result = FindAll(vec, IsEven); + std::vector expected = {1, 3, 5, 7, 9}; + EXPECT_EQ(result, expected); +} \ No newline at end of file diff --git a/03_week/tasks/minmax/CMakeLists.txt b/03_week/tasks/minmax/CMakeLists.txt new file mode 100644 index 00000000..a2a33c75 --- /dev/null +++ b/03_week/tasks/minmax/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_minmax test.cpp) \ No newline at end of file diff --git a/03_week/tasks/minmax/README.md b/03_week/tasks/minmax/README.md new file mode 100644 index 00000000..b9067359 --- /dev/null +++ b/03_week/tasks/minmax/README.md @@ -0,0 +1,14 @@ +# Минимум и максимум + +Необходимо реализовать функцию `MinMax`, которая принимает на вход контейнер +`std::vector` и возвращает пару итераторов, указывающих на минимальный +и максимальный элемент контейнера. + +## Примечание + +- Запрещено использовать `std::minmax_element` и другие функции из `` +- Необходимо найти оба элемента за один проход по контейнеру. +- Для пустого контейнера необходимо вернуть пару итераторов на конец контейнера. +- В случае нескольких одинаковых элементов, итератор на минимум должен указывать + на первое вхождение, итератор на максимум на последнее вхождение соответствующих + элементов \ No newline at end of file diff --git a/03_week/tasks/minmax/minmax.cpp b/03_week/tasks/minmax/minmax.cpp new file mode 100644 index 00000000..c2869799 --- /dev/null +++ b/03_week/tasks/minmax/minmax.cpp @@ -0,0 +1,6 @@ +#include + + +/* return_type */ MinMax(/* args */) { + throw std::runtime_error{"Not implemented"}; +} diff --git a/03_week/tasks/minmax/test.cpp b/03_week/tasks/minmax/test.cpp new file mode 100644 index 00000000..70e1cb68 --- /dev/null +++ b/03_week/tasks/minmax/test.cpp @@ -0,0 +1,141 @@ +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "minmax.cpp" + + +TEST(MinMaxTest, EmptyVector) { + std::vector empty_vec; + auto [min_it, max_it] = MinMax(empty_vec); + + EXPECT_EQ(min_it, empty_vec.end()); + EXPECT_EQ(max_it, empty_vec.end()); +} + +TEST(MinMaxTest, SingleElement) { + std::vector vec = {42}; + auto [min_it, max_it] = MinMax(vec); + + EXPECT_EQ(min_it, vec.begin()); + EXPECT_EQ(max_it, vec.begin()); + EXPECT_EQ(*min_it, 42); + EXPECT_EQ(*max_it, 42); +} + +TEST(MinMaxTest, AllEqualElements) { + std::vector vec = {5, 5, 5, 5, 5}; + auto [min_it, max_it] = MinMax(vec); + + EXPECT_NE(min_it, vec.begin()); + EXPECT_NE(max_it, vec.end() - 1); + EXPECT_EQ(*min_it, 5); + EXPECT_EQ(*max_it, 5); +} + +TEST(MinMaxTest, BeginMinEndMax) { + std::vector vec = {1, 2, 3, 4, 5}; + auto [min_it, max_it] = MinMax(vec); + + EXPECT_EQ(min_it, vec.begin()); + EXPECT_EQ(max_it, vec.end() - 1); + EXPECT_EQ(*min_it, 1); + EXPECT_EQ(*max_it, 5); + +} + +TEST(MinMaxTest, BeginMaxEndMin) { + std::vector vec = {5, 4, 3, 2, 1}; + auto [min_it, max_it] = MinMax(vec); + + EXPECT_EQ(min_it, vec.end() - 1); + EXPECT_EQ(max_it, vec.begin()); + EXPECT_EQ(*min_it, 1); + EXPECT_EQ(*max_it, 5); +} + +TEST(MinMaxTest, MinAndMaxInMiddle) { + std::vector vec = {5, 3, 2, 1, 5, 4, 2, 1}; + auto [min_it, max_it] = MinMax(vec); + + EXPECT_EQ(min_it, vec.begin() + 3); + EXPECT_EQ(max_it, vec.begin() + 4); + EXPECT_EQ(*min_it, 1); + EXPECT_EQ(*max_it, 5); +} + +TEST(MinMaxTest, NegativeNumbers) { + std::vector vec = {-5, -10, -3, -1, -8}; + auto [min_it, max_it] = MinMax(vec); + + EXPECT_EQ(min_it, vec.begin() + 1); + EXPECT_EQ(max_it, vec.begin() + 3); + EXPECT_EQ(*min_it, -10); + EXPECT_EQ(*max_it, -1); +} + +TEST(MinMaxTest, MixedPositiveNegative) { + std::vector vec = {-5, 10, -3, 0, 8, -20}; + auto [min_it, max_it] = MinMax(vec); + + EXPECT_EQ(min_it, vec.end() - 1); + EXPECT_EQ(max_it, vec.begin() + 1); + EXPECT_EQ(*min_it, -20); + EXPECT_EQ(*max_it, 10); +} + +TEST(MinMaxTest, LargeVector) { + std::vector vec(1000); + + int value = -vec.size() / 2; + for (size_t i = 0; i < vec.size(); ++i, ++value) { + vec[i] = value; + } + + vec[500] = -vec.size(); + vec[750] = vec.size(); + + auto [min_it, max_it] = MinMax(vec); + + EXPECT_EQ(min_it, vec.begin() + 500); + EXPECT_EQ(max_it, vec.begin() + 750); + EXPECT_EQ(*min_it, -vec.size()); + EXPECT_EQ(*max_it, vec.size()); +} + +TEST(MinMaxTest, ConstCorrectness) { + const std::vector vec = {1, 9}; + auto [min_it, max_it] = MinMax(vec); + + EXPECT_EQ(*min_it, 1); + EXPECT_EQ(*max_it, 9); +} + +TEST(MinMaxTest, PerformanceCheck) { + const double THRESHOLD = 0.3; + const size_t SIZE = 1'000'000u; + std::vector large_vec(SIZE); + std::iota(large_vec.begin(), large_vec.end(), 0); + std::shuffle(large_vec.begin(), large_vec.end(), std::mt19937{18}); + + auto start = std::chrono::high_resolution_clock::now(); + auto [min_it, max_it] = MinMax(large_vec); + auto end = std::chrono::high_resolution_clock::now(); + auto duration = std::chrono::duration_cast(end - start); + + start = std::chrono::high_resolution_clock::now(); + auto [min_it_std, max_it_std] = std::minmax_element(large_vec.begin(), large_vec.end()); + end = std::chrono::high_resolution_clock::now(); + auto duration_std = std::chrono::duration_cast(end - start); + + EXPECT_LE(std::abs(duration_std.count() - duration.count()) * 1.0, duration_std.count() * THRESHOLD) << + "Your function is very slowly"; + EXPECT_EQ(*min_it, *min_it_std); + EXPECT_EQ(*max_it, *max_it_std); +} \ No newline at end of file diff --git a/03_week/tasks/os_overload/CMakeLists.txt b/03_week/tasks/os_overload/CMakeLists.txt new file mode 100644 index 00000000..48aae693 --- /dev/null +++ b/03_week/tasks/os_overload/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_os_overload test.cpp) \ No newline at end of file diff --git a/03_week/tasks/os_overload/README.md b/03_week/tasks/os_overload/README.md new file mode 100644 index 00000000..2986a87a --- /dev/null +++ b/03_week/tasks/os_overload/README.md @@ -0,0 +1,42 @@ +# Перегрузка оператора вывода + +Необходимо реализовать операторы вывода в поток для типа `CircleRegionList` и +всех вложенных в него типов. + +Структура `Coord2D` содержит два целочисленных поля `x`, `y`, по умолчанию, +имеющие значения начала координат. + +Структура `Circle` имеет поле `Coord2D` для центра окружности, и целочисленное поле +для задания радиуса окружности. По умолчанию радиус должен быть равен 1 и не должен +принимать отрицательных значений. + +Пара `CircleRegion` включает в себя структуру `Circle` и булевое поле, которое +характеризует внутренняя или внешняя зона окружности активна, `true` - внутренняя, +`false` - внешняя + +Требования к выводу: + +- `Coord2D` - должен выводится в формате `(x, y)` +- `Circle` - должен выводиться в формате `circle[{center}, r = {radius}]`, где + `{center}` вывод координат центра в соответствии с `Coord2D`, а `{radius}` + значение радиуса, или `circle[]`, если радиус равен нулю. +- `CircleRegion` - при выводе должен ставить `+` для внутренней зоны окружности и + `-` для внешней перед форматированным выводом `Circle` +- `CircleRegionList` - выводит внутри фигурных скобок с нулевым отступом, весь список + `CircleRegion` через запятую в форматированном виде, с новой строки, с отступом в одну + табуляцию или `{}`, если список пуст. + +Возможный вывод в поток: + +``` +{ + +circle[(-1, 3), r = 5], + -circle[(0, 0), r = 17], + +circle[], + -circle[] +} +``` + +## Примечание + +- Должен работать вывод в произвольный поток вывода. \ No newline at end of file diff --git a/03_week/tasks/os_overload/os_overload.cpp b/03_week/tasks/os_overload/os_overload.cpp new file mode 100644 index 00000000..e473418d --- /dev/null +++ b/03_week/tasks/os_overload/os_overload.cpp @@ -0,0 +1,21 @@ +#include +#include +#include + + +struct Coord2D { + int x; + int y; +}; + +struct Circle { + Coord2D coord; + unsigned radius; +}; + +using CircleRegion = std::pair; +using CircleRegionList = std::vector; + +/* return_type */ operator<<(/* args */) { + throw std::runtime_error{"Not implemented"}; +} diff --git a/03_week/tasks/os_overload/test.cpp b/03_week/tasks/os_overload/test.cpp new file mode 100644 index 00000000..461009a3 --- /dev/null +++ b/03_week/tasks/os_overload/test.cpp @@ -0,0 +1,308 @@ +#include + +#include +#include + +#include "os_overload.cpp" + +TEST(Coord2DTest, DefaultConstructor) { + Coord2D coord; + EXPECT_EQ(coord.x, 0); + EXPECT_EQ(coord.y, 0); +} + +TEST(Coord2DTest, Coord2DCreation) { + Coord2D coord = {5, -3}; + EXPECT_EQ(coord.x, 5); + EXPECT_EQ(coord.y, -3); +} + +TEST(Coord2DTest, OutputOperator) { + { + Coord2D coord; + std::ostringstream oss; + oss << coord; + EXPECT_EQ(oss.str(), "(0, 0)"); + } + { + Coord2D coord{42, -15}; + std::ostringstream oss; + oss << coord; + EXPECT_EQ(oss.str(), "(42, -15)"); + } + { + Coord2D coord{-1, 3}; + std::ostringstream oss; + oss << coord; + EXPECT_EQ(oss.str(), "(-1, 3)"); + } +} + +TEST(CircleTest, DefaultConstructor) { + Circle circle; + EXPECT_EQ(circle.coord.x, 0); + EXPECT_EQ(circle.coord.y, 0); + EXPECT_EQ(circle.radius, 1u); +} + +TEST(CircleTest, CircleCreation) { + { + Coord2D center{10, 20}; + Circle circle(center, 5); + EXPECT_EQ(circle.coord.x, 10); + EXPECT_EQ(circle.coord.y, 20); + EXPECT_EQ(circle.radius, 5u); + } + { + Circle circle({-5, 7}); + EXPECT_EQ(circle.coord.x, -5); + EXPECT_EQ(circle.coord.y, 7); + EXPECT_EQ(circle.radius, 1u); + } +} + +TEST(CircleTest, OutputOperator) { + { + Circle circle; + std::ostringstream oss; + oss << circle; + EXPECT_EQ(oss.str(), "circle[(0, 0), r = 1]"); + } + { + Coord2D center(-1, 3); + Circle circle(center, 5); + std::ostringstream oss; + oss << circle; + EXPECT_EQ(oss.str(), "circle[(-1, 3), r = 5]"); + } + { + Coord2D center(0, 0); + Circle circle(center, 17); + std::ostringstream oss; + oss << circle; + EXPECT_EQ(oss.str(), "circle[(0, 0), r = 17]"); + } + { + Coord2D center(10, 10); + Circle circle(center, 0); + std::ostringstream oss; + oss << circle; + EXPECT_EQ(oss.str(), "circle[]"); + } + { + Coord2D center(100, -200); + Circle circle(center, 1000); + std::ostringstream oss; + oss << circle; + EXPECT_EQ(oss.str(), "circle[(100, -200), r = 1000]"); + } +} + +TEST(CircleRegionTest, CreateAndOutput) { + { + Circle circle({3, 4}); + CircleRegion region(circle, true); + std::ostringstream oss; + oss << region; + EXPECT_EQ(oss.str(), "+circle[(3, 4), r = 1]"); + } + { + Circle circle({-5, -6}, 7); + CircleRegion region(circle, false); + std::ostringstream oss; + oss << region; + EXPECT_EQ(oss.str(), "-circle[(-5, -6), r = 7]"); + } + { + Circle circle({1, 2}, 0); + CircleRegion region(circle, true); + std::ostringstream oss; + oss << region; + EXPECT_EQ(oss.str(), "+circle[]"); + } + { + Circle circle({1, 2}, 0); + CircleRegion region(circle, false); + std::ostringstream oss; + oss << region; + EXPECT_EQ(oss.str(), "-circle[]"); + } +} + +TEST(CircleRegionListTest, EmptyList) { + CircleRegionList empty_list; + std::ostringstream oss; + oss << empty_list; + std::string expected = "{}"; + EXPECT_EQ(oss.str(), expected); +} + +TEST(CircleRegionListTest, SingleElement) { + CircleRegionList list; + list.emplace_back(Circle(Coord2D{1, 2}, 3), true); + std::ostringstream oss; + oss << list; + std::string expected = "{\n\t+circle[(1, 2), r = 3]\n}"; + EXPECT_EQ(oss.str(), expected); +} + +TEST(CircleRegionListTest, MultipleElements) { + CircleRegionList list; + list.emplace_back(Circle(Coord2D(-1, 3), 5), true); + list.emplace_back(Circle(Coord2D(0, 0), 17), false); + list.emplace_back(Circle(Coord2D(10, 20), 0), true); + list.emplace_back(Circle(Coord2D(-5, -5), 0), false); + + std::ostringstream oss; + oss << list; + + std::string expected = + "{\n" + "\t+circle[(-1, 3), r = 5],\n" + "\t-circle[(0, 0), r = 17],\n" + "\t+circle[],\n" + "\t-circle[]\n" + "}"; + EXPECT_EQ(oss.str(), expected); +} + +TEST(CircleRegionListTest, VariousCombinations) { + CircleRegionList list; + + // Добавляем разные комбинации + list.emplace_back(Circle({0, 0}), true); + list.emplace_back(Circle(Coord2D(5, 5), 10), false); + list.emplace_back(Circle(Coord2D(-10, -10), 0), true); + list.emplace_back(Circle(Coord2D(100, 200), 50), true); + list.emplace_back(Circle(Coord2D(-3, 7), 2), false); + + std::ostringstream oss; + oss << list; + + std::string expected = + "{\n" + "\t+circle[(0, 0), r = 1],\n" + "\t-circle[(5, 5), r = 10],\n" + "\t+circle[],\n" + "\t+circle[(100, 200), r = 50],\n" + "\t-circle[(-3, 7), r = 2]\n" + "}"; + EXPECT_EQ(oss.str(), expected); +} + +TEST(FullTaskTest, ChainedOutput) { + { + Coord2D coord{42, -15}; + std::ostringstream oss; + oss << coord << coord; + EXPECT_EQ(oss.str(), "(42, -15)(42, -15)"); + } + { + Circle circle_one({0, 0}, 17); + Circle circle_two({10, 10}, 0); + std::ostringstream oss; + oss << circle_one << circle_two; + EXPECT_EQ(oss.str(), "circle[(0, 0), r = 17]circle[]"); + } + { + Circle circle({-5, -6}, 7); + CircleRegion region(circle, false); + std::ostringstream oss; + oss << region << region; + EXPECT_EQ(oss.str(), "-circle[(-5, -6), r = 7]-circle[(-5, -6), r = 7]"); + } + { + CircleRegionList list; + list.emplace_back(Circle(Coord2D(1, 2), 3), true); + + std::ostringstream oss; + oss << "List:\n" << list << '\n' << list << "\nEnd"; + + std::string expected = "List:\n{\n\t+circle[(1, 2), r = 3]\n}\n{\n\t+circle[(1, 2), r = 3]\n}\nEnd"; + EXPECT_EQ(oss.str(), expected); + } +} + +TEST(FullTaskTest, ConstCorrectness) { + { + const Coord2D coord{42, -15}; + std::ostringstream oss; + oss << coord << coord; + EXPECT_EQ(oss.str(), "(42, -15)(42, -15)"); + } + { + const Circle circle_one({0, 0}, 17); + const Circle circle_two({10, 10}, 0); + std::ostringstream oss; + oss << circle_one << circle_two; + EXPECT_EQ(oss.str(), "circle[(0, 0), r = 17]circle[]"); + } + { + Circle circle({-5, -6}, 7); + const CircleRegion region(circle, false); + std::ostringstream oss; + oss << region << region; + EXPECT_EQ(oss.str(), "-circle[(-5, -6), r = 7]-circle[(-5, -6), r = 7]"); + } + { + const CircleRegionList list = { std::make_pair(Circle(Coord2D(1, 2), 3), true) }; + + std::ostringstream oss; + oss << "List:\n" << list << '\n' << list << "\nEnd"; + + std::string expected = "List:\n{\n\t+circle[(1, 2), r = 3]\n}\n{\n\t+circle[(1, 2), r = 3]\n}\nEnd"; + EXPECT_EQ(oss.str(), expected); + } +} + +class StandardOutputCaptureTest : public ::testing::Test { +protected: + void SetUp() override { + origin_cout = std::cout.rdbuf(buffer.rdbuf()); + } + + void TearDown() override { + std::cout.rdbuf(origin_cout); + } + + std::string GetOutput() { + return buffer.str(); + } + + void ClearOutput() { + buffer.str(""); + } + + std::stringstream buffer; + std::streambuf* origin_cout; +}; + +TEST_F(StandardOutputCaptureTest, WorkWithCout) { + { + Coord2D coord{42, -15}; + EXPECT_NO_THROW(std::cout << coord); + EXPECT_EQ(GetOutput(), "(42, -15)"); + } + ClearOutput(); + { + Circle circle_one({0, 0}, 17); + Circle circle_two({10, 10}, 0); + EXPECT_NO_THROW(std::cout << circle_one << circle_two); + EXPECT_EQ(GetOutput(), "circle[(0, 0), r = 17]circle[]"); + } + ClearOutput(); + { + Circle circle({-5, -6}, 7); + CircleRegion region(circle, false); + EXPECT_NO_THROW(std::cout << region); + EXPECT_EQ(GetOutput(), "-circle[(-5, -6), r = 7]"); + } + ClearOutput(); + { + CircleRegionList list; + list.emplace_back(Circle(Coord2D(1, 2), 3), true); + EXPECT_NO_THROW(std::cout << "List:\n" << list << '\n' << list << "\nEnd"); + std::string expected = "List:\n{\n\t+circle[(1, 2), r = 3]\n}\n{\n\t+circle[(1, 2), r = 3]\n}\nEnd"; + EXPECT_EQ(GetOutput(), expected); + } +} \ No newline at end of file diff --git a/03_week/tasks/range/CMakeLists.txt b/03_week/tasks/range/CMakeLists.txt new file mode 100644 index 00000000..650a0654 --- /dev/null +++ b/03_week/tasks/range/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_range test.cpp) \ No newline at end of file diff --git a/03_week/tasks/range/README.md b/03_week/tasks/range/README.md new file mode 100644 index 00000000..4fb3ccad --- /dev/null +++ b/03_week/tasks/range/README.md @@ -0,0 +1,11 @@ +# Диапазон элементов + +Необходимо реализовать функцию `Range`, которая принимает на вход значение +начала диапазона, конца диапазона, шаг, и возвращает вектор `std::vector` +значений из диапазона `[from, to)` с шагом `step`. Шаг по умолчанию равен 1. + +## Примечание + +- Запрещено использовать функции из `` +- Рекомендуется избежать реалокаций памяти, то есть выделить память под нужное + количество элементов заранее \ No newline at end of file diff --git a/03_week/tasks/range/range.cpp b/03_week/tasks/range/range.cpp new file mode 100644 index 00000000..d2085495 --- /dev/null +++ b/03_week/tasks/range/range.cpp @@ -0,0 +1,7 @@ +#include +#include + + +std::vector Range(int from, int to, int step) { + throw std::runtime_error{"Not implemented"}; +} diff --git a/03_week/tasks/range/test.cpp b/03_week/tasks/range/test.cpp new file mode 100644 index 00000000..1b680b90 --- /dev/null +++ b/03_week/tasks/range/test.cpp @@ -0,0 +1,98 @@ +#include + +#include +#include + +#include "range.cpp" + +TEST(RangeTest, SimpleIncreasing) { + EXPECT_EQ(Range(1, 6, 1), std::vector({1, 2, 3, 4, 5})); + EXPECT_EQ(Range(1, 7, 2), std::vector({1, 3, 5})); + EXPECT_EQ(Range(-20, 10, 10), std::vector({-20, -10, 0})); +} + +TEST(RangeTest, SimpleDecreasing) { + EXPECT_EQ(Range(6, 1, -1), std::vector({6, 5, 4, 3, 2})); + EXPECT_EQ(Range(7, 1, -2), std::vector({7, 5, 3})); + EXPECT_EQ(Range(20, 18, -3), std::vector({20})); + EXPECT_EQ(Range(-20, -24, -3), std::vector({-20, -23})); +} + +TEST(RangeTest, EmptyRanges) { + EXPECT_TRUE(Range(0, 0, 2).empty()); + EXPECT_TRUE(Range(7, 7, 1).empty()); + EXPECT_TRUE(Range(20, 20, -2).empty()); + EXPECT_TRUE(Range(-5, -5, -2).empty()); + EXPECT_TRUE(Range(-7, -7, 1).empty()); +} + +TEST(RangeTest, InvalidParameters) { + EXPECT_TRUE(Range(1, 7, -1).empty()); + EXPECT_TRUE(Range(3, 7, 0).empty()); + EXPECT_TRUE(Range(2, -2, 2).empty()); + EXPECT_TRUE(Range(3, -7, 0).empty()); + EXPECT_TRUE(Range(-2, -3, 2).empty()); +} + +TEST(RangeTest, SingleElement) { + EXPECT_EQ(Range(7, 8, 1), std::vector({7})); + EXPECT_EQ(Range(7, 8, 2), std::vector({7})); + EXPECT_EQ(Range(7, 8, 100), std::vector({7})); + + EXPECT_EQ(Range(5, 4, -1), std::vector({5})); + EXPECT_EQ(Range(5, 4, -2), std::vector({5})); + EXPECT_EQ(Range(5, 4, -100), std::vector({5})); + + EXPECT_EQ(Range(-7, 8, 100), std::vector({-7})); + EXPECT_EQ(Range(-7, -8, -100), std::vector({-7})); +} + +TEST(RangeTest, NegativeNumbers) { + EXPECT_EQ(Range(-5, 0, 1), std::vector({-5, -4, -3, -2, -1})); + EXPECT_EQ(Range(-5, 5, 2), std::vector({-5, -3, -1, 1, 3})); + EXPECT_EQ(Range(0, -5, -1), std::vector({0, -1, -2, -3, -4})); + EXPECT_EQ(Range(0, -10, -3), std::vector({0, -3, -6, -9})); +} + +TEST(RangeTest, LargeStep) { + EXPECT_EQ(Range(0, 100, 33), std::vector({0, 33, 66, 99})); + EXPECT_EQ(Range(100, 0, -33), std::vector({100, 67, 34, 1})); +} + +TEST(RangeTest, DefaultStep) { + EXPECT_EQ(Range(0, 5), std::vector({0, 1, 2, 3, 4})); + EXPECT_EQ(Range(-2, 3), std::vector({-2, -1, 0, 1, 2})); + EXPECT_TRUE(Range(5, 5).empty()); + EXPECT_TRUE(Range(5, 3).empty()); +} + +TEST(RangeTest, CapacityMatchesSize) { + auto result = Range(0, 100, 3); + EXPECT_EQ(result.capacity(), result.size()); +} + +TEST(RangePerformanceTest, LargeRange) { + const int from = -1'000'000; + const int to = 1'000'000; + + auto result_asc = Range(from, to); + EXPECT_EQ(result_asc.size(), to - from); + EXPECT_EQ(result_asc.front(), from); + EXPECT_EQ(result_asc.back(), to - 1); + + for (size_t i = 0; i < result_asc.size(); ++i) { + EXPECT_EQ(result_asc[i], from + static_cast(i)); + } + + auto result_desc = Range(to - 1, from - 1, -1); + EXPECT_EQ(result_desc.size(), to - from); + EXPECT_EQ(result_desc.front(), to - 1); + EXPECT_EQ(result_desc.back(), from); + + for (size_t i = 0; i < result_asc.size(); ++i) { + EXPECT_EQ(result_desc[i], to - 1 - static_cast(i)); + } + + EXPECT_GE(result_asc.capacity(), result_asc.size()); + EXPECT_GE(result_desc.capacity(), result_desc.size()); +} \ No newline at end of file diff --git a/03_week/tasks/unique/CMakeLists.txt b/03_week/tasks/unique/CMakeLists.txt new file mode 100644 index 00000000..3920144d --- /dev/null +++ b/03_week/tasks/unique/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_unique test.cpp) \ No newline at end of file diff --git a/03_week/tasks/unique/README.md b/03_week/tasks/unique/README.md new file mode 100644 index 00000000..5f5c253e --- /dev/null +++ b/03_week/tasks/unique/README.md @@ -0,0 +1,11 @@ +# Уникальные элементы + +Необходимо реализовать функцию `Unique`, которая принимает отсортированный +вектор `std::vector` и возвращает вектор уникальных элементов в исходном +порядке. + +## Примечание + +- Запрещено использовать функции из `` +- Рекомендуется избегать частых реалокаций памяти +- Вместимость вектора должна соответствовать количеству элементов \ No newline at end of file diff --git a/03_week/tasks/unique/test.cpp b/03_week/tasks/unique/test.cpp new file mode 100644 index 00000000..6c459abd --- /dev/null +++ b/03_week/tasks/unique/test.cpp @@ -0,0 +1,92 @@ +#include + +#include +#include +#include + +#include "unique.cpp" + +TEST(UniqueTest, EmptyVector) { + std::vector empty; + auto result = Unique(empty); + EXPECT_TRUE(result.empty()); + EXPECT_EQ(result.capacity(), result.size()); +} + +TEST(UniqueTest, SingleElement) { + std::vector vec = {42}; + auto result = Unique(vec); + EXPECT_EQ(result.size(), 1); + EXPECT_EQ(result[0], 42); +} + +TEST(UniqueTest, AllSameElements) { + std::vector vec = {1, 1, 1, 1, 1}; + auto result = Unique(vec); + EXPECT_EQ(result.size(), 1); + EXPECT_EQ(result[0], 1); +} + +TEST(UniqueTest, AlreadyUniqueSorted) { + std::vector vec = {1, 2, 3, 4, 5}; + auto result = Unique(vec); + EXPECT_EQ(result.size(), 5); + EXPECT_EQ(result, vec); +} + +TEST(UniqueTest, SimpleDuplicates) { + std::vector vec = {1, 2, 2, 3, 3, 3}; + auto result = Unique(vec); + std::vector expected = {1, 2, 3}; + EXPECT_EQ(result, expected); +} + +TEST(UniqueTest, MultipleDuplicates) { + std::vector vec = {1, 1, 2, 2, 2, 3, 3, 4, 5, 5, 5, 5}; + auto result = Unique(vec); + std::vector expected = {1, 2, 3, 4, 5}; + EXPECT_EQ(result, expected); +} + +TEST(UniqueTest, NegativeNumbers) { + std::vector vec = {-5, -5, -3, -3, -3, 0, 0, 2, 2, 2, 2}; + auto result = Unique(vec); + std::vector expected = {-5, -3, 0, 2}; + EXPECT_EQ(result, expected); +} + +TEST(UniqueTest, ZeroAndDuplicates) { + std::vector vec = {0, 0, 0, 0}; + auto result = Unique(vec); + std::vector expected = {0}; + EXPECT_EQ(result, expected); +} + +TEST(UniqueTest, RandomSortedData) { + std::mt19937 gen(18); + std::uniform_int_distribution dist(-1000, 1000); + + const size_t N = 1'000'000; + std::vector vec(N); + + for (size_t i = 0; i < N; ++i) { + vec[i] = dist(gen); + } + std::sort(vec.begin(), vec.end()); + std::vector expected = vec; + auto last = std::unique(expected.begin(), expected.end()); + expected.erase(last, expected.end()); + + auto result = Unique(vec); + + EXPECT_EQ(result.size(), expected.size()); + EXPECT_EQ(result.size(), result.capacity()); + EXPECT_EQ(result, expected); +} + +TEST(UniqueTest, ConstCorrectness) { + const std::vector vec = {1, 2, 2, 3, 3, 3}; + auto result = Unique(vec); + std::vector expected = {1, 2, 3}; + EXPECT_EQ(result, expected); +} \ No newline at end of file diff --git a/03_week/tasks/unique/unique.cpp b/03_week/tasks/unique/unique.cpp new file mode 100644 index 00000000..9d2545bb --- /dev/null +++ b/03_week/tasks/unique/unique.cpp @@ -0,0 +1,6 @@ +#include +#include + +/* return_type */ Unique(/* args */) { + throw std::runtime_error{"Not implemented"}; +} diff --git a/grading/deadlines.json b/grading/deadlines.json index 7c07c7e8..ac7682be 100644 --- a/grading/deadlines.json +++ b/grading/deadlines.json @@ -64,5 +64,51 @@ "max_score": 200, "deadline": "2025-12-09 23:59", "description": "Форматированный вывод массива" + }, + + "data_stats": { + "max_score": 100, + "deadline": "2025-12-18 23:59", + "description": "Статистика данных" + }, + "unique": { + "max_score": 100, + "deadline": "2025-12-18 23:59", + "description": "Уникальные элементы" + }, + "range": { + "max_score": 100, + "deadline": "2025-12-18 23:59", + "description": "Диапазон элементов" + }, + "minmax": { + "max_score": 100, + "deadline": "2025-12-18 23:59", + "description": "Минимум и максимум" + }, + "find_all": { + "max_score": 100, + "deadline": "2025-12-18 23:59", + "description": "Найти все элементы" + }, + "os_overload": { + "max_score": 100, + "deadline": "2025-12-18 23:59", + "description": "Перегрузка оператора вывода" + }, + "easy_compare": { + "max_score": 100, + "deadline": "2025-12-18 23:59", + "description": "Оператор сравнения" + }, + "filter": { + "max_score": 100, + "deadline": "2025-12-18 23:59", + "description": "Фильтрация данных" + }, + "enum_operators": { + "max_score": 200, + "deadline": "2025-12-18 23:59", + "description": "Переопределение побитовых операторов" } } \ No newline at end of file From 8a3e434afac69c3cdecb1fbd8c7a4469a9443931 Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Tue, 16 Dec 2025 14:50:02 +0500 Subject: [PATCH 21/40] Revert "Auto-sync: 2025-12-10 13:53" This reverts commit 5ba2b469305ae9abc163538bc260eb1c2fecfa71. --- 01_week/01_basic_cpp.md | 2 +- 03_week/03_data_structures.md | 916 ------------------ 03_week/03_data_structures.pdf | Bin 308213 -> 0 bytes 03_week/CMakeLists.txt | 17 - 03_week/examples/struct_examples.cpp | 172 ---- 03_week/examples/union_examples.cpp | 117 --- 03_week/examples/vector_examples.cpp | 89 -- 03_week/tasks/CMakeLists.txt | 9 - 03_week/tasks/data_stats/CMakeLists.txt | 1 - 03_week/tasks/data_stats/README.md | 13 - 03_week/tasks/data_stats/data_stats.cpp | 11 - 03_week/tasks/data_stats/test.cpp | 80 -- 03_week/tasks/easy_compare/CMakeLists.txt | 1 - 03_week/tasks/easy_compare/README.md | 25 - 03_week/tasks/easy_compare/easy_compare.cpp | 16 - 03_week/tasks/easy_compare/test.cpp | 269 ----- 03_week/tasks/enum_operators/CMakeLists.txt | 1 - 03_week/tasks/enum_operators/README.md | 19 - .../tasks/enum_operators/enum_operators.cpp | 33 - 03_week/tasks/enum_operators/test.cpp | 226 ----- 03_week/tasks/filter/CMakeLists.txt | 1 - 03_week/tasks/filter/README.md | 11 - 03_week/tasks/filter/filter.cpp | 6 - 03_week/tasks/filter/test.cpp | 172 ---- 03_week/tasks/find_all/CMakeLists.txt | 1 - 03_week/tasks/find_all/README.md | 9 - 03_week/tasks/find_all/find_all.cpp | 6 - 03_week/tasks/find_all/test.cpp | 119 --- 03_week/tasks/minmax/CMakeLists.txt | 1 - 03_week/tasks/minmax/README.md | 14 - 03_week/tasks/minmax/minmax.cpp | 6 - 03_week/tasks/minmax/test.cpp | 141 --- 03_week/tasks/os_overload/CMakeLists.txt | 1 - 03_week/tasks/os_overload/README.md | 42 - 03_week/tasks/os_overload/os_overload.cpp | 21 - 03_week/tasks/os_overload/test.cpp | 308 ------ 03_week/tasks/range/CMakeLists.txt | 1 - 03_week/tasks/range/README.md | 11 - 03_week/tasks/range/range.cpp | 7 - 03_week/tasks/range/test.cpp | 98 -- 03_week/tasks/unique/CMakeLists.txt | 1 - 03_week/tasks/unique/README.md | 11 - 03_week/tasks/unique/test.cpp | 92 -- 03_week/tasks/unique/unique.cpp | 6 - grading/deadlines.json | 46 - 45 files changed, 1 insertion(+), 3148 deletions(-) delete mode 100644 03_week/03_data_structures.md delete mode 100644 03_week/03_data_structures.pdf delete mode 100644 03_week/CMakeLists.txt delete mode 100644 03_week/examples/struct_examples.cpp delete mode 100644 03_week/examples/union_examples.cpp delete mode 100644 03_week/examples/vector_examples.cpp delete mode 100644 03_week/tasks/CMakeLists.txt delete mode 100644 03_week/tasks/data_stats/CMakeLists.txt delete mode 100644 03_week/tasks/data_stats/README.md delete mode 100644 03_week/tasks/data_stats/data_stats.cpp delete mode 100644 03_week/tasks/data_stats/test.cpp delete mode 100644 03_week/tasks/easy_compare/CMakeLists.txt delete mode 100644 03_week/tasks/easy_compare/README.md delete mode 100644 03_week/tasks/easy_compare/easy_compare.cpp delete mode 100644 03_week/tasks/easy_compare/test.cpp delete mode 100644 03_week/tasks/enum_operators/CMakeLists.txt delete mode 100644 03_week/tasks/enum_operators/README.md delete mode 100644 03_week/tasks/enum_operators/enum_operators.cpp delete mode 100644 03_week/tasks/enum_operators/test.cpp delete mode 100644 03_week/tasks/filter/CMakeLists.txt delete mode 100644 03_week/tasks/filter/README.md delete mode 100644 03_week/tasks/filter/filter.cpp delete mode 100644 03_week/tasks/filter/test.cpp delete mode 100644 03_week/tasks/find_all/CMakeLists.txt delete mode 100644 03_week/tasks/find_all/README.md delete mode 100644 03_week/tasks/find_all/find_all.cpp delete mode 100644 03_week/tasks/find_all/test.cpp delete mode 100644 03_week/tasks/minmax/CMakeLists.txt delete mode 100644 03_week/tasks/minmax/README.md delete mode 100644 03_week/tasks/minmax/minmax.cpp delete mode 100644 03_week/tasks/minmax/test.cpp delete mode 100644 03_week/tasks/os_overload/CMakeLists.txt delete mode 100644 03_week/tasks/os_overload/README.md delete mode 100644 03_week/tasks/os_overload/os_overload.cpp delete mode 100644 03_week/tasks/os_overload/test.cpp delete mode 100644 03_week/tasks/range/CMakeLists.txt delete mode 100644 03_week/tasks/range/README.md delete mode 100644 03_week/tasks/range/range.cpp delete mode 100644 03_week/tasks/range/test.cpp delete mode 100644 03_week/tasks/unique/CMakeLists.txt delete mode 100644 03_week/tasks/unique/README.md delete mode 100644 03_week/tasks/unique/test.cpp delete mode 100644 03_week/tasks/unique/unique.cpp diff --git a/01_week/01_basic_cpp.md b/01_week/01_basic_cpp.md index 138bdffe..12c07244 100644 --- a/01_week/01_basic_cpp.md +++ b/01_week/01_basic_cpp.md @@ -571,7 +571,7 @@ auto rs = R"(popular escape-sequences in "C++" '\n' '\t')"; // const char* 1. -> : `a::b` 2. -> : `a++`, `a--`, `(a)`, `{a}`, `a()`, `a[]`, `a.b`, `a->b` -3. <- : `++a`, `--a`, `+a`, `-a`, `!a`, `~a` `()a`, `*a`, `&a`, `sizeof`, +3. <- : `++a`, `--a`, `+a`, `-a`, `!a`, `()a`, `*a`, `&a`, `sizeof`, `new`, `delete` 4. -> : `a.*b`, `a->*b` 5. -> : `a * b`, `a / b`, `a % b` diff --git a/03_week/03_data_structures.md b/03_week/03_data_structures.md deleted file mode 100644 index 67aeea52..00000000 --- a/03_week/03_data_structures.md +++ /dev/null @@ -1,916 +0,0 @@ -# Лекция 3. Структуры данных. Перегрузка функций. Вектор - -1. [Структура `struct`](#struct) - - [Размер структуры](#struct_sizeof) - - [Создание объекта](#struct_var) - - [Инициализация полей значениями по умолчанию](#struct_default_value) - - [Доступ к полям структуры. Оператор `.`](#operator_dot) - - [Доступ к полям структуры. Оператор `->`](#operator_arrow) -1. [Объединение `union`](#union) - - [Использование неактивной переменной](#union_using_inactive) - - [Анонимные объединения](#union_anonymous) -1. [Пара `std::pair`](#std_pair) - - [Инициализация и доступ к полям](#std_pair_access) - - [Доступ к полям с помощью `std::get` (_C++11_)](#std_pair_get) - - [Создание с помощью `std::make_pair`](#std_make_pair) -1. [Кортеж `std::tuple` (_С++11_)](#std_tuple) - - [Инициализация](#std_tuple_init) - - [Доступ к полям с помощью `std::get`](#std_tuple_get) - - [Создание с помощью `std::make_tuple`](#std_make_tuple) -1. [Функция связывания `std::tie`](#std_tie) -1. [Структурное связывание (_structered bindings_) _C++17_](#structered_bindings) -1. [Перегрузка функций](#overloading_function) - - [Перегрузка операторов](#overloading_operator) -1. [Асимптотическая сложность](#big_o_notation) -1. [Последовательные контейнеры](#sequentual_container) -1. [Контейнер `std::vector`](#std_vector) - - [Инициализация `std::vector`](#std_vector_init) - - [Устройство `std::vector`](#std_vector_structure) - - [Обзор методов `std::vector`](#std_vector_overview) - - [Вместимость контейнера `std::vector`](#std_vector_capacity) - - [Добавление в конец `std::vector`](#std_vector_push_back) - - [Доступ к элементам `std::vector`](#std_vector_access) - - [Итераторы](#iterators) - - [Итераторы `std::vector`](#std_vector_iterators) - - [Итерирование `std::vector`](#std_vector_iterating) - - [Метод `resize()`](#std_vector_resize) - - [Метод `reserve()`](#std_vector_reserve) - - [Метод `pop_back()`](#std_vector_pop_back) - - [Метод `clear()`](#std_vector_clear) - - [Остальные методы `std::vector`](#std_vector_overview) - - -## Структура `struct` - -Структура представляет собой пользовательский тип данных, позволяющий -объединять несколько переменных разных типов под одним именем. - -Синтаксис определения: `struct { ... };` - -- `` - имя структуры, является именем нового пользовательского типа данных -- `...` - ноль и более переменных - -Синтаксис объявления: `struct ;` - -- может пригодиться, когда необходимо использовать структуру раньше, чем - она определена. - -Переменная, объявленная внутри структуры, называется **полем** структуры. - -Гарантируется, что поля структуры располагаются в памяти в порядке -объявления полей внутри структуры. - -### Размер структуры - -Размер структуры зависит от размера входящих в неё полей и выравнивания -(_alighnment_). - -```c++ -struct Point { int x; int y; }; -struct IID { int x; int y; double d; }; -struct IDI { int x; double d; int y;}; -struct IDIB { int x; double d; int y; bool b}; - -std::cout << sizeof(Point) << std::endl; // 8 -std::cout << sizeof(IID) << std::endl; // 16 -std::cout << sizeof(IDI) << std::endl; // 24 -std::cout << sizeof(IDIB) << std::endl; // 24 -``` - -### Создание объекта - -Имя структуры используется в качестве имени типа при создании объекта. - -Синтаксис: ` ;` - -Рекомендуется сразу инициализировать поля объекта, сделать это можно, -используя фигурные скобки `{}` и перечисляя значение полей в том порядке, -в каком они определены в структуре. Также, можно использовать `()` -непосредственно после имени объекта. - -```c++ -struct Product { - int count; - double price; -}; - -Product obj; -Product obj_empty = {}; -Product obj_init = {10, 300.0}; -Product obj_part = {10}; // partitial -Product obj_agr{10, 300.0}; // uniform -``` - -Имя типа структуры может совпадать с каким-либо объектом, тогда при объявлении -можно разрешить конфликт имен добавив `struct` перед именем типа структуры -(как правило, лучше **ИЗБЕЖАТЬ** совпадающих названий): - -Синтаксис: `struct ;` - -```c++ -struct Product { - int count; - double price; -}; - -std::string Product = "some_product_name"; -// Product p = {10, 300.0}; // compile error -struct Product p = {10, 300.0}; // OK -``` - -Можно объявить структуру сразу с созданием объектов данного типа, **НО** -лучше так **НЕ** делать, особенно в глобальной области видимости. - -Синтаксис: `struct { ... } , ...;` - -```c++ -struct Point { - int x; - int y; -} p1, p2; -``` - -### Инициализация полей значениями по умолчанию - -Начиная с _C++11_ можно инициализировать поля значениями по умолчанию -через `=` при определении структуры. Тогда при создании объекта данного -типа поля будут инициализированы значениями по умолчанию. - -```c++ -struct Product { - int count = 0; - double price = 100.0; -}; - -Product one; -Product two = {}; -Product three{}; -``` - -### Доступ к полям структуры. Оператор `.` - -Доступ к полям структуры через объект типа структуры осуществляется через -оператор `.` точка. После имени объекта ставится `.` и затем имя поля: - -```c++ -struct Product { - int count; - double price; -}; - -Product obj; -obj.count = 10; -obj.price = 300.0; -``` - -### Доступ к полям структуры. Оператор `->` - -Доступ к полям структуры через указатель на объект типа структуры -осуществляется через оператор `->` стрелочка. После указателя на объект -ставится `->` и затем имя поля: - -```c++ -struct Product { - int count; - double price; -}; - -Product obj; -Product* ptr = &obj; -ptr->count = 10; -ptr->price = 300.0; -``` - -## Объединение `union` - -Объединение представляет собой пользовательский тип данных, который позволяет -хранить разные типы данных в одной области памяти. В один момент может храниться -только один тип данных. Размер объединения соответствует наибольшему по размеру -типу, входящего в объединение. - -Синтаксис: `union { ... };` - -```c++ -union Union { - char c; - int i; - double d; -}; -``` - -Все входящие в объединение типы переменных расположены по одному адресу. - -Доступ к переменным аналогичен структурам. - -### Использование неактивной переменной - -Активная переменная определяется последним присваиванием, при этом -время жизни предыдущей активной переменной заканчивается. Использование -неактивной переменной это **UB**. Однако, современные компиляторы, как -правило, представляют расширение языка и позволяют читать неактивные -переменные. Таким образом, можно получить доступ к отдельным байтам. - -```c++ -union Color { - uint32_t value; - struct { - uint8_t a - uint8_t b; - uint8_t g; - uint8_t r; - } components; -}; - -Color c; -c.value = 0x00FF9955; - -std::cout << "Red: " << c.components.r << std::endl; // 0 -std::cout << "Green: " << c.components.g << std::endl; // -std::cout << "Blue: " << c.components.b << std::endl; // 255 -std::cout << "Alpha: " << c.components.a << std::endl; // 0 -``` -- но это по-прежнему **UB** и платформо-зависимый код, на _little-endian_ - и _big-endian_ различный вывод. - -Аналогично можно работать отдельно с битами: - -```c++ -union HardwareRegister { - uint32_t raw; - struct { - uint32_t enable : 1; - uint32_t mode : 3; - uint32_t clock_divider : 4; - uint32_t reserved : 24; - } bits; // 1 + 3 + 4 + 24 = 32 -}; - -HardwareRegister reg; -reg.raw = 0; -reg.bits.enable = 1; -reg.bits.mode = 5; -reg.bits.clock_divider = 8; -``` - -### Анонимные объединения - -Можно создавать анонимные объединения, тогда все внутренние имена переменных -попадают во внешнюю область видимости объединения и не должно быть -конфликта имен. - -```c++ -struct Variant { - enum Type { INT, FLOAT, STRING } type; - - union { - int intValue; - float floatValue; - char stringValue[50]; - }; -}; -``` - -## Пара `std::pair` - -Пара `std::pair` - это шаблонная структура, позволяющая хранить переменные -двух типов в полях `first` и `second`. - -Заголовочный файл: `` - -Объявление: `std::pair ;` -- `T1` - тип первой переменной -- `T2` - тип второй переменной - -Методы: -- `swap` - для обмена значений с другой парой - -Доступны операторы сравнения, сравнение производится лексикографически. - -Пара используется в стандартных ассоциативных контейнерах, при возврате -ключа и значения контейнера. А также, может быть использована при возврате -двух значений из функции. Как правило, это менее информативно, чем структура -с понятными именами полей. - -### Инициализация и доступ к полям - -Доступ к соответствующим переменным в паре, осуществляется через имена полей -`first` и `second`. - -Инициализировать пару: - -```c++ -std::pair p; // uninitialized -p.first = 'c'; -p.second = static_cast(p.first); - -std::pair p1 = {true, "Book"}; -std::pair p2(10, 3.14); // ctor -std::pair p3{true, 2.73}; // uniform C++11 -``` - -### Доступ к полям с помощью `std::get` (_C++11_) - -В заголовочном файле `` есть шаблонная функция `std::get`, которая -на вход принимает пару и возвращает ссылку на поле пары. - -Может работать по индексу: -- `0` - `first` -- `1` - `second` -- другие значения приведут к ошибке компиляции - -Может работать по типу переменной, в случае одинаковых типов будет ошибка -компиляции. - -```c++ -std::pair p = {true, 10}; -std::cout << '(' << std::get<0>(p) << ", " << std::get<1>(p) << ')' << std::endl; -std::cout << '(' << std::get(p) << ", " << std::get(p) << ')' << std::endl; -std::get(p) = false; -std::get<1>(p) = 0; -``` - -### Создание с помощью `std::make_pair` - -В заголовочном файле `` есть шаблонная функция `std::make_pair` -принимающая два аргумента и возвращающая пару из двух аргументов. -Удобство заключается в возможности использования вывода типа переменной, -если написать ключевое слово `auto`. - -```c++ -auto p1 = std::make_pair(15, 'c'); // std::pair -auto p2 = std::make_pair(true, 3.14); // std::pair - -int value = 3; -int array[] = {1, 2, 3}; -auto p3 = std::make_pair(std::ref(value), array); // std::pair -``` - -## Кортеж `std::tuple` (_С++11_) - -Кортеж `std::tuple` - шаблонный класс, позволяющий хранить произвольное число -аргументов различных типов. - -Заголовочный файл: `` - -Объявление: `std::tuple ;` -- `T...` - произвольное количество различных типов - -Методы: -- `swap` - для обмена значений с другим аналогичным по типам кортежем - -Для кортежа определены операторы сравнения. - -### Инициализация - -Инициализировать кортеж можно привычными способами: - -```c++ -std::tuple t; // uninitialized -std::tuple t1 = {true, "Book", 10}; // copy -std::tuple t2(10, 3.14, -1); // ctor -std::tuple p3{true, 2.73, 0, '0'}; // uniform C++11 -``` - -### Доступ к полям с помощью `std::get` - -Поскольку кортеж не имеет прямого доступа к полям, то получить значения -полей кортежа или изменить их можно с помощью шаблонной функции `std::get`. - -Функция принимает кортеж, а в качестве параметров шаблона внутри `<>` -указывается либо порядковый номер начиная с `0` и меньше количества переменных, -либо тип данных, если он уникален для кортежа - -```c++ -std::tuple tpl(10., 'a', 10); -std::get<0>(tpl) += 1; -std::get<1>(tpl) += 1; -std::get<2>(tpl) += 1; -// tpl = {11, 'b', 11}; -std::get(tpl) += 1; -std::get(tpl) += 1; -std::get(tpl) += 1; -// tpl = {12, 'c', 12}; -``` - -### Создание с помощью `std::make_tuple` - -В заголовочном файле `` есть шаблонная функция `std::make_tuple` -принимающая произвольное число аргументов различных типов и возвращающая -кортеж из переданных аргументов. - -Удобство заключается в возможности использования вывода типа переменной, -если написать ключевое слово `auto`. - -```c++ -auto t1 = std::make_tuple(15, 'c', 3.14); // std::tuple - -struct Product { int count; double price; }; -auto t2 = std::make_pair(true, Product{10, 3.14}); // std::tuple -std::cout << std::get<1>(t2).count << " " << std::get<1>(t2).price; -``` - -## Функция связывания `std::tie` - -Шаблонная функция позволяющая создать кортеж ссылок на переданные -аргументы или ссылку на специальный объект `std::ignore` - -- применяется для лексикографического сравнения структур: - -```c++ -struct Pair { int value; std::string name; } p1, p2; -std::tie(p1.value, p1.name) < std::tie(p2.value, p2.name); -``` - -- для распаковки кортежа или пары (так как пара конвертируется в кортеж): - -```c++ -int i; -double d; -std::tie(i, std::ignore, d) = std::tuple(1, "Test", 2.0); -``` - -## Структурное связывание (_structered bindings_) _C++17_ - -_Structered bindings_ - синтаксическая конструкция, введенная в _C++17_, -которая позволяет распаковывать составляющие составных типов данных -в отдельные переменные. - -Синтаксис: ` auto [...] = ;` - -Работает с массивами, структурами, парами, кортежами. - -```c++ -int array[] = {1, 2}; - -auto& [first, second] = array; -first = 3; -second = 4; // array = {3, 4}; -``` - -```c++ -struct Product { int count; double price; }; - -Product prod{10, 100.0}; -auto [count, price] = prod; -auto& [ref_count, ref_price] = prod; -const auto& [cref_count, cref_price] = prod; -``` - -```c++ -std::pair p(true, 10); -const auto& [b, i] = p; -``` - -```c++ -std::tuple tpl(10., 'a', 10); -auto [f, c, i] = tpl; -``` - -## Перегрузка функций - -Перегрузка функций позволяет иметь функции с одинаковыми именами для различных -входных аргументов. - -Перегрузить функцию можно только по аргументам, изменение возвращаемого типа, -без изменения аргументов **НЕ** является перегрузкой. - -CV-квалификаторы изменяют тип, поэтому добавление константности к аргументам -является перегрузкой. - -```c++ -void PrintValues(const int* begin, const int* end) {} -void PrintValues(int* begin, int* end) {} -void PrintValues(const int* array, size_t size) {} -void PrintValues(const Point& point) {} -// Point PrintValues(const Point& point) {} // compile error -``` - -Функция, имеющая значения по умолчанию, имеет перегрузки функции, без -аргументов по умолчанию, причем количество перегрузок соответствует -количеству аргументов по умолчанию. - -```c++ -void PrintValues(int x, float f = 0.0, char c = 'a') { - std::cout << "x = " << x << ", f = " << f << ", c = " << c << std::endl; -} - -PrintValues(x, f, c); -PrintValues(x, f); -PrintValues(x); -``` - -### Перегрузка операторов - -Поскольку операторы являются функциями, то операторы можно перегрузить. -Что позволяет использовать операторы для своих типов данных. - -Синтаксис: ` operator(...);` - -- `` - символьное обозначение оператора (`+`, `<<`, `==`, ...) -- `...` - один или два аргумента (для унарного и бинарного операторов) -- `` - тип возвращаемого значения - -**НЕЛЬЗЯ** перегрузить операторы: `::`, `?:`, `.`, `.*`, `typeid`, `sizeof`, `alignof` - -Перегрузка оператора `<<` для вывода в поток: - -```c++ -struct Pair { - int value; - std::string name; -}; - -std::ostream& operator<<(std::ostream& os, const Pair& pair) { - os << '(' << value << ", " << name << ')'; - return os; -} -``` - -Перегрузка операторов сравнения: - -```c++ -bool operator==(const Pair& lhs, const Pair& rhs) { - return lhs.value == rhs.value && lhs.name == rhs.name; -} - -bool operator<(const Pair& lhs, const Pair& rhs) { - if (lhs.value == rhs.value) { - return lhs.name < rhs.name; - } - return lhs.value < rhs.value; -// return (lhs.value == rhs.value) ? lhs.name < rhs.name : lhs.value < rhs.value; -// return std::tie(lhs.value, lhs.name) < std::tie(rhs.value, rhs.name); -} - -bool operator!=(const Pair& lhs, const Pair& rhs) { - return !(lhs == rhs); -} - -bool operator>(const Pair& lhs, const Pair& rhs) { - return !(lhs < rhs || lhs == rhs); -} - -bool operator>=(const Pair& lhs, const Pair& rhs) { - return !(lhs < rhs); -} - -bool operator<=(const Pair& lhs, const Pair& rhs) { - return lhs < rhs || lhs == rhs; -} -``` - -## Асимптотическая сложность - -Асимптотическая сложность — это математический способ оценки, как время -выполнения или объём потребляемой памяти алгоритма растут с увеличением -размера входных данных (`n`), когда `n` стремится к бесконечности. - -При оценке игнорируются константы и младшие члены в формуле, что позволяет -сосредоточиться на основном факторе масштабирования. Оценка позволяет -сравнивать эффективность алгоритмов независимо от аппаратного обеспечения. - -Обычно используется O-нотация («О большое») для определения верхней границы -(наихудшего случая). - -Распространенная асимптотическая сложность: - -1. $O(1)$ — Константная сложность - - Время выполнения не зависит от размера входных данных. - -1. $O(log(n))$ — Логарифмическая сложность - - Медленный рост. Удвоение `n` увеличивает время работы лишь на константу. - -1. $O(n)$ — Линейная сложность - - Время растет прямо пропорционально n. - -1. $O(n \cdot log(n))$ — Линейно-логарифмическая сложность - - Золотой стандарт для эффективных алгоритмов сортировки общего назначения. - -1. $O(n^a)$ — Степенная сложность - - Время растет пропорционально степени размера данных. При больших `n` - становится очень медленно. - -1. $O(2^n)$ — Экспоненциальная сложность - - Чрезвычайно быстрый рост. Практически неприменимо для задач с `n` > 30-40. - -1. $O(n!)$ — Факториальная сложность - - Рост быстрее экспоненциальной. Характерна для задач полного перебора всех перестановок. - -## Последовательные контейнеры v - -Стандартная библиотека _STL_ содержит множество шаблонных классов, которые -представляют различные структуры данных. Как правило, их называют контейнерами. -Контейнеры способны хранить произвольный тип данных. Контейнеры представляют -собой коллекцию элементов определенного типа. Контейнеры предоставляют -удобный способ взаимодействовать с элементами - -В качестве параметров шаблона внутри треугольных скобок `<>` обычно необходимо -указать тип данных, который использует контейнер. - -Для последовательных контейнеров определен оператор доступа по индексу `[]` - -## Контейнер `std::vector` - -Контейнер `std::vector` предназначен для хранения массива данных определенного типа -непрерывно в динамической памяти. - -Контейнер обеспечивает быстрое добавления элементов в конец и увеличение размера -блока памяти под элементы при необходимости. - -Для гарантии непрерывности памяти, при добавлении элемента в заполненный контейнер, -происходит **реалокация** всех элементов контейнера. - -Заголовочный файл: `` - -Синтаксис: `std::vector ;` -- `T` - произвольный тип данных -- `` - имя переменной - -### Инициализация `std::vector` - -Доступны множество способов инициализации вектора: - -```c++ -std::vector v1; // empty -std::vector v2(v1); // copy ctor from other vector -std::vector v3 = v1; // copy ctor from other vector -// ctor -std::vector v4(5); // 5 elemets with zero value -std::vector v5(5, 2); // 5 elements equal 2 -// initializer list -std::vector v6{1, 2, 4, 5}; // with elements 1, 2, 4, 5 -std::vector v7 = {1, 2, 3, 5}; // with elements 1, 2, 3, 5 -// iterators -std::vector v8(v7.begin(), v7.end()); // same as v7 -``` - -### Устройство `std::vector` - -Контейнер должен иметь **указатель на данные** (адрес начала памяти в куче, -выделенной под хранение элементов вектора), **вместимость выделенной памяти** -(сколько элементов данного типа можно положить), **текущее количество элементов** -(сколько элементов данного типа уже положено в контейнер). - -Условно можно представить себе, что хранится 3 поля: указатель на данные, -размер данных _size_, размер выделенной памяти _capacity_ - -Контейнер имеет размер 24 байта. - -Фактически, стандартный контейнер устроен несколько иначе, внутри хранится -3 указателя: на начало данных, за конец выделенной памяти, за конец элементов - -Элементы контейнера располагаются не на **стеке**, а в области памяти, называемой -куча. - -### Обзор методов `std::vector` - -Контейнер имеет встроенные функции для работы с контейнером, такие функции -называются **методы**. - -Доступ к элементам: -- `at(size_t pos)` - метод, принимающий индекс элемента и возвращающий ссылку -- `[size_t pos]` - оператор `[]`, принимающий индекс и возвращающий ссылку -- `font()` - метод, возвращающий ссылку на первый элемент -- `back()` - метод, возвращающий ссылку на последний элемент -- `data()` - метод, возвращающий указатель на начало данных - -Вместимость контейнера: -- `empty()` - возвращает `true` для пустого контейнера -- `size()` - возвращает количество элементов -- `capacity()` - возвращает вместимость контейнера -- `reserve(size_t count)` - выделяет память под `count` элементов -- `shrink_to_fit()` - уменьшает вместимость вектора в соответствии с `size()` - -Модифицирующие методы: -- `assign()` - заменить текущее содержимое на новое -- `clear()` - очистить содержимое (без фактического очищения) -- `push_back()` - добавить элемент в конец контейнера -- `pop_back()` - удалить последний элемент из контейнера -- `insert()` - добавить элементы в определенную позицию -- `erase()` - удалить элементы с определенной позиции -- `resize()` - изменить количество элементов контейнера -- `swap()` - обменять содержимое контейнеров. - -### Вместимость контейнера `std::vector` - -По умолчанию, неинициализированный, пустой контейнер **НЕ** выделяет память -под элементы. - -Инициализированный контейнер выделяет память ровно под количество элементов. - -Методы, проверяющие вместимость и размер: - -- `empty()` — возвращает true, если контейнер пуст -- `size()` — возвращает текущий размер, количество элементов в контейнере -- `capacity()` — возвращает вместимость контейнера, под какое количество - элементов выделена память - -### Добавление в конец `std::vector` - -Контейнер оптимизирован под добавление элементов в конец. - -Метод, добавляющий элемент в конец: - -- `push_back()` - добавить элемент, принимаемый в аргументах, в конец контейнера - -Заполнение контейнера в цикле (не оптимально). Несколько раз в ходе заполнения -контейнера произойдет реалокация, то есть выделится новый блок памяти в куче, -достаточный для элементов контейнера, и все элементы будут скопированы по -новому адресу. - -Как правило, при добавлении элемента в полностью заполненный контейнер, -вместимость контейнера будет **увеличиваться в 2 раза** - -Сложность: **амортизированная O(1)** - -```c++ -std::vector v; -size_t capacity = v.capacity(); - -std::cout << v.data() << std::endl; // int* (address) -std::cout << v.size() << ' ' << v.capacity() << std::endl; -for (int i = 0; i < 100; ++i) { - v.push_back(i); - if (capacity < v.capacity()) { - capacity = v.capacity(); - - std::cout << v.data() << std::endl; // int* (address) - std::cout << v.size() << ' ' << v.capacity() << std::endl; - } -} -``` - -### Доступ к элементам `std::vector` - -Доступ следует осуществлять только к валидным элементам. - -Доступ к элементам осуществляется с помощью оператора `[]`, принимающего -индекс, и с помощью методов: - -- `[size_t pos]` — принимает индекс и возвращает ссылку на элемент -- `at(size_t pos)` — принимает индекс и возвращает ссылку на элемент, если - переданный индекс (позиция) невалиден, то выбрасывается исключение - `std::out_of_range` -- `fornt()` — возвращает ссылку на первый элемент -- `back()` — возвращает ссылку на последний элемент -- `data()` — возвращает сырой указатель на начало данных - -Доступ к элементам вне диапазона контейнера, получение ссылок на элементы -для пустого контейнера (`v.empty()` возвращает `true`) это **UB** - -### Итераторы - -Итераторы - фундаментальная концепция языка C++, выступающая в качестве -обобщения указателей. Итераторы обеспечивают удобный **способ доступа** и -**перемещения** по элементам различных контейнеров. - -На данном этапе будем относиться к итераторам, как к удобной обертке над -указателем. - -Итераторы имитируют поведение **указателей**: разыменование, арифметику, сравнение - -Существуют разные категории итераторов, поэтому в зависимости от контейнера -поддерживаются не все операции с итераторами - -Каждый контейнер имеет **свой тип итератора**. - -Например, для вектора целочисленных значений тип итератора: -`std::vector::iterator` - -Константная версия итератора имеет тип: -`std::vector::const_iterator` - -Используются для реализации **range-based for** и в алгоритмах стандартной -библиотеки - -Как правило, можно получить итератор на начало (первый элемент) **begin** -и на конец **end** (за последний элемент). А также, их константные версии -**cbegin** и **cend** - -### Итераторы `std::vector` - -Итератор можно получить воспользовавшись методами контейнера: - -- `begin()` — возвращает итератор на начало -- `end()` — возвращает итератор на конец -- `rbegin()` — возвращает обратный итератор на начало -- `rend()` — возвращает обратный итератор на конец - -Также присутствуют методы с приставкой c возвращающие их константные версии. - -Чтобы не писать длинный тип используется ключевое слово **auto** - -### Итерирование `std::vector` - -Контейнер поддерживает различные способы итерирования, **range-based for**: - -```c++ -std::vector v = {1, 2, 3, 5}; -for (auto vi : v) { - std::cout << vi << std::endl; -} -``` - -Итерирование по индексу (порядковыому номеру): - -```c++ -std::vector v = {1, 2, 3, 5}; -for (size_t i = 0; i < v.size(); ++i) { - std::cout << v[i] << std::endl; -} -``` - -Использование прямых итераторов: - -```c++ -std::vector v = {1, 2, 3, 5}; -for (auto it = v.begin(); it != v.end(); ++it) { - std::cout << *it << std::endl; -} -``` - -Использование обратных итераторов, для обхода контейнера в обратном порядке: - -```c++ -std::vector v = {1, 2, 3, 5}; -for (auto it = v.rbegin(); it != v.rend(); ++it) { - std::cout << *it << std::endl; -} -``` - -### Метод `resize()` - -Метод `resize()` изменяет размер контейнера, причем в случае увеличения создаются -значения по умолчанию, в случае уменьшения вместимость контейнера, как правило, -**НЕ** уменьшается - -- `resize(size_t count)` — принимает требуемое количество элементов -- `resize(size_t count, const T& value)` — принимает требуемое количество элементов - и значение элемента, которым необходимо заполнить контейнер в случае увеличения - размера - -Сложность: **O(n)** или **O(1)** при уменьшении. - -Тратятся ресурсы на заполнение **значениями по умолчанию** - -Изменяет _size_ контейнера, а также _capacity_ при необходимости **увеличения** - -### Метод `reserve()` - -Метод `reserve()` выделяет нужное количество памяти, не заполняя элементы значением -по умолчанию, при этом _size_ контейнера не изменяется, а _capacity_ может только -увеличиваться в соответствии c заданным значением - -- `reserve(size_t new_capacity)` — принимает новое значение вместимости контейнера - -Сложность: **O(n)** - -Если известна требуемая вместимость заранее, наиболее оптимальный способ создания: - -```c++ -std::vector v; -v.reserve(100); -for (size_t i = 0; i < 100; ++i) { - v.push_back(i); -} -``` - -### Метод `pop_back()` - -Метод, удаляющий последний элемент: - -- `pop_back()` — удаляет элемент из конца контейнера - -Как правило, просто уменьшает размер контейнера, или перемещает указатель на конец -элементов, **НЕ** вызывает реалокацию памяти - -Сложность: **O(1)** - -`pop_back()` от пустого контейнера (`v.empty()` возвращает `true`) это **UB** - -### Метод `clear()` - -Метод `clear()` очищает контейнер, _size_ = 0, но _capacity_ **НЕ** изменяется - -Как правило, просто уменьшает размер контейнера, перемещает указатель на конец -элементов на начало. **НЕ** освобождает память - -Сложность: **O(1)** как правило просто переносится указатель конца элементов на начало - -### Остальные методы `std::vector` - -Основные модифицирующие методы контейнера: - -- `shrink_to_fit()` — уменьшает _capacity_ в соответствии с текущим _size_, - реалокация, **O(n)** -- `insert()` — вставляет элемент или диапазон в произвольное место в контейнер, **O(n)**, - вставка в конец **O(1)**. Возвращает итератор на начало вставки. -- `erase()` — удаляет элемент или диапазон из произвольного места в контейнер, **O(n)**, - поскольку необходимо передвинуть все элементы контейнера, удалить из конца **O(1)**. - Возвращает итератор после последнего удаленного элемента. -- `swap()` — обменивает содержимое двух контейнеров, **O(1)** поскольку осуществляется - обмен указателей -- `assign()` — заменяет содержимое контейнера на указанное значение или на диапазон, - **O(n)** - -[и другие ...](https://en.cppreference.com/w/cpp/container/vector.html) \ No newline at end of file diff --git a/03_week/03_data_structures.pdf b/03_week/03_data_structures.pdf deleted file mode 100644 index 7b5b63599b794dc4d75bd99a57e31a5d3ccab31e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 308213 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ⅇ1;ya>5bN2aNn=(&Yn--0u)`48-9czeW#U_ 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

4P#DD!GJ<~Myy1>?^7Cl< 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 diff --git a/03_week/CMakeLists.txt b/03_week/CMakeLists.txt deleted file mode 100644 index e5df5bac..00000000 --- a/03_week/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -cmake_minimum_required(VERSION 3.14) # Минимальная требуемая версия CMake -project(03_week) # Необходим для инициализации cmake - -set(CMAKE_CXX_STANDARD 20) # Версия стандарта C++ -set(CMAKE_CXX_STANDARD_REQUIRED ON) # Гарантирует использование указанной версии стандарта - -set(EXAMPLES_DIR examples) # Определим переменную с именем директории -set(TASKS_DIR tasks) - -add_subdirectory(tasks) - -# Создать исполняемый файл для каждого примера -if (BUILD_EXAMPLES_03_WEEK) - add_example(struct_examples ${EXAMPLES_DIR}/struct_examples.cpp) - add_example(union_examples ${EXAMPLES_DIR}/union_examples.cpp) - add_example(vector_examples ${EXAMPLES_DIR}/vector_examples.cpp) -endif() \ No newline at end of file diff --git a/03_week/examples/struct_examples.cpp b/03_week/examples/struct_examples.cpp deleted file mode 100644 index 11484025..00000000 --- a/03_week/examples/struct_examples.cpp +++ /dev/null @@ -1,172 +0,0 @@ -#include -#include - -struct BoolBool { bool x; bool y; }; -struct Point { int x; int y; }; -struct IID { int x; int y; double d; }; -struct IDI { int x; double d; int y;}; -struct IDIB { int x; double d; int y; bool b;}; -struct IIDB { int x; int y; double d; bool b;}; -struct IISDB { int x; int y; std::string s; double d; bool b;}; - - -void struct_sizeof() { - std::cout << __func__ << ':' << std::endl; - std::cout << "sizeof(BoolBool): " << sizeof(BoolBool) << std::endl; // 2 - std::cout << "sizeof(Point): " << sizeof(Point) << std::endl; // 8 - std::cout << "sizeof(IID): " << sizeof(IID) << std::endl; // 16 - std::cout << "sizeof(IDI): " << sizeof(IDI) << std::endl; // 24 - std::cout << "sizeof(IDIB): " << sizeof(IDIB) << std::endl; // 24 - std::cout << "sizeof(IIDB): " << sizeof(IIDB) << std::endl; // 24 - std::cout << "sizeof(IISDB): " << sizeof(IISDB) << std::endl; // 56 - std::cout << std::endl; -} - -void struct_alignof() { - std::cout << __func__ << ':' << std::endl; - std::cout << "alignof(BoolBool): " << alignof(BoolBool) << std::endl; // 1 - std::cout << "alignof(Point): " << alignof(Point) << std::endl; // 4 - std::cout << "alignof(IID): " << alignof(IID) << std::endl; // 8 - std::cout << "alignof(IDI): " << alignof(IDI) << std::endl; // 8 - std::cout << "alignof(IDIB): " << alignof(IDIB) << std::endl; // 8 - std::cout << "alignof(IIDB): " << alignof(IIDB) << std::endl; // 8 - std::cout << "alignof(IISDB): " << alignof(IISDB) << std::endl; // 8 - std::cout << std::endl; -} - -void struct_address() { - std::cout << __func__ << ':' << std::endl; - { - BoolBool obj; - std::cout << "struct BoolBool: " << std::endl; - std::cout << "&obj: " << &obj << std::endl; - std::cout << "&obj.x: " << &(obj.x) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.x) << std::endl; - std::cout << "&obj.y: " << &(obj.y) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.y) << std::endl; - } - { - Point obj; - std::cout << "struct Point: " << std::endl; - std::cout << "&obj: " << &obj << std::endl; - std::cout << "&obj.x: " << &(obj.x) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.x) << std::endl; - std::cout << "&obj.y: " << &(obj.y) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.y) << std::endl; - } - { - IID obj; - std::cout << "struct IID: " << std::endl; - std::cout << "&obj: " << &obj << std::endl; - std::cout << "&obj.x: " << &(obj.x) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.x) << std::endl; - std::cout << "&obj.y: " << &(obj.y) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.y) << std::endl; - std::cout << "&obj.d: " << &(obj.d) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.d) << std::endl; - - } - { - IDI obj; - std::cout << "struct IDI: " << std::endl; - std::cout << "&obj: " << &obj << std::endl; - std::cout << "&obj.x: " << &(obj.x) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.x) << std::endl; - std::cout << "&obj.d: " << &(obj.d) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.d) << std::endl; - std::cout << "&obj.y: " << &(obj.y) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.y) << std::endl; - } - { - IDIB obj; - std::cout << "struct IDIB: " << std::endl; - std::cout << "&obj: " << &obj << std::endl; - std::cout << "&obj.x: " << &(obj.x) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.x) << std::endl; - std::cout << "&obj.d: " << &(obj.d) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.d) << std::endl; - std::cout << "&obj.y: " << &(obj.y) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.y) << std::endl; - std::cout << "&obj.b: " << &(obj.b) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.b) << std::endl; - } - { - IIDB obj; - std::cout << "struct IIDB: " << std::endl; - std::cout << "&obj: " << &obj << std::endl; - std::cout << "&obj.x: " << &(obj.x) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.x) << std::endl; - std::cout << "&obj.y: " << &(obj.y) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.y) << std::endl; - std::cout << "&obj.d: " << &(obj.d) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.d) << std::endl; - std::cout << "&obj.b: " << &(obj.b) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.b) << std::endl; - } - { - IISDB obj; - std::cout << "struct IISDB: " << std::endl; - std::cout << "&obj: " << &obj << std::endl; - std::cout << "&obj.x: " << &(obj.x) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.x) << std::endl; - std::cout << "&obj.y: " << &(obj.y) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.y) << std::endl; - std::cout << "&obj.s: " << &(obj.s) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.s) << std::endl; - std::cout << "&obj.d: " << &(obj.d) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.d) << std::endl; - std::cout << "&obj.b: " << &(obj.b) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.b) << std::endl; - } - std::cout << std::endl; -} - -void struct_creation() { - std::cout << __func__ << ':' << std::endl; - { - Point p; - Point p2 = {1, 2}; - Point p3{2, 3}; - Point p4 = {}; - Point p5 = {1}; - } - { - std::string Point = "some_product_name"; - // Point p = {10, 300}; // compile error - struct Point p = {10, 300}; // OK - } - std::cout << std::endl; -} - -struct Inner { - bool b = false; -}; - -struct A { - int a = 0; - Inner inner = {}; -}; - -void struct_inner() { - std::cout << __func__ << ':' << std::endl; - std::cout << "sizeof(Inner): " << sizeof(Inner) << std::endl; // 1 - std::cout << "sizeof(A): " << sizeof(A) << std::endl; // 8 - std::cout << "alignof(Inner): " << alignof(Inner) << std::endl; // 1 - std::cout << "alignof(A): " << alignof(A) << std::endl; // 4 - A obj; - std::cout << "obj.inner.b = " << obj.inner.b << std::endl; - obj.inner.b = true; - std::cout << "obj.inner.b = true" << std::endl; - std::cout << "obj.inner.b = " << obj.inner.b << std::endl; - std::cout << std::endl; -} - -int main() { - struct_sizeof(); - struct_alignof(); - struct_address(); - struct_creation(); - struct_inner(); -} - - diff --git a/03_week/examples/union_examples.cpp b/03_week/examples/union_examples.cpp deleted file mode 100644 index af332dca..00000000 --- a/03_week/examples/union_examples.cpp +++ /dev/null @@ -1,117 +0,0 @@ -#include -#include -#include - -union ID { - int i; - double d; -}; - -union IBC { - int i; - bool b; - char c; -}; - -union IDBC { - int i; - double d; - bool b; - char c; -}; - -void union_sizeof() { - std::cout << __func__ << ':' << std::endl; - std::cout << "sizeof(ID): " << sizeof(ID) << std::endl; // 8 - std::cout << "sizeof(IBC): " << sizeof(IBC) << std::endl; // 4 - std::cout << "sizeof(IDBC): " << sizeof(IDBC) << std::endl; // 8 - std::cout << std::endl; -} - -void union_alignof() { - std::cout << __func__ << ':' << std::endl; - std::cout << "alignof(ID): " << alignof(ID) << std::endl; // 8 - std::cout << "alignof(IBC): " << alignof(IBC) << std::endl; // 4 - std::cout << "alignof(IDBC): " << alignof(IDBC) << std::endl; // 8 - std::cout << std::endl; -} - -void union_address() { - std::cout << __func__ << ':' << std::endl; - { - ID obj; - obj.i = 42; - std::cout << "union ID: " << std::endl; - std::cout << "&obj: " << &obj << std::endl; - std::cout << "&obj.i: " << &(obj.i) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.i) << std::endl; - obj.d = 3.14; - std::cout << "&obj.d: " << &(obj.d) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.d) << std::endl; - } - { - IBC obj; - obj.i = 42; - std::cout << "union IBC: " << std::endl; - std::cout << "&obj: " << &obj << std::endl; - std::cout << "&obj.i: " << &(obj.i) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.i) << std::endl; - obj.b = true; - std::cout << "&obj.b: " << &(obj.b) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&(obj.b)) << std::endl; - obj.c = 'c'; - std::cout << "&obj.c: " << static_cast(&(obj.c)) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&(obj.c)) << std::endl; - } - { - IDBC obj; - obj.i = 42; - std::cout << "union IDBC: " << std::endl; - std::cout << "&obj: " << &obj << std::endl; - std::cout << "&obj.i: " << &(obj.i) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.i) << std::endl; - obj.d = 3.14; - std::cout << "&obj.d: " << &(obj.d) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.d) << std::endl; - obj.b = true; - std::cout << "&obj.b: " << &(obj.b) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.b) << std::endl; - obj.c = 'c'; - std::cout << "&obj.c: " << reinterpret_cast(std::addressof(obj.c)) << " distance =" - << reinterpret_cast(&obj) - reinterpret_cast(&obj.c) << std::endl; - } - std::cout << std::endl; -} - -union Color { - uint32_t value; - struct { - uint8_t a; - uint8_t b; - uint8_t g; - uint8_t r; - } components; -}; - -void union_read_inactive() { - std::cout << __func__ << ':' << std::endl; - Color c; - c.value = 0x00FF9955; - - std::cout << "Red: " << +c.components.r << std::endl; // 0 - std::cout << "Green: " << +c.components.g << std::endl; // 255 - std::cout << "Blue: " << +c.components.b << std::endl; // 153 - std::cout << "Alpha: " << +c.components.a << std::endl; // 85 - std::cout << std::endl; -} - - - -int main() { - union_sizeof(); - union_alignof(); - union_address(); - union_read_inactive(); -} - - diff --git a/03_week/examples/vector_examples.cpp b/03_week/examples/vector_examples.cpp deleted file mode 100644 index 42afa72f..00000000 --- a/03_week/examples/vector_examples.cpp +++ /dev/null @@ -1,89 +0,0 @@ -#include -#include - -void vector_init() { - std::cout << __func__ << ':' << std::endl; - std::vector v1; // empty - std::vector v2(v1); // copy ctor from other vector - std::vector v3 = v1; // copy ctor from other vector - // ctor - std::vector v4(5); // 5 elemets with zero value - std::vector v5(5, 2); // 5 elements equal 2 - // initializer list - std::vector v6{1, 2, 4, 5}; // with elements 1, 2, 4, 5 - std::vector v7 = {1, 2, 3, 5}; // with elements 1, 2, 3, 5 - // iterators - std::vector v8(v7.begin(), v7.end()); // same as v7 - std::cout << std::endl; -} - -void vector_reallocation() { - std::cout << __func__ << ':' << std::endl; - std::vector v; - size_t capacity = v.capacity(); - - std::cout << v.data() << std::endl; // int* (address) - std::cout << v.size() << ' ' << v.capacity() << std::endl; - for (int i = 0; i < 1000; ++i) { - v.push_back(i); - if (capacity < v.capacity()) { - capacity = v.capacity(); - - std::cout << v.data() << std::endl; // int* (address) - std::cout << v.size() << ' ' << v.capacity() << std::endl; - } - } - std::cout << std::endl; -} - -void vector_iterating() { - std::cout << __func__ << ':' << std::endl; - - std::vector v = {1, 2, 3, 5}; - std::cout << "range_based for:" << std::endl; - for (auto vi : v) { - std::cout << vi << " "; - } - std::cout << std::endl; - - std::cout << "using [idx]:" << std::endl; - for (size_t i = 0; i < v.size(); ++i) { - std::cout << v[i] << " "; - } - std::cout << std::endl; - - std::cout << "forward iterating:" << std::endl; - for (auto it = v.begin(); it != v.end(); ++it) { - std::cout << *it << " "; - } - std::cout << std::endl; - - std::cout << "reverse iterating:" << std::endl; - for (auto it = v.rbegin(); it != v.rend(); ++it) { - std::cout << *it << " "; - } - std::cout << std::endl; - - std::cout << std::endl; -} - -void vector_reserve() { - std::cout << __func__ << ':' << std::endl; - std::vector v; - v.reserve(100); - for (size_t i = 0; i < 100; ++i) { - v.push_back(i); - } - std::cout << std::endl; - - std::cout << std::endl; -} - -int main() { - vector_init(); - vector_reallocation(); - vector_iterating(); - vector_reserve(); -} - - diff --git a/03_week/tasks/CMakeLists.txt b/03_week/tasks/CMakeLists.txt deleted file mode 100644 index e240c8ea..00000000 --- a/03_week/tasks/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ -add_subdirectory(data_stats) -add_subdirectory(unique) -add_subdirectory(range) -add_subdirectory(minmax) -add_subdirectory(find_all) -add_subdirectory(os_overload) -add_subdirectory(easy_compare) -add_subdirectory(filter) -add_subdirectory(enum_operators) \ No newline at end of file diff --git a/03_week/tasks/data_stats/CMakeLists.txt b/03_week/tasks/data_stats/CMakeLists.txt deleted file mode 100644 index 08a1ec38..00000000 --- a/03_week/tasks/data_stats/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_gtest(test_data_stats test.cpp) \ No newline at end of file diff --git a/03_week/tasks/data_stats/README.md b/03_week/tasks/data_stats/README.md deleted file mode 100644 index d2580e59..00000000 --- a/03_week/tasks/data_stats/README.md +++ /dev/null @@ -1,13 +0,0 @@ -[average]: https://en.wikipedia.org/wiki/Average -[standard deviation]: https://en.wikipedia.org/wiki/Standard_deviation - -# Статистика данных - -Необходимо реализовать функцию `CalculateDataStats`, которая принимает на вход -контейнер `std::vector` и возвращает структуру `DataStats`, содержащую -среднее значение ([average]) и стандартное отклонение ([standard deviation]). - -## Примечание - -- Запрещено использовать алгоритмы из `` -- Рекомендуется решить задачу в один проход по контейнеру \ No newline at end of file diff --git a/03_week/tasks/data_stats/data_stats.cpp b/03_week/tasks/data_stats/data_stats.cpp deleted file mode 100644 index b941c211..00000000 --- a/03_week/tasks/data_stats/data_stats.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include - - -struct DataStats { - double avg = 0.0; - double sd = 0.0; -}; - -/* return_type */ CalculateDataStats(/* args */) { - throw std::runtime_error{"Not implemented"}; -} diff --git a/03_week/tasks/data_stats/test.cpp b/03_week/tasks/data_stats/test.cpp deleted file mode 100644 index 7061f5f4..00000000 --- a/03_week/tasks/data_stats/test.cpp +++ /dev/null @@ -1,80 +0,0 @@ -#include - -#include -#include - -#include "data_stats.cpp" - -constexpr double EPSILON = 1e-6; - -TEST(DataStatsTest, EmptyVector) { - std::vector empty_vec; - DataStats stats = CalculateDataStats(empty_vec); - - EXPECT_DOUBLE_EQ(stats.avg, 0.0); - EXPECT_DOUBLE_EQ(stats.sd, 0.0); -} - -TEST(DataStatsTest, SingleElement) { - std::vector vec = {42}; - DataStats stats = CalculateDataStats(vec); - - EXPECT_DOUBLE_EQ(stats.avg, 42.0); - EXPECT_DOUBLE_EQ(stats.sd, 0.0); -} - -TEST(DataStatsTest, TwoElements) { - std::vector vec = {10, 20}; - DataStats stats = CalculateDataStats(vec); - - EXPECT_DOUBLE_EQ(stats.avg, 15.0); - EXPECT_DOUBLE_EQ(stats.sd, 5.0); -} - -TEST(DataStatsTest, AllSameElements) { - std::vector vec = {7, 7, 7, 7, 7}; - DataStats stats = CalculateDataStats(vec); - - EXPECT_DOUBLE_EQ(stats.avg, 7.0); - EXPECT_DOUBLE_EQ(stats.sd, 0.0); -} - -TEST(DataStatsTest, PositiveNumbers) { - std::vector vec = {1, 2, 3, 4, 5}; - DataStats stats = CalculateDataStats(vec); - - EXPECT_DOUBLE_EQ(stats.avg, 3.0); - EXPECT_NEAR(stats.sd, std::sqrt(2.0), EPSILON); -} - -TEST(DataStatsTest, NegativeNumbers) { - std::vector vec = {-5, -4, -3, -2, -1}; - DataStats stats = CalculateDataStats(vec); - - EXPECT_DOUBLE_EQ(stats.avg, -3.0); - EXPECT_NEAR(stats.sd, std::sqrt(2.0), EPSILON); -} - -TEST(DataStatsTest, MixedPositiveNegative) { - std::vector vec = {-2, -1, 0, 1, 2}; - DataStats stats = CalculateDataStats(vec); - - EXPECT_DOUBLE_EQ(stats.avg, 0.0); - EXPECT_NEAR(stats.sd, std::sqrt(2.0), EPSILON); -} - -TEST(DataStatsTest, ConstCorrectness) { - const std::vector vec = {-2, -1, 0, 1, 2}; - DataStats stats = CalculateDataStats(vec); - - EXPECT_DOUBLE_EQ(stats.avg, 0.0); - EXPECT_NEAR(stats.sd, std::sqrt(2.0), EPSILON); -} - -TEST(DataStatsTest, LargeNumbers) { - std::vector vec = {50000, 60000, 70000}; - DataStats stats = CalculateDataStats(vec); - - EXPECT_DOUBLE_EQ(stats.avg, 60000.0); - EXPECT_NEAR(stats.sd, std::sqrt(200000000.0 / 3.0), EPSILON); -} \ No newline at end of file diff --git a/03_week/tasks/easy_compare/CMakeLists.txt b/03_week/tasks/easy_compare/CMakeLists.txt deleted file mode 100644 index f1c0b634..00000000 --- a/03_week/tasks/easy_compare/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_gtest(test_easy_compare test.cpp) \ No newline at end of file diff --git a/03_week/tasks/easy_compare/README.md b/03_week/tasks/easy_compare/README.md deleted file mode 100644 index 11b1e3f1..00000000 --- a/03_week/tasks/easy_compare/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# Оператор сравнения - -Необходимо реализовать перегрузку оператор сравнения для структуры `Date`. -Операторы сравнения для структуры `Date` должен соответствовать обычной логике. - -Необходимо реализовать перегрузку операторов сравнения на меньше и на равно -для структуры `StudentInfo`. Сравнение производится для ранжирования участников -олимпиады, поэтому есть особые правила. - -Две структуры равны, если равны оценки и равны баллы. - -Сравнение на меньше происходит в следующем порядке: - -1. Сравнивается оценка `mark`. Высшая оценка в приоритете (`Z` < `D` < `C` < `B` < `A`). -1. Сравниваются баллы `score`. Больший балл в приоритете (80 < 100). -1. Сравнивается курс обучения `course`. Менее опытные в приоритете (4 < 3). -1. Сравнивается дата рождения, сначала год, затем месяц, затем день. - Более молодые в приоритете. - -Сравнение начинается с первого пункта и продолжается если элементы равны. - -## Примечание - -- Удобно воспользоваться функцией `std::tie` -- В задаче гарантируется корректность данных diff --git a/03_week/tasks/easy_compare/easy_compare.cpp b/03_week/tasks/easy_compare/easy_compare.cpp deleted file mode 100644 index dd5cb7f6..00000000 --- a/03_week/tasks/easy_compare/easy_compare.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include - - -struct Date { - unsigned year; - unsigned month; - unsigned day; -}; - -struct StudentInfo { - size_t id; - char mark; - int score; - unsigned course; - Date birth_date; -}; \ No newline at end of file diff --git a/03_week/tasks/easy_compare/test.cpp b/03_week/tasks/easy_compare/test.cpp deleted file mode 100644 index 1701e7d6..00000000 --- a/03_week/tasks/easy_compare/test.cpp +++ /dev/null @@ -1,269 +0,0 @@ -#include - -#include -#include - -#include "easy_compare.cpp" - - -TEST(DateTest, DefaultCtor) { - Date date; - EXPECT_EQ(date.year, 0u); - EXPECT_EQ(date.month, 0u); - EXPECT_EQ(date.day, 0u); -} - -TEST(DateTest, ParameterizedCtor) { - Date date{2025, 12, 31}; - EXPECT_EQ(date.year, 2025u); - EXPECT_EQ(date.month, 12u); - EXPECT_EQ(date.day, 31u); -} - -TEST(DateTest, EqualityOperator) { - EXPECT_TRUE(Date({2007, 1, 1}) == Date({2007, 1, 1})); - EXPECT_FALSE(Date({2007, 1, 1}) == Date({2007, 1, 2})); - EXPECT_FALSE(Date({2007, 1, 1}) == Date({2007, 2, 1})); - EXPECT_FALSE(Date({2007, 1, 1}) == Date({2006, 1, 1})); -} - -TEST(DateTest, LessThanOperator) { - Date d1(2007, 1, 1); - Date d2(2007, 1, 2); - Date d3(2007, 2, 1); - Date d4(2008, 1, 1); - - EXPECT_TRUE(d1 < d2); - EXPECT_TRUE(d1 < d3); - EXPECT_TRUE(d1 < d4); - EXPECT_TRUE(d2 < d3); - EXPECT_TRUE(d2 < d4); - EXPECT_TRUE(d3 < d4); - - EXPECT_FALSE(d1 < d1); - EXPECT_FALSE(d2 < d1); - EXPECT_FALSE(d3 < d1); - EXPECT_FALSE(d4 < d1); - EXPECT_FALSE(d3 < d2); - EXPECT_FALSE(d4 < d3); -} - -TEST(DateTest, FullComparisonOperators) { - Date d1(2000, 1, 1); - Date d2(2000, 1, 2); - - EXPECT_TRUE(d1 != d2); - EXPECT_FALSE(d1 != d1); - - EXPECT_FALSE(d2 <= d1); - EXPECT_TRUE(d1 <= d2); - EXPECT_FALSE(d1 >= d2); - EXPECT_TRUE(d2 >= d1); - EXPECT_FALSE(d1 > d2); - EXPECT_TRUE(d2 > d1); - - EXPECT_TRUE(d1 >= d1); - EXPECT_TRUE(d1 <= d1); -} - -TEST(StudentInfoTest, EqualityOperator) { - StudentInfo s1{1, 'A', 100, 1, Date{2000, 1, 1}}; - StudentInfo s2{2, 'A', 100, 2, Date{1999, 12, 31}}; - StudentInfo s3{3, 'B', 100, 1, Date{2000, 1, 1}}; - StudentInfo s4{4, 'A', 90, 1, Date{2000, 1, 1}}; - - EXPECT_TRUE(s1 == s2); - EXPECT_FALSE(s1 == s3); - EXPECT_FALSE(s1 == s4); -} - -TEST(StudentInfoTest, NotEqualOperator) { - StudentInfo s1{1, 'A', 100, 1, Date{2000, 1, 1}}; - StudentInfo s2{4, 'B', 100, 1, Date{2000, 1, 1}}; - StudentInfo s4{2, 'A', 90, 1, Date{2000, 1, 1}}; - - EXPECT_TRUE(s1 != s2); - EXPECT_FALSE(s1 != s1); - EXPECT_TRUE(s1 != s4); -} - -TEST(StudentInfoTest, CompareByMark) { - StudentInfo z_student{1, 'Z', 10, 1, Date{2000, 1, 1}}; - StudentInfo d_student{2, 'D', 20, 2, Date{2001, 1, 1}}; - StudentInfo c_student{3, 'C', 30, 3, Date{2002, 1, 1}}; - StudentInfo b_student{2, 'B', 40, 4, Date{2003, 1, 1}}; - StudentInfo a_student{5, 'A', 50, 5, Date{2004, 1, 1}}; - - EXPECT_TRUE(z_student < d_student); - EXPECT_TRUE(z_student < c_student); - EXPECT_TRUE(z_student < b_student); - EXPECT_TRUE(z_student < a_student); - - EXPECT_TRUE(d_student < c_student); - EXPECT_TRUE(d_student < b_student); - EXPECT_TRUE(d_student < a_student); - - EXPECT_TRUE(c_student < b_student); - EXPECT_TRUE(c_student < a_student); - - EXPECT_TRUE(b_student < a_student); - - EXPECT_FALSE(a_student < z_student); - EXPECT_FALSE(a_student < d_student); - EXPECT_FALSE(a_student < c_student); - EXPECT_FALSE(a_student < b_student); -} - -TEST(StudentInfoTest, CompareByScore) { - StudentInfo high_score{3, 'A', 100, 1, Date{2000, 1, 1}}; - StudentInfo medium_score{2, 'A', 80, 2, Date{2001, 1, 1}}; - StudentInfo low_score{7, 'A', 60, 3, Date{2002, 1, 1}}; - - EXPECT_TRUE(low_score < medium_score); - EXPECT_TRUE(medium_score < high_score); - EXPECT_TRUE(low_score < high_score); - - EXPECT_FALSE(high_score < medium_score); - EXPECT_FALSE(high_score < low_score); - EXPECT_FALSE(medium_score < low_score); -} - -TEST(StudentInfoTest, CompareByCourse) { - StudentInfo first_year{1, 'A', 100, 1, Date{2000, 1, 1}}; - StudentInfo second_year{3, 'A', 100, 2, Date{2000, 1, 1}}; - StudentInfo third_year{2, 'A', 100, 3, Date{2000, 1, 1}}; - StudentInfo fourth_year{4, 'A', 100, 4, Date{2000, 1, 1}}; - - EXPECT_TRUE(fourth_year < third_year); - EXPECT_TRUE(fourth_year < second_year); - EXPECT_TRUE(fourth_year < first_year); - - EXPECT_TRUE(third_year < second_year); - EXPECT_TRUE(third_year < first_year); - - EXPECT_TRUE(second_year < first_year); - - EXPECT_FALSE(first_year < second_year); - EXPECT_FALSE(first_year < third_year); - EXPECT_FALSE(first_year < fourth_year); - EXPECT_FALSE(third_year < fourth_year); -} - -TEST(StudentInfoTest, CompareByBirthDate) { - StudentInfo young{1, 'A', 100, 1, Date{2001, 1, 1}}; - StudentInfo middle{2, 'A', 100, 1, Date{2000, 6, 15}}; - StudentInfo old{3, 'A', 100, 1, Date{1999, 12, 31}}; - - EXPECT_TRUE(old < middle); - EXPECT_TRUE(middle < young); - EXPECT_TRUE(old < young); - - EXPECT_FALSE(young < middle); - EXPECT_FALSE(young < old); - EXPECT_FALSE(middle < old); -} - -TEST(StudentInfoTest, CompareByDateComponents) { - StudentInfo year1{1, 'A', 100, 1, Date{2000, 1, 1}}; - StudentInfo year2{2, 'A', 100, 1, Date{2001, 1, 1}}; - - StudentInfo month1{4, 'A', 100, 1, Date{2000, 1, 1}}; - StudentInfo month2{3, 'A', 100, 1, Date{2000, 2, 1}}; - - StudentInfo day1{5, 'A', 100, 1, Date{2000, 1, 1}}; - StudentInfo day2{6, 'A', 100, 1, Date{2000, 1, 2}}; - - EXPECT_TRUE(year1 < year2); - EXPECT_FALSE(year2 < year1); - - EXPECT_TRUE(month1 < month2); - EXPECT_FALSE(month2 < month1); - - EXPECT_TRUE(day1 < day2); - EXPECT_FALSE(day2 < day1); -} - -TEST(StudentInfoTest, ComplexComparisons) { - StudentInfo a_student{1, 'A', 50, 4, Date{1990, 1, 1}}; - StudentInfo b_student{2, 'B', 100, 1, Date{2005, 1, 1}}; - - EXPECT_TRUE(b_student < a_student); - EXPECT_FALSE(a_student < b_student); - - StudentInfo high_score{4, 'B', 100, 4, Date{1990, 1, 1}}; - StudentInfo low_score{3, 'B', 50, 1, Date{2005, 1, 1}}; - - EXPECT_TRUE(low_score < high_score); - EXPECT_FALSE(high_score < low_score); - - StudentInfo first_year{5, 'C', 80, 1, Date{1995, 1, 1}}; - StudentInfo fourth_year{6, 'C', 80, 4, Date{2005, 1, 1}}; - - EXPECT_TRUE(fourth_year < first_year); - EXPECT_FALSE(first_year < fourth_year); - - StudentInfo older{8, 'D', 70, 2, Date{1998, 1, 1}}; - StudentInfo younger{7, 'D', 70, 2, Date{2000, 1, 1}}; - - EXPECT_TRUE(older < younger); - EXPECT_FALSE(younger < older); - - StudentInfo older_month{8, 'D', 70, 2, Date{2007, 1, 31}}; - StudentInfo younger_month{7, 'D', 70, 2, Date{2007, 2, 1}}; - - EXPECT_TRUE(older_month < younger_month); - EXPECT_FALSE(younger_month < older_month); - - StudentInfo older_day{8, 'D', 70, 2, Date{2007, 1, 1}}; - StudentInfo younger_day{7, 'D', 70, 2, Date{2007, 1, 2}}; - - EXPECT_TRUE(older_day < younger_day); - EXPECT_FALSE(younger_day < older_day); -} - -class StudentSortTest : public ::testing::Test { -protected: - void SetUp() override { - students_expected = { - {7, 'Z', 100, 1, Date{2018, 1, 1}}, - {6, 'D', 120, 2, Date{2017, 1, 1}}, - {5, 'C', 140, 3, Date{2016, 1, 1}}, - {4, 'B', 150, 5, Date{2017, 1, 1}}, - {8, 'A', 1999, 2, Date{2003, 1, 1}}, - {9, 'A', 1999, 1, Date{2003, 1, 1}}, - {3, 'A', 1999, 1, Date{2003, 2, 1}}, - {2, 'A', 1999, 1, Date{2004, 2, 1}}, - {1, 'A', 2000, 5, Date{2000, 1, 1}}, - {10, 'A', 2000, 4, Date{2000, 1, 1}}, - {11, 'A', 2000, 4, Date{2000, 1, 2}} - }; - } - - std::vector students_expected; -}; - -TEST_F(StudentSortTest, SortStudents) { - std::vector students = { - {1, 'A', 2000, 5, Date{2000, 1, 1}}, - {2, 'A', 1999, 1, Date{2004, 2, 1}}, - {3, 'A', 1999, 1, Date{2003, 2, 1}}, - {4, 'B', 150, 5, Date{2017, 1, 1}}, - {5, 'C', 140, 3, Date{2016, 1, 1}}, - {6, 'D', 120, 2, Date{2017, 1, 1}}, - {7, 'Z', 100, 1, Date{2018, 1, 1}}, - {8, 'A', 1999, 2, Date{2003, 1, 1}}, - {9, 'A', 1999, 1, Date{2003, 1, 1}}, - {10, 'A', 2000, 4, Date{2000, 1, 1}}, - {11, 'A', 2000, 4, Date{2000, 1, 2}} - }; - - std::sort(students.begin(), students.end()); - - for (size_t i = 0; i < students.size(); ++i) { - EXPECT_EQ(students[i].id, students_expected[i].id); - EXPECT_EQ(students[i].mark, students_expected[i].mark); - EXPECT_EQ(students[i].score, students_expected[i].score); - EXPECT_EQ(students[i].course, students_expected[i].course); - EXPECT_EQ(students[i].birth_date, students_expected[i].birth_date); - } -} \ No newline at end of file diff --git a/03_week/tasks/enum_operators/CMakeLists.txt b/03_week/tasks/enum_operators/CMakeLists.txt deleted file mode 100644 index efb136e1..00000000 --- a/03_week/tasks/enum_operators/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_gtest(test_enum_operators test.cpp) \ No newline at end of file diff --git a/03_week/tasks/enum_operators/README.md b/03_week/tasks/enum_operators/README.md deleted file mode 100644 index 59f6ff0d..00000000 --- a/03_week/tasks/enum_operators/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# Переопределение побитовых операторов - -Необходимо реализовать перегрузку побитовых операторов для перечисления `CheckFlags`: - -- `operator|` - возвращает результат побитового ИЛИ двух перечислений -- `operator&` - возвращает `true`, если все активные флаги одного операнда - присутствуют у другого операнда, иначе возвращает `false`. В случае когда у одного - из операндов нет активных флагов возвращает `false` -- `operator^` - возвращает результат исключающего ИЛИ двух перечислений. -- `operator~` - инвертирует установленные флаги (для `NONE` результат будет `ALL`) -- `operator<<` - выводит через запятую в произвольный поток вывода имена включенных - флагов проверки - -## Ограничения - -Все операторы должны гарантировать, что результат не содержит флагов вне диапазона -`[NONE, ALL]`, даже если входные данные превышают диапазон. Флаги вне диапазона -игнорируются. - \ No newline at end of file diff --git a/03_week/tasks/enum_operators/enum_operators.cpp b/03_week/tasks/enum_operators/enum_operators.cpp deleted file mode 100644 index a539be38..00000000 --- a/03_week/tasks/enum_operators/enum_operators.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#include -#include - -enum class CheckFlags : uint8_t { - NONE = 0, - TIME = (1 << 0), - DATE = (1 << 1), - USER = (1 << 2), - CERT = (1 << 3), - KEYS = (1 << 4), - DEST = (1 << 5), - ALL = TIME | DATE | USER | CERT | KEYS | DEST -}; - -/* return_type */ operator|(/* args */) { - throw std::runtime_error{"Not implemented"}; -} - -/* return_type */ operator&(/* args */) { - throw std::runtime_error{"Not implemented"}; -} - -/* return_type */ operator^(/* args */) { - throw std::runtime_error{"Not implemented"}; -} - -/* return_type */ operator~(/* args */) { - throw std::runtime_error{"Not implemented"}; -} - -/* return_type */ operator<<(/* args */) { - throw std::runtime_error{"Not implemented"}; -} diff --git a/03_week/tasks/enum_operators/test.cpp b/03_week/tasks/enum_operators/test.cpp deleted file mode 100644 index caf96643..00000000 --- a/03_week/tasks/enum_operators/test.cpp +++ /dev/null @@ -1,226 +0,0 @@ -#include - -#include -#include -#include - -#include "enum_operators.cpp" - - -TEST(EnumOperatorsTest, UnderlyingType) { - static_assert(std::is_same_v, uint8_t>, - "CheckFlags must use uint8_t as underlying type"); - EXPECT_EQ(sizeof(CheckFlags), sizeof(uint8_t)); - EXPECT_EQ(alignof(CheckFlags), alignof(uint8_t)); -} - -TEST(EnumOperatorsTest, BitwiseOr) { - EXPECT_EQ(CheckFlags::TIME | CheckFlags::DATE, static_cast( - static_cast(CheckFlags::TIME) + static_cast(CheckFlags::DATE))); - EXPECT_EQ(CheckFlags::TIME | CheckFlags::DEST | CheckFlags::USER, static_cast( - static_cast(CheckFlags::TIME) + static_cast(CheckFlags::DEST) + - static_cast(CheckFlags::USER))); - EXPECT_EQ(CheckFlags::TIME | CheckFlags::TIME, CheckFlags::TIME); - EXPECT_EQ(CheckFlags::NONE | CheckFlags::TIME, CheckFlags::TIME); - EXPECT_EQ(CheckFlags::ALL | CheckFlags::TIME, CheckFlags::ALL); -} - -TEST(EnumOperatorsTest, BitwiseOrOutside) { - EXPECT_EQ(static_cast(0xFF) | CheckFlags::NONE, CheckFlags::ALL); - uint8_t invalid = 0x40; - invalid += static_cast(CheckFlags::CERT); - EXPECT_EQ(static_cast(invalid) | CheckFlags::KEYS, - static_cast(static_cast(CheckFlags::CERT) + static_cast(CheckFlags::KEYS))); -} - -TEST(EnumOperatorsTest, BitwiseAnd) { - CheckFlags flags = CheckFlags::TIME | CheckFlags::DATE; - - EXPECT_TRUE(flags & CheckFlags::TIME); - EXPECT_TRUE(flags & CheckFlags::DATE); - EXPECT_FALSE(flags & CheckFlags::USER); - - EXPECT_TRUE(CheckFlags::ALL & CheckFlags::TIME); - EXPECT_TRUE(CheckFlags::TIME & CheckFlags::ALL); - EXPECT_TRUE(CheckFlags::DATE & CheckFlags::ALL); - EXPECT_TRUE(CheckFlags::ALL & CheckFlags::ALL); - - EXPECT_FALSE(CheckFlags::DATE & CheckFlags::NONE); - EXPECT_FALSE(CheckFlags::NONE & CheckFlags::DATE); - EXPECT_FALSE(CheckFlags::NONE & CheckFlags::ALL); - EXPECT_FALSE(CheckFlags::ALL & CheckFlags::NONE); - EXPECT_FALSE(CheckFlags::NONE & CheckFlags::NONE); -} - -TEST(EnumOperatorsTest, BitwiseAndComplex) { - CheckFlags flags = CheckFlags::TIME | CheckFlags::DATE | CheckFlags::USER; - - EXPECT_TRUE(flags & (CheckFlags::TIME | CheckFlags::DATE)); - EXPECT_TRUE(flags & (CheckFlags::USER | CheckFlags::DATE)); - EXPECT_TRUE((CheckFlags::TIME | CheckFlags::DATE) & flags); - EXPECT_TRUE((CheckFlags::USER | CheckFlags::DATE) & flags); - - EXPECT_FALSE(flags & CheckFlags::CERT); - EXPECT_FALSE(flags & (CheckFlags::TIME | CheckFlags::CERT)); - EXPECT_FALSE(flags & (CheckFlags::DATE | CheckFlags::CERT)); - EXPECT_FALSE(flags & (CheckFlags::DATE | CheckFlags::TIME | CheckFlags::CERT)); - - EXPECT_FALSE(flags & CheckFlags::NONE); - EXPECT_FALSE(CheckFlags::NONE & flags); - - EXPECT_TRUE(flags & flags); - EXPECT_TRUE(flags & (CheckFlags::TIME | CheckFlags::DATE | CheckFlags::USER | CheckFlags::CERT)); - EXPECT_TRUE((CheckFlags::TIME | CheckFlags::DATE | CheckFlags::USER | CheckFlags::CERT) & flags); -} - -TEST(EnumOperatorsTest, BitwiseAndOutside) { - EXPECT_FALSE(static_cast(0xC0) & static_cast(0xC0)); - EXPECT_FALSE(static_cast(0xC1) & static_cast(0xC2)); - EXPECT_FALSE(static_cast(0xC0) & CheckFlags::ALL); - EXPECT_TRUE(static_cast(0xC1) & static_cast(0x03)); -} - -TEST(EnumOperatorsTest, BitwiseXor) { - CheckFlags flags1 = CheckFlags::TIME | CheckFlags::DATE; - CheckFlags flags2 = CheckFlags::TIME | CheckFlags::USER; - - EXPECT_EQ(flags1 ^ flags2, CheckFlags::DATE | CheckFlags::USER); - EXPECT_EQ(flags2 ^ flags1, CheckFlags::DATE | CheckFlags::USER); - EXPECT_EQ(flags1 ^ flags1, CheckFlags::NONE); - EXPECT_EQ(flags1 ^ CheckFlags::NONE, flags1); - EXPECT_EQ(CheckFlags::NONE ^ flags2, flags2); - EXPECT_EQ(flags1 ^ CheckFlags::ALL, CheckFlags::USER | CheckFlags::CERT | CheckFlags::KEYS | CheckFlags::DEST); - EXPECT_EQ(CheckFlags::ALL ^ flags2, CheckFlags::DATE | CheckFlags::CERT | CheckFlags::KEYS | CheckFlags::DEST); -} - -TEST(EnumOperatorsTest, BitwiseXorOutside) { - EXPECT_EQ(static_cast(0xC0) ^ static_cast(0x80), CheckFlags::NONE); - EXPECT_EQ(static_cast(0xC1) ^ static_cast(0xC2), CheckFlags::TIME | CheckFlags::DATE); - EXPECT_EQ(static_cast(0xC0) ^ CheckFlags::ALL,CheckFlags::ALL); - EXPECT_EQ(static_cast(0xFF) ^ CheckFlags::ALL, CheckFlags::NONE); -} - -TEST(EnumOperatorsTest, BitwiseNot) { - EXPECT_EQ(~(CheckFlags::NONE), CheckFlags::ALL); - EXPECT_EQ(~(CheckFlags::ALL), CheckFlags::NONE); - - CheckFlags not_time = ~CheckFlags::TIME; - EXPECT_NE(not_time, CheckFlags::NONE); - EXPECT_NE(not_time, CheckFlags::TIME); - EXPECT_FALSE(not_time & CheckFlags::TIME); - - CheckFlags flags = CheckFlags::TIME | CheckFlags::DATE; - EXPECT_EQ(~(~flags), flags); -} - -TEST(EnumOperatorsTest, OutputOperator) { - std::stringstream ss; - - ss << CheckFlags::NONE; - EXPECT_EQ(ss.str(), "NONE"); - ss.str(""); - - ss << CheckFlags::ALL; - EXPECT_EQ(ss.str(), "TIME, DATE, USER, CERT, KEYS, DEST"); - ss.str(""); - - ss << CheckFlags::DEST; - EXPECT_EQ(ss.str(), "DEST"); - ss.str(""); - - ss << (CheckFlags::TIME | CheckFlags::DATE | CheckFlags::USER); - std::string result = ss.str(); - EXPECT_EQ(result, "TIME, DATE, USER"); -} - -TEST(EnumOperatorsTest, OutputOperatorOutside) { - std::stringstream ss; - - ss << static_cast(0xC1); - EXPECT_EQ(ss.str(), "TIME"); - ss.str(""); - - ss << static_cast(0xFF); - EXPECT_EQ(ss.str(), "TIME, DATE, USER, CERT, KEYS, DEST"); - ss.str(""); - - ss << static_cast(0x80); - EXPECT_EQ(ss.str(), "NONE"); - ss.str(""); -} - -TEST(EnumOperatorsTest, OutputOperatorChainUse) { - std::stringstream ss; - ss << CheckFlags::CERT << " " << CheckFlags::KEYS << " " << CheckFlags::DEST; - std::string result = ss.str(); - EXPECT_EQ(result, "CERT KEYS DEST"); -} - - -TEST(EnumOperatorsTest, Sanitization) { - uint8_t raw_value = 0xFF; - CheckFlags flags_with_invalid = static_cast(raw_value); - - CheckFlags or_result = flags_with_invalid | CheckFlags::NONE; - EXPECT_EQ(or_result, CheckFlags::ALL); - - EXPECT_TRUE(flags_with_invalid & CheckFlags::ALL); - - CheckFlags xor_result = flags_with_invalid ^ CheckFlags::ALL; - EXPECT_EQ(xor_result, CheckFlags::NONE); - std::cerr << flags_with_invalid << std::endl; - - CheckFlags not_result = ~flags_with_invalid; - std::cerr << not_result << std::endl; - EXPECT_EQ(not_result, CheckFlags::NONE); -} - -TEST(EnumOperatorsTest, CombinedOperations) { - CheckFlags base = CheckFlags::TIME | CheckFlags::DATE | CheckFlags::USER; - - CheckFlags added = base | CheckFlags::CERT; - EXPECT_TRUE(added & CheckFlags::CERT); - - CheckFlags removed = added ^ CheckFlags::DATE; - EXPECT_FALSE(removed & CheckFlags::DATE); - EXPECT_TRUE(removed & CheckFlags::TIME); - EXPECT_TRUE(removed & CheckFlags::USER); - EXPECT_TRUE(removed & CheckFlags::CERT); - - CheckFlags inverse = ~removed; - EXPECT_FALSE(inverse & CheckFlags::TIME); - EXPECT_FALSE(inverse & CheckFlags::USER); - EXPECT_FALSE(inverse & CheckFlags::CERT); - EXPECT_TRUE(inverse & CheckFlags::DATE); - EXPECT_TRUE(inverse & CheckFlags::KEYS); - EXPECT_TRUE(inverse & CheckFlags::DEST); -} - -TEST(EnumOperatorsTest, OperationWithConst) { - const CheckFlags base = CheckFlags::TIME | CheckFlags::DATE | CheckFlags::USER; - - const CheckFlags added_lhs = base | CheckFlags::CERT; - const CheckFlags added_rhs = CheckFlags::CERT | base; - EXPECT_TRUE(added_lhs & CheckFlags::CERT); - EXPECT_TRUE(CheckFlags::CERT & added_rhs); - - const CheckFlags removed_lhs = added_lhs ^ CheckFlags::DATE; - const CheckFlags removed_rhs = CheckFlags::DATE ^ added_lhs; - EXPECT_FALSE(removed_lhs & CheckFlags::DATE); - EXPECT_TRUE(removed_lhs & CheckFlags::TIME); - EXPECT_TRUE(CheckFlags::USER & removed_lhs); - EXPECT_TRUE(CheckFlags::CERT & removed_lhs); - - EXPECT_FALSE(removed_rhs & CheckFlags::DATE); - EXPECT_TRUE(removed_rhs & CheckFlags::TIME); - EXPECT_TRUE(CheckFlags::USER & removed_rhs); - EXPECT_TRUE(CheckFlags::CERT & removed_rhs); - - const CheckFlags inverse = ~removed_lhs; - EXPECT_FALSE(inverse & CheckFlags::TIME); - EXPECT_FALSE(inverse & CheckFlags::USER); - EXPECT_FALSE(inverse & CheckFlags::CERT); - EXPECT_TRUE(inverse & CheckFlags::DATE); - EXPECT_TRUE(inverse & CheckFlags::KEYS); - EXPECT_TRUE(inverse & CheckFlags::DEST); -} \ No newline at end of file diff --git a/03_week/tasks/filter/CMakeLists.txt b/03_week/tasks/filter/CMakeLists.txt deleted file mode 100644 index e5f4644d..00000000 --- a/03_week/tasks/filter/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_gtest(test_filter test.cpp) \ No newline at end of file diff --git a/03_week/tasks/filter/README.md b/03_week/tasks/filter/README.md deleted file mode 100644 index 4cd5bace..00000000 --- a/03_week/tasks/filter/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Фильтрация данных - -Необходимо реализовать функцию `Filter`, которая принимает `std::vector` -и указатель на функцию предикат, и оставляет в контейнере элементы, -удовлетворяющие предикату, в исходном порядке. - -## Примечание - -- Запрещено использовать функции из `` -- Алгоритм должен работать за линейное время `O(n)` (за один проход) -- Постарайтесь не выделять дополнительную память, дополнительная память `O(1)` \ No newline at end of file diff --git a/03_week/tasks/filter/filter.cpp b/03_week/tasks/filter/filter.cpp deleted file mode 100644 index 6648cb39..00000000 --- a/03_week/tasks/filter/filter.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include - - -/* return_type */ Filter(/* args */) { - throw std::runtime_error{"Not implemented"}; -} \ No newline at end of file diff --git a/03_week/tasks/filter/test.cpp b/03_week/tasks/filter/test.cpp deleted file mode 100644 index 2ad4ff38..00000000 --- a/03_week/tasks/filter/test.cpp +++ /dev/null @@ -1,172 +0,0 @@ -#include - -#include -#include -#include -#include -#include - -#include "filter.cpp" - - -bool IsEven(int x) { - return x % 2 == 0; -} - -bool IsOdd(int x) { - return x % 2; -} - -bool IsPositive(int x) { - return x > 0; -} - -bool AlwaysFalse(int) { - return false; -} - -TEST(FilterTest, EmptyVector) { - std::vector empty_vec; - Filter(empty_vec, IsEven); - EXPECT_TRUE(empty_vec.empty()); -} - -TEST(FilterTest, AllElementsFalse) { - std::vector vec = {1, -3, 5, -7, 9}; - Filter(vec, IsEven); - EXPECT_TRUE(vec.empty()); -} - -TEST(FilterTest, NullptrPredicate) { - std::vector vec = {1, 2, 3, 4, 5}; - size_t expected_size = vec.size(); - EXPECT_NO_THROW(Filter(vec, nullptr)); - EXPECT_EQ(vec.size(), expected_size); -} - -TEST(FilterTest, SingleElementTrue) { - std::vector vec = {18}; - Filter(vec, IsEven); - EXPECT_EQ(vec.size(), 1); - EXPECT_EQ(vec[0], 18); -} - -TEST(FilterTest, SingleElementFalse) { - std::vector vec = {17}; - Filter(vec, IsEven); - EXPECT_TRUE(vec.empty()); -} - -TEST(FilterTest, AllElementsPass) { - std::vector vec = {2, 4, 6, 8, 10}; - Filter(vec, IsEven); - std::vector expected = {2, 4, 6, 8, 10}; - EXPECT_EQ(vec.size(), expected.size()); - EXPECT_EQ(vec, expected); -} - -TEST(FilterTest, MixedElements) { - std::vector vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; - Filter(vec, IsEven); - std::vector expected = {2, 4, 6, 8, 10}; - EXPECT_EQ(vec.size(), expected.size()); - EXPECT_EQ(vec, expected); -} - -TEST(FilterTest, NotSortedElements) { - std::vector vec = {10, 2, 3, 4, 5, 7, 6, 8, 9, 1}; - Filter(vec, IsEven); - std::vector expected = {10, 2, 4, 6, 8}; - EXPECT_EQ(vec, expected); -} - -TEST(FilterTest, NotRealocate) { - std::vector vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; - auto capacity = vec.capacity(); - auto ptr_before = vec.data(); - Filter(vec, IsEven); - EXPECT_EQ(vec.data(), ptr_before); - EXPECT_EQ(vec.capacity(), capacity); -} - -TEST(FilterTest, AllFalsePredicate) { - std::vector vec = {1, 2, 3, 4, 5}; - Filter(vec, AlwaysFalse); - EXPECT_TRUE(vec.empty()); -} - -TEST(FilterTest, LargeVector) { - const size_t SIZE = 1'000'000; - std::vector vec(SIZE); - for (size_t i = 0; i < SIZE; ++i) { - vec[i] = static_cast(i); - } - - Filter(vec, IsEven); - - EXPECT_EQ(vec.size(), SIZE / 2); - - for (size_t i = 0; i < vec.size(); ++i) { - EXPECT_EQ(vec[i], static_cast(i * 2)); - EXPECT_TRUE(IsEven(vec[i])); - } -} - -TEST(FilterTest, ConsecutiveCalls) { - std::vector vec = {1, -2, 3, 4, 5, 6, 7, -8, 9, 10}; - - Filter(vec, IsEven); - Filter(vec, IsEven); - std::vector expected = {-2, 4, 6, -8, 10}; - EXPECT_EQ(vec, expected); - - Filter(vec, IsPositive); - expected = {4, 6, 10}; - EXPECT_EQ(vec, expected); -} - -TEST(FilterTest, BigRandomDataMultipleSeeds) { - const size_t NUM_TESTS = 10; - const size_t VECTOR_SIZE = 1'000'000; - const int MIN_VALUE = -1'000'000; - const int MAX_VALUE = 1'000'000; - - std::random_device rd; - std::mt19937 seed_gen(rd()); - std::uniform_int_distribution seed_dist(0, 100000); - - double erase_duration = 0; - double filter_duration = 0; - for (size_t test_idx = 0; test_idx < NUM_TESTS; ++test_idx) { - unsigned int seed = seed_dist(seed_gen); - std::mt19937 gen(seed); - std::uniform_int_distribution value_dist(MIN_VALUE, MAX_VALUE); - - std::vector test(VECTOR_SIZE); - for (size_t i = 0; i < VECTOR_SIZE; ++i) { - test[i] = value_dist(gen); - } - - auto expected = test; - auto start = std::chrono::high_resolution_clock::now(); - std::erase_if(expected, IsOdd); - auto end = std::chrono::high_resolution_clock::now(); - erase_duration += std::chrono::duration_cast(end - start).count(); - - start = std::chrono::high_resolution_clock::now(); - Filter(test, IsEven); - end = std::chrono::high_resolution_clock::now(); - filter_duration += std::chrono::duration_cast(end - start).count(); - - ASSERT_EQ(test.size(), expected.size()) - << "Test #" << test_idx << " with seed " << seed - << ": size mismatch"; - EXPECT_EQ(test, expected) - << "Test #" << test_idx << " with seed " << seed - << ": content mismatch"; - } - - EXPECT_LE(filter_duration, 1.2 * erase_duration) - << "Function too slow: " - <<"filter_duration = " << filter_duration << " ms, erase_duration = " << erase_duration << " ms\n"; -} \ No newline at end of file diff --git a/03_week/tasks/find_all/CMakeLists.txt b/03_week/tasks/find_all/CMakeLists.txt deleted file mode 100644 index e96cdff7..00000000 --- a/03_week/tasks/find_all/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_gtest(test_find_all test.cpp) \ No newline at end of file diff --git a/03_week/tasks/find_all/README.md b/03_week/tasks/find_all/README.md deleted file mode 100644 index 50475494..00000000 --- a/03_week/tasks/find_all/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Найти все элементы - -Необходимо реализовать функцию `FindAll`, которая принимает на вход контейнер -`std::vector` и указатель на функцию предикат, и возвращает контейнер -позиций всех элементов, удовлетворяющих предикату. - -## Примечание - -- Запрещено использовать функции из `` \ No newline at end of file diff --git a/03_week/tasks/find_all/find_all.cpp b/03_week/tasks/find_all/find_all.cpp deleted file mode 100644 index 74f393b2..00000000 --- a/03_week/tasks/find_all/find_all.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include - - -/* return_type */ FindAll(/* args */) { - throw std::runtime_error{"Not implemented"}; -} \ No newline at end of file diff --git a/03_week/tasks/find_all/test.cpp b/03_week/tasks/find_all/test.cpp deleted file mode 100644 index f58dc607..00000000 --- a/03_week/tasks/find_all/test.cpp +++ /dev/null @@ -1,119 +0,0 @@ -#include - -#include - -#include "find_all.cpp" - -bool IsEven(int x) { - return x % 2 == 0; -} - -bool IsPositive(int x) { - return x > 0; -} - -bool AlwaysFalse(int) { - return false; -} - -TEST(FindAllTest, EmptyVector) { - std::vector empty_vec; - auto result = FindAll(empty_vec, IsEven); - EXPECT_TRUE(result.empty()); -} - -TEST(FindAllTest, NullptrPredicate) { - std::vector vec = {1, 2, 3, 4, 5}; - auto result = FindAll(vec, nullptr); - EXPECT_TRUE(result.empty()); -} - -TEST(FindAllTest, SingleElementTrue) { - std::vector vec = {18}; - auto result = FindAll(vec, IsEven); - EXPECT_EQ(result.size(), 1); - EXPECT_EQ(result[0], 0); -} - -TEST(FindAllTest, SingleElementFalse) { - std::vector vec = {17}; - auto result = FindAll(vec, IsEven); - EXPECT_TRUE(result.empty()); -} - -TEST(FindAllTest, AllElementsPass) { - std::vector vec = {2, 4, 6, 8, 10}; - auto result = FindAll(vec, IsEven); - - EXPECT_EQ(result.size(), vec.size()); - std::vector expected = {0, 1, 2, 3, 4}; - EXPECT_EQ(result, expected); -} - -TEST(FindAllTest, AllElementsFalse) { - std::vector vec = {1, 3, 5, 7, 9}; - auto result = FindAll(vec, IsEven); - EXPECT_TRUE(result.empty()); -} - -TEST(FindAllTest, MixedElements) { - std::vector vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; - auto result = FindAll(vec, IsEven); - std::vector expected = {1, 3, 5, 7, 9}; - EXPECT_EQ(result, expected); -} - -TEST(FindAllTest, NotSortedElements) { - std::vector vec = {10, 2, 3, 4, 5, 7, 6, 8, 9, 1}; - auto result = FindAll(vec, IsEven); - std::vector expected = {0, 1, 3, 6, 7}; - EXPECT_EQ(result, expected); -} - -TEST(FindAllTest, AllFalsePredicate) { - std::vector vec = {1, 2, 3, 4, 5}; - auto result = FindAll(vec, AlwaysFalse); - EXPECT_TRUE(result.empty()); -} - -TEST(FindAllTest, LargeVector) { - const size_t SIZE = 1'000'000; - std::vector vec(SIZE); - for (size_t i = 0; i < SIZE; ++i) { - vec[i] = static_cast(i); - } - - auto result = FindAll(vec, IsEven); - - EXPECT_EQ(result.size(), SIZE / 2); - - for (size_t i = 0; i < result.size(); ++i) { - EXPECT_EQ(result[i], i * 2); - EXPECT_TRUE(IsEven(vec[result[i]])); - } -} - -TEST(FindAllTest, CapacityOptimization) { - std::vector vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; - - auto result = FindAll(vec, IsEven); - EXPECT_EQ(result.capacity(), result.size()); -} - -TEST(FindAllTest, ConsecutiveCalls) { - std::vector vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; - - auto result1 = FindAll(vec, IsEven); - auto result2 = FindAll(vec, IsEven); - EXPECT_EQ(result1, result2); - - auto result3 = FindAll(vec, IsPositive); - EXPECT_EQ(result3.size(), 10); -} - -TEST(FindAllTest, ConstCorrectness) { - const std::vector vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; - auto result = FindAll(vec, IsEven); - std::vector expected = {1, 3, 5, 7, 9}; - EXPECT_EQ(result, expected); -} \ No newline at end of file diff --git a/03_week/tasks/minmax/CMakeLists.txt b/03_week/tasks/minmax/CMakeLists.txt deleted file mode 100644 index a2a33c75..00000000 --- a/03_week/tasks/minmax/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_gtest(test_minmax test.cpp) \ No newline at end of file diff --git a/03_week/tasks/minmax/README.md b/03_week/tasks/minmax/README.md deleted file mode 100644 index b9067359..00000000 --- a/03_week/tasks/minmax/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Минимум и максимум - -Необходимо реализовать функцию `MinMax`, которая принимает на вход контейнер -`std::vector` и возвращает пару итераторов, указывающих на минимальный -и максимальный элемент контейнера. - -## Примечание - -- Запрещено использовать `std::minmax_element` и другие функции из `` -- Необходимо найти оба элемента за один проход по контейнеру. -- Для пустого контейнера необходимо вернуть пару итераторов на конец контейнера. -- В случае нескольких одинаковых элементов, итератор на минимум должен указывать - на первое вхождение, итератор на максимум на последнее вхождение соответствующих - элементов \ No newline at end of file diff --git a/03_week/tasks/minmax/minmax.cpp b/03_week/tasks/minmax/minmax.cpp deleted file mode 100644 index c2869799..00000000 --- a/03_week/tasks/minmax/minmax.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include - - -/* return_type */ MinMax(/* args */) { - throw std::runtime_error{"Not implemented"}; -} diff --git a/03_week/tasks/minmax/test.cpp b/03_week/tasks/minmax/test.cpp deleted file mode 100644 index 70e1cb68..00000000 --- a/03_week/tasks/minmax/test.cpp +++ /dev/null @@ -1,141 +0,0 @@ -#include - -#include -#include -#include -#include -#include -#include -#include - -#include "minmax.cpp" - - -TEST(MinMaxTest, EmptyVector) { - std::vector empty_vec; - auto [min_it, max_it] = MinMax(empty_vec); - - EXPECT_EQ(min_it, empty_vec.end()); - EXPECT_EQ(max_it, empty_vec.end()); -} - -TEST(MinMaxTest, SingleElement) { - std::vector vec = {42}; - auto [min_it, max_it] = MinMax(vec); - - EXPECT_EQ(min_it, vec.begin()); - EXPECT_EQ(max_it, vec.begin()); - EXPECT_EQ(*min_it, 42); - EXPECT_EQ(*max_it, 42); -} - -TEST(MinMaxTest, AllEqualElements) { - std::vector vec = {5, 5, 5, 5, 5}; - auto [min_it, max_it] = MinMax(vec); - - EXPECT_NE(min_it, vec.begin()); - EXPECT_NE(max_it, vec.end() - 1); - EXPECT_EQ(*min_it, 5); - EXPECT_EQ(*max_it, 5); -} - -TEST(MinMaxTest, BeginMinEndMax) { - std::vector vec = {1, 2, 3, 4, 5}; - auto [min_it, max_it] = MinMax(vec); - - EXPECT_EQ(min_it, vec.begin()); - EXPECT_EQ(max_it, vec.end() - 1); - EXPECT_EQ(*min_it, 1); - EXPECT_EQ(*max_it, 5); - -} - -TEST(MinMaxTest, BeginMaxEndMin) { - std::vector vec = {5, 4, 3, 2, 1}; - auto [min_it, max_it] = MinMax(vec); - - EXPECT_EQ(min_it, vec.end() - 1); - EXPECT_EQ(max_it, vec.begin()); - EXPECT_EQ(*min_it, 1); - EXPECT_EQ(*max_it, 5); -} - -TEST(MinMaxTest, MinAndMaxInMiddle) { - std::vector vec = {5, 3, 2, 1, 5, 4, 2, 1}; - auto [min_it, max_it] = MinMax(vec); - - EXPECT_EQ(min_it, vec.begin() + 3); - EXPECT_EQ(max_it, vec.begin() + 4); - EXPECT_EQ(*min_it, 1); - EXPECT_EQ(*max_it, 5); -} - -TEST(MinMaxTest, NegativeNumbers) { - std::vector vec = {-5, -10, -3, -1, -8}; - auto [min_it, max_it] = MinMax(vec); - - EXPECT_EQ(min_it, vec.begin() + 1); - EXPECT_EQ(max_it, vec.begin() + 3); - EXPECT_EQ(*min_it, -10); - EXPECT_EQ(*max_it, -1); -} - -TEST(MinMaxTest, MixedPositiveNegative) { - std::vector vec = {-5, 10, -3, 0, 8, -20}; - auto [min_it, max_it] = MinMax(vec); - - EXPECT_EQ(min_it, vec.end() - 1); - EXPECT_EQ(max_it, vec.begin() + 1); - EXPECT_EQ(*min_it, -20); - EXPECT_EQ(*max_it, 10); -} - -TEST(MinMaxTest, LargeVector) { - std::vector vec(1000); - - int value = -vec.size() / 2; - for (size_t i = 0; i < vec.size(); ++i, ++value) { - vec[i] = value; - } - - vec[500] = -vec.size(); - vec[750] = vec.size(); - - auto [min_it, max_it] = MinMax(vec); - - EXPECT_EQ(min_it, vec.begin() + 500); - EXPECT_EQ(max_it, vec.begin() + 750); - EXPECT_EQ(*min_it, -vec.size()); - EXPECT_EQ(*max_it, vec.size()); -} - -TEST(MinMaxTest, ConstCorrectness) { - const std::vector vec = {1, 9}; - auto [min_it, max_it] = MinMax(vec); - - EXPECT_EQ(*min_it, 1); - EXPECT_EQ(*max_it, 9); -} - -TEST(MinMaxTest, PerformanceCheck) { - const double THRESHOLD = 0.3; - const size_t SIZE = 1'000'000u; - std::vector large_vec(SIZE); - std::iota(large_vec.begin(), large_vec.end(), 0); - std::shuffle(large_vec.begin(), large_vec.end(), std::mt19937{18}); - - auto start = std::chrono::high_resolution_clock::now(); - auto [min_it, max_it] = MinMax(large_vec); - auto end = std::chrono::high_resolution_clock::now(); - auto duration = std::chrono::duration_cast(end - start); - - start = std::chrono::high_resolution_clock::now(); - auto [min_it_std, max_it_std] = std::minmax_element(large_vec.begin(), large_vec.end()); - end = std::chrono::high_resolution_clock::now(); - auto duration_std = std::chrono::duration_cast(end - start); - - EXPECT_LE(std::abs(duration_std.count() - duration.count()) * 1.0, duration_std.count() * THRESHOLD) << - "Your function is very slowly"; - EXPECT_EQ(*min_it, *min_it_std); - EXPECT_EQ(*max_it, *max_it_std); -} \ No newline at end of file diff --git a/03_week/tasks/os_overload/CMakeLists.txt b/03_week/tasks/os_overload/CMakeLists.txt deleted file mode 100644 index 48aae693..00000000 --- a/03_week/tasks/os_overload/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_gtest(test_os_overload test.cpp) \ No newline at end of file diff --git a/03_week/tasks/os_overload/README.md b/03_week/tasks/os_overload/README.md deleted file mode 100644 index 2986a87a..00000000 --- a/03_week/tasks/os_overload/README.md +++ /dev/null @@ -1,42 +0,0 @@ -# Перегрузка оператора вывода - -Необходимо реализовать операторы вывода в поток для типа `CircleRegionList` и -всех вложенных в него типов. - -Структура `Coord2D` содержит два целочисленных поля `x`, `y`, по умолчанию, -имеющие значения начала координат. - -Структура `Circle` имеет поле `Coord2D` для центра окружности, и целочисленное поле -для задания радиуса окружности. По умолчанию радиус должен быть равен 1 и не должен -принимать отрицательных значений. - -Пара `CircleRegion` включает в себя структуру `Circle` и булевое поле, которое -характеризует внутренняя или внешняя зона окружности активна, `true` - внутренняя, -`false` - внешняя - -Требования к выводу: - -- `Coord2D` - должен выводится в формате `(x, y)` -- `Circle` - должен выводиться в формате `circle[{center}, r = {radius}]`, где - `{center}` вывод координат центра в соответствии с `Coord2D`, а `{radius}` - значение радиуса, или `circle[]`, если радиус равен нулю. -- `CircleRegion` - при выводе должен ставить `+` для внутренней зоны окружности и - `-` для внешней перед форматированным выводом `Circle` -- `CircleRegionList` - выводит внутри фигурных скобок с нулевым отступом, весь список - `CircleRegion` через запятую в форматированном виде, с новой строки, с отступом в одну - табуляцию или `{}`, если список пуст. - -Возможный вывод в поток: - -``` -{ - +circle[(-1, 3), r = 5], - -circle[(0, 0), r = 17], - +circle[], - -circle[] -} -``` - -## Примечание - -- Должен работать вывод в произвольный поток вывода. \ No newline at end of file diff --git a/03_week/tasks/os_overload/os_overload.cpp b/03_week/tasks/os_overload/os_overload.cpp deleted file mode 100644 index e473418d..00000000 --- a/03_week/tasks/os_overload/os_overload.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include -#include -#include - - -struct Coord2D { - int x; - int y; -}; - -struct Circle { - Coord2D coord; - unsigned radius; -}; - -using CircleRegion = std::pair; -using CircleRegionList = std::vector; - -/* return_type */ operator<<(/* args */) { - throw std::runtime_error{"Not implemented"}; -} diff --git a/03_week/tasks/os_overload/test.cpp b/03_week/tasks/os_overload/test.cpp deleted file mode 100644 index 461009a3..00000000 --- a/03_week/tasks/os_overload/test.cpp +++ /dev/null @@ -1,308 +0,0 @@ -#include - -#include -#include - -#include "os_overload.cpp" - -TEST(Coord2DTest, DefaultConstructor) { - Coord2D coord; - EXPECT_EQ(coord.x, 0); - EXPECT_EQ(coord.y, 0); -} - -TEST(Coord2DTest, Coord2DCreation) { - Coord2D coord = {5, -3}; - EXPECT_EQ(coord.x, 5); - EXPECT_EQ(coord.y, -3); -} - -TEST(Coord2DTest, OutputOperator) { - { - Coord2D coord; - std::ostringstream oss; - oss << coord; - EXPECT_EQ(oss.str(), "(0, 0)"); - } - { - Coord2D coord{42, -15}; - std::ostringstream oss; - oss << coord; - EXPECT_EQ(oss.str(), "(42, -15)"); - } - { - Coord2D coord{-1, 3}; - std::ostringstream oss; - oss << coord; - EXPECT_EQ(oss.str(), "(-1, 3)"); - } -} - -TEST(CircleTest, DefaultConstructor) { - Circle circle; - EXPECT_EQ(circle.coord.x, 0); - EXPECT_EQ(circle.coord.y, 0); - EXPECT_EQ(circle.radius, 1u); -} - -TEST(CircleTest, CircleCreation) { - { - Coord2D center{10, 20}; - Circle circle(center, 5); - EXPECT_EQ(circle.coord.x, 10); - EXPECT_EQ(circle.coord.y, 20); - EXPECT_EQ(circle.radius, 5u); - } - { - Circle circle({-5, 7}); - EXPECT_EQ(circle.coord.x, -5); - EXPECT_EQ(circle.coord.y, 7); - EXPECT_EQ(circle.radius, 1u); - } -} - -TEST(CircleTest, OutputOperator) { - { - Circle circle; - std::ostringstream oss; - oss << circle; - EXPECT_EQ(oss.str(), "circle[(0, 0), r = 1]"); - } - { - Coord2D center(-1, 3); - Circle circle(center, 5); - std::ostringstream oss; - oss << circle; - EXPECT_EQ(oss.str(), "circle[(-1, 3), r = 5]"); - } - { - Coord2D center(0, 0); - Circle circle(center, 17); - std::ostringstream oss; - oss << circle; - EXPECT_EQ(oss.str(), "circle[(0, 0), r = 17]"); - } - { - Coord2D center(10, 10); - Circle circle(center, 0); - std::ostringstream oss; - oss << circle; - EXPECT_EQ(oss.str(), "circle[]"); - } - { - Coord2D center(100, -200); - Circle circle(center, 1000); - std::ostringstream oss; - oss << circle; - EXPECT_EQ(oss.str(), "circle[(100, -200), r = 1000]"); - } -} - -TEST(CircleRegionTest, CreateAndOutput) { - { - Circle circle({3, 4}); - CircleRegion region(circle, true); - std::ostringstream oss; - oss << region; - EXPECT_EQ(oss.str(), "+circle[(3, 4), r = 1]"); - } - { - Circle circle({-5, -6}, 7); - CircleRegion region(circle, false); - std::ostringstream oss; - oss << region; - EXPECT_EQ(oss.str(), "-circle[(-5, -6), r = 7]"); - } - { - Circle circle({1, 2}, 0); - CircleRegion region(circle, true); - std::ostringstream oss; - oss << region; - EXPECT_EQ(oss.str(), "+circle[]"); - } - { - Circle circle({1, 2}, 0); - CircleRegion region(circle, false); - std::ostringstream oss; - oss << region; - EXPECT_EQ(oss.str(), "-circle[]"); - } -} - -TEST(CircleRegionListTest, EmptyList) { - CircleRegionList empty_list; - std::ostringstream oss; - oss << empty_list; - std::string expected = "{}"; - EXPECT_EQ(oss.str(), expected); -} - -TEST(CircleRegionListTest, SingleElement) { - CircleRegionList list; - list.emplace_back(Circle(Coord2D{1, 2}, 3), true); - std::ostringstream oss; - oss << list; - std::string expected = "{\n\t+circle[(1, 2), r = 3]\n}"; - EXPECT_EQ(oss.str(), expected); -} - -TEST(CircleRegionListTest, MultipleElements) { - CircleRegionList list; - list.emplace_back(Circle(Coord2D(-1, 3), 5), true); - list.emplace_back(Circle(Coord2D(0, 0), 17), false); - list.emplace_back(Circle(Coord2D(10, 20), 0), true); - list.emplace_back(Circle(Coord2D(-5, -5), 0), false); - - std::ostringstream oss; - oss << list; - - std::string expected = - "{\n" - "\t+circle[(-1, 3), r = 5],\n" - "\t-circle[(0, 0), r = 17],\n" - "\t+circle[],\n" - "\t-circle[]\n" - "}"; - EXPECT_EQ(oss.str(), expected); -} - -TEST(CircleRegionListTest, VariousCombinations) { - CircleRegionList list; - - // Добавляем разные комбинации - list.emplace_back(Circle({0, 0}), true); - list.emplace_back(Circle(Coord2D(5, 5), 10), false); - list.emplace_back(Circle(Coord2D(-10, -10), 0), true); - list.emplace_back(Circle(Coord2D(100, 200), 50), true); - list.emplace_back(Circle(Coord2D(-3, 7), 2), false); - - std::ostringstream oss; - oss << list; - - std::string expected = - "{\n" - "\t+circle[(0, 0), r = 1],\n" - "\t-circle[(5, 5), r = 10],\n" - "\t+circle[],\n" - "\t+circle[(100, 200), r = 50],\n" - "\t-circle[(-3, 7), r = 2]\n" - "}"; - EXPECT_EQ(oss.str(), expected); -} - -TEST(FullTaskTest, ChainedOutput) { - { - Coord2D coord{42, -15}; - std::ostringstream oss; - oss << coord << coord; - EXPECT_EQ(oss.str(), "(42, -15)(42, -15)"); - } - { - Circle circle_one({0, 0}, 17); - Circle circle_two({10, 10}, 0); - std::ostringstream oss; - oss << circle_one << circle_two; - EXPECT_EQ(oss.str(), "circle[(0, 0), r = 17]circle[]"); - } - { - Circle circle({-5, -6}, 7); - CircleRegion region(circle, false); - std::ostringstream oss; - oss << region << region; - EXPECT_EQ(oss.str(), "-circle[(-5, -6), r = 7]-circle[(-5, -6), r = 7]"); - } - { - CircleRegionList list; - list.emplace_back(Circle(Coord2D(1, 2), 3), true); - - std::ostringstream oss; - oss << "List:\n" << list << '\n' << list << "\nEnd"; - - std::string expected = "List:\n{\n\t+circle[(1, 2), r = 3]\n}\n{\n\t+circle[(1, 2), r = 3]\n}\nEnd"; - EXPECT_EQ(oss.str(), expected); - } -} - -TEST(FullTaskTest, ConstCorrectness) { - { - const Coord2D coord{42, -15}; - std::ostringstream oss; - oss << coord << coord; - EXPECT_EQ(oss.str(), "(42, -15)(42, -15)"); - } - { - const Circle circle_one({0, 0}, 17); - const Circle circle_two({10, 10}, 0); - std::ostringstream oss; - oss << circle_one << circle_two; - EXPECT_EQ(oss.str(), "circle[(0, 0), r = 17]circle[]"); - } - { - Circle circle({-5, -6}, 7); - const CircleRegion region(circle, false); - std::ostringstream oss; - oss << region << region; - EXPECT_EQ(oss.str(), "-circle[(-5, -6), r = 7]-circle[(-5, -6), r = 7]"); - } - { - const CircleRegionList list = { std::make_pair(Circle(Coord2D(1, 2), 3), true) }; - - std::ostringstream oss; - oss << "List:\n" << list << '\n' << list << "\nEnd"; - - std::string expected = "List:\n{\n\t+circle[(1, 2), r = 3]\n}\n{\n\t+circle[(1, 2), r = 3]\n}\nEnd"; - EXPECT_EQ(oss.str(), expected); - } -} - -class StandardOutputCaptureTest : public ::testing::Test { -protected: - void SetUp() override { - origin_cout = std::cout.rdbuf(buffer.rdbuf()); - } - - void TearDown() override { - std::cout.rdbuf(origin_cout); - } - - std::string GetOutput() { - return buffer.str(); - } - - void ClearOutput() { - buffer.str(""); - } - - std::stringstream buffer; - std::streambuf* origin_cout; -}; - -TEST_F(StandardOutputCaptureTest, WorkWithCout) { - { - Coord2D coord{42, -15}; - EXPECT_NO_THROW(std::cout << coord); - EXPECT_EQ(GetOutput(), "(42, -15)"); - } - ClearOutput(); - { - Circle circle_one({0, 0}, 17); - Circle circle_two({10, 10}, 0); - EXPECT_NO_THROW(std::cout << circle_one << circle_two); - EXPECT_EQ(GetOutput(), "circle[(0, 0), r = 17]circle[]"); - } - ClearOutput(); - { - Circle circle({-5, -6}, 7); - CircleRegion region(circle, false); - EXPECT_NO_THROW(std::cout << region); - EXPECT_EQ(GetOutput(), "-circle[(-5, -6), r = 7]"); - } - ClearOutput(); - { - CircleRegionList list; - list.emplace_back(Circle(Coord2D(1, 2), 3), true); - EXPECT_NO_THROW(std::cout << "List:\n" << list << '\n' << list << "\nEnd"); - std::string expected = "List:\n{\n\t+circle[(1, 2), r = 3]\n}\n{\n\t+circle[(1, 2), r = 3]\n}\nEnd"; - EXPECT_EQ(GetOutput(), expected); - } -} \ No newline at end of file diff --git a/03_week/tasks/range/CMakeLists.txt b/03_week/tasks/range/CMakeLists.txt deleted file mode 100644 index 650a0654..00000000 --- a/03_week/tasks/range/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_gtest(test_range test.cpp) \ No newline at end of file diff --git a/03_week/tasks/range/README.md b/03_week/tasks/range/README.md deleted file mode 100644 index 4fb3ccad..00000000 --- a/03_week/tasks/range/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Диапазон элементов - -Необходимо реализовать функцию `Range`, которая принимает на вход значение -начала диапазона, конца диапазона, шаг, и возвращает вектор `std::vector` -значений из диапазона `[from, to)` с шагом `step`. Шаг по умолчанию равен 1. - -## Примечание - -- Запрещено использовать функции из `` -- Рекомендуется избежать реалокаций памяти, то есть выделить память под нужное - количество элементов заранее \ No newline at end of file diff --git a/03_week/tasks/range/range.cpp b/03_week/tasks/range/range.cpp deleted file mode 100644 index d2085495..00000000 --- a/03_week/tasks/range/range.cpp +++ /dev/null @@ -1,7 +0,0 @@ -#include -#include - - -std::vector Range(int from, int to, int step) { - throw std::runtime_error{"Not implemented"}; -} diff --git a/03_week/tasks/range/test.cpp b/03_week/tasks/range/test.cpp deleted file mode 100644 index 1b680b90..00000000 --- a/03_week/tasks/range/test.cpp +++ /dev/null @@ -1,98 +0,0 @@ -#include - -#include -#include - -#include "range.cpp" - -TEST(RangeTest, SimpleIncreasing) { - EXPECT_EQ(Range(1, 6, 1), std::vector({1, 2, 3, 4, 5})); - EXPECT_EQ(Range(1, 7, 2), std::vector({1, 3, 5})); - EXPECT_EQ(Range(-20, 10, 10), std::vector({-20, -10, 0})); -} - -TEST(RangeTest, SimpleDecreasing) { - EXPECT_EQ(Range(6, 1, -1), std::vector({6, 5, 4, 3, 2})); - EXPECT_EQ(Range(7, 1, -2), std::vector({7, 5, 3})); - EXPECT_EQ(Range(20, 18, -3), std::vector({20})); - EXPECT_EQ(Range(-20, -24, -3), std::vector({-20, -23})); -} - -TEST(RangeTest, EmptyRanges) { - EXPECT_TRUE(Range(0, 0, 2).empty()); - EXPECT_TRUE(Range(7, 7, 1).empty()); - EXPECT_TRUE(Range(20, 20, -2).empty()); - EXPECT_TRUE(Range(-5, -5, -2).empty()); - EXPECT_TRUE(Range(-7, -7, 1).empty()); -} - -TEST(RangeTest, InvalidParameters) { - EXPECT_TRUE(Range(1, 7, -1).empty()); - EXPECT_TRUE(Range(3, 7, 0).empty()); - EXPECT_TRUE(Range(2, -2, 2).empty()); - EXPECT_TRUE(Range(3, -7, 0).empty()); - EXPECT_TRUE(Range(-2, -3, 2).empty()); -} - -TEST(RangeTest, SingleElement) { - EXPECT_EQ(Range(7, 8, 1), std::vector({7})); - EXPECT_EQ(Range(7, 8, 2), std::vector({7})); - EXPECT_EQ(Range(7, 8, 100), std::vector({7})); - - EXPECT_EQ(Range(5, 4, -1), std::vector({5})); - EXPECT_EQ(Range(5, 4, -2), std::vector({5})); - EXPECT_EQ(Range(5, 4, -100), std::vector({5})); - - EXPECT_EQ(Range(-7, 8, 100), std::vector({-7})); - EXPECT_EQ(Range(-7, -8, -100), std::vector({-7})); -} - -TEST(RangeTest, NegativeNumbers) { - EXPECT_EQ(Range(-5, 0, 1), std::vector({-5, -4, -3, -2, -1})); - EXPECT_EQ(Range(-5, 5, 2), std::vector({-5, -3, -1, 1, 3})); - EXPECT_EQ(Range(0, -5, -1), std::vector({0, -1, -2, -3, -4})); - EXPECT_EQ(Range(0, -10, -3), std::vector({0, -3, -6, -9})); -} - -TEST(RangeTest, LargeStep) { - EXPECT_EQ(Range(0, 100, 33), std::vector({0, 33, 66, 99})); - EXPECT_EQ(Range(100, 0, -33), std::vector({100, 67, 34, 1})); -} - -TEST(RangeTest, DefaultStep) { - EXPECT_EQ(Range(0, 5), std::vector({0, 1, 2, 3, 4})); - EXPECT_EQ(Range(-2, 3), std::vector({-2, -1, 0, 1, 2})); - EXPECT_TRUE(Range(5, 5).empty()); - EXPECT_TRUE(Range(5, 3).empty()); -} - -TEST(RangeTest, CapacityMatchesSize) { - auto result = Range(0, 100, 3); - EXPECT_EQ(result.capacity(), result.size()); -} - -TEST(RangePerformanceTest, LargeRange) { - const int from = -1'000'000; - const int to = 1'000'000; - - auto result_asc = Range(from, to); - EXPECT_EQ(result_asc.size(), to - from); - EXPECT_EQ(result_asc.front(), from); - EXPECT_EQ(result_asc.back(), to - 1); - - for (size_t i = 0; i < result_asc.size(); ++i) { - EXPECT_EQ(result_asc[i], from + static_cast(i)); - } - - auto result_desc = Range(to - 1, from - 1, -1); - EXPECT_EQ(result_desc.size(), to - from); - EXPECT_EQ(result_desc.front(), to - 1); - EXPECT_EQ(result_desc.back(), from); - - for (size_t i = 0; i < result_asc.size(); ++i) { - EXPECT_EQ(result_desc[i], to - 1 - static_cast(i)); - } - - EXPECT_GE(result_asc.capacity(), result_asc.size()); - EXPECT_GE(result_desc.capacity(), result_desc.size()); -} \ No newline at end of file diff --git a/03_week/tasks/unique/CMakeLists.txt b/03_week/tasks/unique/CMakeLists.txt deleted file mode 100644 index 3920144d..00000000 --- a/03_week/tasks/unique/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_gtest(test_unique test.cpp) \ No newline at end of file diff --git a/03_week/tasks/unique/README.md b/03_week/tasks/unique/README.md deleted file mode 100644 index 5f5c253e..00000000 --- a/03_week/tasks/unique/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Уникальные элементы - -Необходимо реализовать функцию `Unique`, которая принимает отсортированный -вектор `std::vector` и возвращает вектор уникальных элементов в исходном -порядке. - -## Примечание - -- Запрещено использовать функции из `` -- Рекомендуется избегать частых реалокаций памяти -- Вместимость вектора должна соответствовать количеству элементов \ No newline at end of file diff --git a/03_week/tasks/unique/test.cpp b/03_week/tasks/unique/test.cpp deleted file mode 100644 index 6c459abd..00000000 --- a/03_week/tasks/unique/test.cpp +++ /dev/null @@ -1,92 +0,0 @@ -#include - -#include -#include -#include - -#include "unique.cpp" - -TEST(UniqueTest, EmptyVector) { - std::vector empty; - auto result = Unique(empty); - EXPECT_TRUE(result.empty()); - EXPECT_EQ(result.capacity(), result.size()); -} - -TEST(UniqueTest, SingleElement) { - std::vector vec = {42}; - auto result = Unique(vec); - EXPECT_EQ(result.size(), 1); - EXPECT_EQ(result[0], 42); -} - -TEST(UniqueTest, AllSameElements) { - std::vector vec = {1, 1, 1, 1, 1}; - auto result = Unique(vec); - EXPECT_EQ(result.size(), 1); - EXPECT_EQ(result[0], 1); -} - -TEST(UniqueTest, AlreadyUniqueSorted) { - std::vector vec = {1, 2, 3, 4, 5}; - auto result = Unique(vec); - EXPECT_EQ(result.size(), 5); - EXPECT_EQ(result, vec); -} - -TEST(UniqueTest, SimpleDuplicates) { - std::vector vec = {1, 2, 2, 3, 3, 3}; - auto result = Unique(vec); - std::vector expected = {1, 2, 3}; - EXPECT_EQ(result, expected); -} - -TEST(UniqueTest, MultipleDuplicates) { - std::vector vec = {1, 1, 2, 2, 2, 3, 3, 4, 5, 5, 5, 5}; - auto result = Unique(vec); - std::vector expected = {1, 2, 3, 4, 5}; - EXPECT_EQ(result, expected); -} - -TEST(UniqueTest, NegativeNumbers) { - std::vector vec = {-5, -5, -3, -3, -3, 0, 0, 2, 2, 2, 2}; - auto result = Unique(vec); - std::vector expected = {-5, -3, 0, 2}; - EXPECT_EQ(result, expected); -} - -TEST(UniqueTest, ZeroAndDuplicates) { - std::vector vec = {0, 0, 0, 0}; - auto result = Unique(vec); - std::vector expected = {0}; - EXPECT_EQ(result, expected); -} - -TEST(UniqueTest, RandomSortedData) { - std::mt19937 gen(18); - std::uniform_int_distribution dist(-1000, 1000); - - const size_t N = 1'000'000; - std::vector vec(N); - - for (size_t i = 0; i < N; ++i) { - vec[i] = dist(gen); - } - std::sort(vec.begin(), vec.end()); - std::vector expected = vec; - auto last = std::unique(expected.begin(), expected.end()); - expected.erase(last, expected.end()); - - auto result = Unique(vec); - - EXPECT_EQ(result.size(), expected.size()); - EXPECT_EQ(result.size(), result.capacity()); - EXPECT_EQ(result, expected); -} - -TEST(UniqueTest, ConstCorrectness) { - const std::vector vec = {1, 2, 2, 3, 3, 3}; - auto result = Unique(vec); - std::vector expected = {1, 2, 3}; - EXPECT_EQ(result, expected); -} \ No newline at end of file diff --git a/03_week/tasks/unique/unique.cpp b/03_week/tasks/unique/unique.cpp deleted file mode 100644 index 9d2545bb..00000000 --- a/03_week/tasks/unique/unique.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include -#include - -/* return_type */ Unique(/* args */) { - throw std::runtime_error{"Not implemented"}; -} diff --git a/grading/deadlines.json b/grading/deadlines.json index ac7682be..7c07c7e8 100644 --- a/grading/deadlines.json +++ b/grading/deadlines.json @@ -64,51 +64,5 @@ "max_score": 200, "deadline": "2025-12-09 23:59", "description": "Форматированный вывод массива" - }, - - "data_stats": { - "max_score": 100, - "deadline": "2025-12-18 23:59", - "description": "Статистика данных" - }, - "unique": { - "max_score": 100, - "deadline": "2025-12-18 23:59", - "description": "Уникальные элементы" - }, - "range": { - "max_score": 100, - "deadline": "2025-12-18 23:59", - "description": "Диапазон элементов" - }, - "minmax": { - "max_score": 100, - "deadline": "2025-12-18 23:59", - "description": "Минимум и максимум" - }, - "find_all": { - "max_score": 100, - "deadline": "2025-12-18 23:59", - "description": "Найти все элементы" - }, - "os_overload": { - "max_score": 100, - "deadline": "2025-12-18 23:59", - "description": "Перегрузка оператора вывода" - }, - "easy_compare": { - "max_score": 100, - "deadline": "2025-12-18 23:59", - "description": "Оператор сравнения" - }, - "filter": { - "max_score": 100, - "deadline": "2025-12-18 23:59", - "description": "Фильтрация данных" - }, - "enum_operators": { - "max_score": 200, - "deadline": "2025-12-18 23:59", - "description": "Переопределение побитовых операторов" } } \ No newline at end of file From 79e9299167880db9d761178aee45c6daa0c2bd2b Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Wed, 10 Dec 2025 13:53:30 +0000 Subject: [PATCH 22/40] Auto-sync: 2025-12-10 13:53 --- 01_week/01_basic_cpp.md | 2 +- 03_week/03_data_structures.md | 916 ++++++++++++++++++ 03_week/03_data_structures.pdf | Bin 0 -> 308213 bytes 03_week/CMakeLists.txt | 17 + 03_week/examples/struct_examples.cpp | 172 ++++ 03_week/examples/union_examples.cpp | 117 +++ 03_week/examples/vector_examples.cpp | 89 ++ 03_week/tasks/CMakeLists.txt | 9 + 03_week/tasks/data_stats/CMakeLists.txt | 1 + 03_week/tasks/data_stats/README.md | 13 + 03_week/tasks/data_stats/data_stats.cpp | 11 + 03_week/tasks/data_stats/test.cpp | 80 ++ 03_week/tasks/easy_compare/CMakeLists.txt | 1 + 03_week/tasks/easy_compare/README.md | 25 + 03_week/tasks/easy_compare/easy_compare.cpp | 16 + 03_week/tasks/easy_compare/test.cpp | 269 +++++ 03_week/tasks/enum_operators/CMakeLists.txt | 1 + 03_week/tasks/enum_operators/README.md | 19 + .../tasks/enum_operators/enum_operators.cpp | 33 + 03_week/tasks/enum_operators/test.cpp | 226 +++++ 03_week/tasks/filter/CMakeLists.txt | 1 + 03_week/tasks/filter/README.md | 11 + 03_week/tasks/filter/filter.cpp | 6 + 03_week/tasks/filter/test.cpp | 172 ++++ 03_week/tasks/find_all/CMakeLists.txt | 1 + 03_week/tasks/find_all/README.md | 9 + 03_week/tasks/find_all/find_all.cpp | 6 + 03_week/tasks/find_all/test.cpp | 119 +++ 03_week/tasks/minmax/CMakeLists.txt | 1 + 03_week/tasks/minmax/README.md | 14 + 03_week/tasks/minmax/minmax.cpp | 6 + 03_week/tasks/minmax/test.cpp | 141 +++ 03_week/tasks/os_overload/CMakeLists.txt | 1 + 03_week/tasks/os_overload/README.md | 42 + 03_week/tasks/os_overload/os_overload.cpp | 21 + 03_week/tasks/os_overload/test.cpp | 308 ++++++ 03_week/tasks/range/CMakeLists.txt | 1 + 03_week/tasks/range/README.md | 11 + 03_week/tasks/range/range.cpp | 7 + 03_week/tasks/range/test.cpp | 98 ++ 03_week/tasks/unique/CMakeLists.txt | 1 + 03_week/tasks/unique/README.md | 11 + 03_week/tasks/unique/test.cpp | 92 ++ 03_week/tasks/unique/unique.cpp | 6 + grading/deadlines.json | 46 + 45 files changed, 3148 insertions(+), 1 deletion(-) create mode 100644 03_week/03_data_structures.md create mode 100644 03_week/03_data_structures.pdf create mode 100644 03_week/CMakeLists.txt create mode 100644 03_week/examples/struct_examples.cpp create mode 100644 03_week/examples/union_examples.cpp create mode 100644 03_week/examples/vector_examples.cpp create mode 100644 03_week/tasks/CMakeLists.txt create mode 100644 03_week/tasks/data_stats/CMakeLists.txt create mode 100644 03_week/tasks/data_stats/README.md create mode 100644 03_week/tasks/data_stats/data_stats.cpp create mode 100644 03_week/tasks/data_stats/test.cpp create mode 100644 03_week/tasks/easy_compare/CMakeLists.txt create mode 100644 03_week/tasks/easy_compare/README.md create mode 100644 03_week/tasks/easy_compare/easy_compare.cpp create mode 100644 03_week/tasks/easy_compare/test.cpp create mode 100644 03_week/tasks/enum_operators/CMakeLists.txt create mode 100644 03_week/tasks/enum_operators/README.md create mode 100644 03_week/tasks/enum_operators/enum_operators.cpp create mode 100644 03_week/tasks/enum_operators/test.cpp create mode 100644 03_week/tasks/filter/CMakeLists.txt create mode 100644 03_week/tasks/filter/README.md create mode 100644 03_week/tasks/filter/filter.cpp create mode 100644 03_week/tasks/filter/test.cpp create mode 100644 03_week/tasks/find_all/CMakeLists.txt create mode 100644 03_week/tasks/find_all/README.md create mode 100644 03_week/tasks/find_all/find_all.cpp create mode 100644 03_week/tasks/find_all/test.cpp create mode 100644 03_week/tasks/minmax/CMakeLists.txt create mode 100644 03_week/tasks/minmax/README.md create mode 100644 03_week/tasks/minmax/minmax.cpp create mode 100644 03_week/tasks/minmax/test.cpp create mode 100644 03_week/tasks/os_overload/CMakeLists.txt create mode 100644 03_week/tasks/os_overload/README.md create mode 100644 03_week/tasks/os_overload/os_overload.cpp create mode 100644 03_week/tasks/os_overload/test.cpp create mode 100644 03_week/tasks/range/CMakeLists.txt create mode 100644 03_week/tasks/range/README.md create mode 100644 03_week/tasks/range/range.cpp create mode 100644 03_week/tasks/range/test.cpp create mode 100644 03_week/tasks/unique/CMakeLists.txt create mode 100644 03_week/tasks/unique/README.md create mode 100644 03_week/tasks/unique/test.cpp create mode 100644 03_week/tasks/unique/unique.cpp diff --git a/01_week/01_basic_cpp.md b/01_week/01_basic_cpp.md index 12c07244..138bdffe 100644 --- a/01_week/01_basic_cpp.md +++ b/01_week/01_basic_cpp.md @@ -571,7 +571,7 @@ auto rs = R"(popular escape-sequences in "C++" '\n' '\t')"; // const char* 1. -> : `a::b` 2. -> : `a++`, `a--`, `(a)`, `{a}`, `a()`, `a[]`, `a.b`, `a->b` -3. <- : `++a`, `--a`, `+a`, `-a`, `!a`, `()a`, `*a`, `&a`, `sizeof`, +3. <- : `++a`, `--a`, `+a`, `-a`, `!a`, `~a` `()a`, `*a`, `&a`, `sizeof`, `new`, `delete` 4. -> : `a.*b`, `a->*b` 5. -> : `a * b`, `a / b`, `a % b` diff --git a/03_week/03_data_structures.md b/03_week/03_data_structures.md new file mode 100644 index 00000000..67aeea52 --- /dev/null +++ b/03_week/03_data_structures.md @@ -0,0 +1,916 @@ +# Лекция 3. Структуры данных. Перегрузка функций. Вектор + +1. [Структура `struct`](#struct) + - [Размер структуры](#struct_sizeof) + - [Создание объекта](#struct_var) + - [Инициализация полей значениями по умолчанию](#struct_default_value) + - [Доступ к полям структуры. Оператор `.`](#operator_dot) + - [Доступ к полям структуры. Оператор `->`](#operator_arrow) +1. [Объединение `union`](#union) + - [Использование неактивной переменной](#union_using_inactive) + - [Анонимные объединения](#union_anonymous) +1. [Пара `std::pair`](#std_pair) + - [Инициализация и доступ к полям](#std_pair_access) + - [Доступ к полям с помощью `std::get` (_C++11_)](#std_pair_get) + - [Создание с помощью `std::make_pair`](#std_make_pair) +1. [Кортеж `std::tuple` (_С++11_)](#std_tuple) + - [Инициализация](#std_tuple_init) + - [Доступ к полям с помощью `std::get`](#std_tuple_get) + - [Создание с помощью `std::make_tuple`](#std_make_tuple) +1. [Функция связывания `std::tie`](#std_tie) +1. [Структурное связывание (_structered bindings_) _C++17_](#structered_bindings) +1. [Перегрузка функций](#overloading_function) + - [Перегрузка операторов](#overloading_operator) +1. [Асимптотическая сложность](#big_o_notation) +1. [Последовательные контейнеры](#sequentual_container) +1. [Контейнер `std::vector`](#std_vector) + - [Инициализация `std::vector`](#std_vector_init) + - [Устройство `std::vector`](#std_vector_structure) + - [Обзор методов `std::vector`](#std_vector_overview) + - [Вместимость контейнера `std::vector`](#std_vector_capacity) + - [Добавление в конец `std::vector`](#std_vector_push_back) + - [Доступ к элементам `std::vector`](#std_vector_access) + - [Итераторы](#iterators) + - [Итераторы `std::vector`](#std_vector_iterators) + - [Итерирование `std::vector`](#std_vector_iterating) + - [Метод `resize()`](#std_vector_resize) + - [Метод `reserve()`](#std_vector_reserve) + - [Метод `pop_back()`](#std_vector_pop_back) + - [Метод `clear()`](#std_vector_clear) + - [Остальные методы `std::vector`](#std_vector_overview) + + +## Структура `struct` + +Структура представляет собой пользовательский тип данных, позволяющий +объединять несколько переменных разных типов под одним именем. + +Синтаксис определения: `struct { ... };` + +- `` - имя структуры, является именем нового пользовательского типа данных +- `...` - ноль и более переменных + +Синтаксис объявления: `struct ;` + +- может пригодиться, когда необходимо использовать структуру раньше, чем + она определена. + +Переменная, объявленная внутри структуры, называется **полем** структуры. + +Гарантируется, что поля структуры располагаются в памяти в порядке +объявления полей внутри структуры. + +### Размер структуры + +Размер структуры зависит от размера входящих в неё полей и выравнивания +(_alighnment_). + +```c++ +struct Point { int x; int y; }; +struct IID { int x; int y; double d; }; +struct IDI { int x; double d; int y;}; +struct IDIB { int x; double d; int y; bool b}; + +std::cout << sizeof(Point) << std::endl; // 8 +std::cout << sizeof(IID) << std::endl; // 16 +std::cout << sizeof(IDI) << std::endl; // 24 +std::cout << sizeof(IDIB) << std::endl; // 24 +``` + +### Создание объекта + +Имя структуры используется в качестве имени типа при создании объекта. + +Синтаксис: ` ;` + +Рекомендуется сразу инициализировать поля объекта, сделать это можно, +используя фигурные скобки `{}` и перечисляя значение полей в том порядке, +в каком они определены в структуре. Также, можно использовать `()` +непосредственно после имени объекта. + +```c++ +struct Product { + int count; + double price; +}; + +Product obj; +Product obj_empty = {}; +Product obj_init = {10, 300.0}; +Product obj_part = {10}; // partitial +Product obj_agr{10, 300.0}; // uniform +``` + +Имя типа структуры может совпадать с каким-либо объектом, тогда при объявлении +можно разрешить конфликт имен добавив `struct` перед именем типа структуры +(как правило, лучше **ИЗБЕЖАТЬ** совпадающих названий): + +Синтаксис: `struct ;` + +```c++ +struct Product { + int count; + double price; +}; + +std::string Product = "some_product_name"; +// Product p = {10, 300.0}; // compile error +struct Product p = {10, 300.0}; // OK +``` + +Можно объявить структуру сразу с созданием объектов данного типа, **НО** +лучше так **НЕ** делать, особенно в глобальной области видимости. + +Синтаксис: `struct { ... } , ...;` + +```c++ +struct Point { + int x; + int y; +} p1, p2; +``` + +### Инициализация полей значениями по умолчанию + +Начиная с _C++11_ можно инициализировать поля значениями по умолчанию +через `=` при определении структуры. Тогда при создании объекта данного +типа поля будут инициализированы значениями по умолчанию. + +```c++ +struct Product { + int count = 0; + double price = 100.0; +}; + +Product one; +Product two = {}; +Product three{}; +``` + +### Доступ к полям структуры. Оператор `.` + +Доступ к полям структуры через объект типа структуры осуществляется через +оператор `.` точка. После имени объекта ставится `.` и затем имя поля: + +```c++ +struct Product { + int count; + double price; +}; + +Product obj; +obj.count = 10; +obj.price = 300.0; +``` + +### Доступ к полям структуры. Оператор `->` + +Доступ к полям структуры через указатель на объект типа структуры +осуществляется через оператор `->` стрелочка. После указателя на объект +ставится `->` и затем имя поля: + +```c++ +struct Product { + int count; + double price; +}; + +Product obj; +Product* ptr = &obj; +ptr->count = 10; +ptr->price = 300.0; +``` + +## Объединение `union` + +Объединение представляет собой пользовательский тип данных, который позволяет +хранить разные типы данных в одной области памяти. В один момент может храниться +только один тип данных. Размер объединения соответствует наибольшему по размеру +типу, входящего в объединение. + +Синтаксис: `union { ... };` + +```c++ +union Union { + char c; + int i; + double d; +}; +``` + +Все входящие в объединение типы переменных расположены по одному адресу. + +Доступ к переменным аналогичен структурам. + +### Использование неактивной переменной + +Активная переменная определяется последним присваиванием, при этом +время жизни предыдущей активной переменной заканчивается. Использование +неактивной переменной это **UB**. Однако, современные компиляторы, как +правило, представляют расширение языка и позволяют читать неактивные +переменные. Таким образом, можно получить доступ к отдельным байтам. + +```c++ +union Color { + uint32_t value; + struct { + uint8_t a + uint8_t b; + uint8_t g; + uint8_t r; + } components; +}; + +Color c; +c.value = 0x00FF9955; + +std::cout << "Red: " << c.components.r << std::endl; // 0 +std::cout << "Green: " << c.components.g << std::endl; // +std::cout << "Blue: " << c.components.b << std::endl; // 255 +std::cout << "Alpha: " << c.components.a << std::endl; // 0 +``` +- но это по-прежнему **UB** и платформо-зависимый код, на _little-endian_ + и _big-endian_ различный вывод. + +Аналогично можно работать отдельно с битами: + +```c++ +union HardwareRegister { + uint32_t raw; + struct { + uint32_t enable : 1; + uint32_t mode : 3; + uint32_t clock_divider : 4; + uint32_t reserved : 24; + } bits; // 1 + 3 + 4 + 24 = 32 +}; + +HardwareRegister reg; +reg.raw = 0; +reg.bits.enable = 1; +reg.bits.mode = 5; +reg.bits.clock_divider = 8; +``` + +### Анонимные объединения + +Можно создавать анонимные объединения, тогда все внутренние имена переменных +попадают во внешнюю область видимости объединения и не должно быть +конфликта имен. + +```c++ +struct Variant { + enum Type { INT, FLOAT, STRING } type; + + union { + int intValue; + float floatValue; + char stringValue[50]; + }; +}; +``` + +## Пара `std::pair` + +Пара `std::pair` - это шаблонная структура, позволяющая хранить переменные +двух типов в полях `first` и `second`. + +Заголовочный файл: `` + +Объявление: `std::pair ;` +- `T1` - тип первой переменной +- `T2` - тип второй переменной + +Методы: +- `swap` - для обмена значений с другой парой + +Доступны операторы сравнения, сравнение производится лексикографически. + +Пара используется в стандартных ассоциативных контейнерах, при возврате +ключа и значения контейнера. А также, может быть использована при возврате +двух значений из функции. Как правило, это менее информативно, чем структура +с понятными именами полей. + +### Инициализация и доступ к полям + +Доступ к соответствующим переменным в паре, осуществляется через имена полей +`first` и `second`. + +Инициализировать пару: + +```c++ +std::pair p; // uninitialized +p.first = 'c'; +p.second = static_cast(p.first); + +std::pair p1 = {true, "Book"}; +std::pair p2(10, 3.14); // ctor +std::pair p3{true, 2.73}; // uniform C++11 +``` + +### Доступ к полям с помощью `std::get` (_C++11_) + +В заголовочном файле `` есть шаблонная функция `std::get`, которая +на вход принимает пару и возвращает ссылку на поле пары. + +Может работать по индексу: +- `0` - `first` +- `1` - `second` +- другие значения приведут к ошибке компиляции + +Может работать по типу переменной, в случае одинаковых типов будет ошибка +компиляции. + +```c++ +std::pair p = {true, 10}; +std::cout << '(' << std::get<0>(p) << ", " << std::get<1>(p) << ')' << std::endl; +std::cout << '(' << std::get(p) << ", " << std::get(p) << ')' << std::endl; +std::get(p) = false; +std::get<1>(p) = 0; +``` + +### Создание с помощью `std::make_pair` + +В заголовочном файле `` есть шаблонная функция `std::make_pair` +принимающая два аргумента и возвращающая пару из двух аргументов. +Удобство заключается в возможности использования вывода типа переменной, +если написать ключевое слово `auto`. + +```c++ +auto p1 = std::make_pair(15, 'c'); // std::pair +auto p2 = std::make_pair(true, 3.14); // std::pair + +int value = 3; +int array[] = {1, 2, 3}; +auto p3 = std::make_pair(std::ref(value), array); // std::pair +``` + +## Кортеж `std::tuple` (_С++11_) + +Кортеж `std::tuple` - шаблонный класс, позволяющий хранить произвольное число +аргументов различных типов. + +Заголовочный файл: `` + +Объявление: `std::tuple ;` +- `T...` - произвольное количество различных типов + +Методы: +- `swap` - для обмена значений с другим аналогичным по типам кортежем + +Для кортежа определены операторы сравнения. + +### Инициализация + +Инициализировать кортеж можно привычными способами: + +```c++ +std::tuple t; // uninitialized +std::tuple t1 = {true, "Book", 10}; // copy +std::tuple t2(10, 3.14, -1); // ctor +std::tuple p3{true, 2.73, 0, '0'}; // uniform C++11 +``` + +### Доступ к полям с помощью `std::get` + +Поскольку кортеж не имеет прямого доступа к полям, то получить значения +полей кортежа или изменить их можно с помощью шаблонной функции `std::get`. + +Функция принимает кортеж, а в качестве параметров шаблона внутри `<>` +указывается либо порядковый номер начиная с `0` и меньше количества переменных, +либо тип данных, если он уникален для кортежа + +```c++ +std::tuple tpl(10., 'a', 10); +std::get<0>(tpl) += 1; +std::get<1>(tpl) += 1; +std::get<2>(tpl) += 1; +// tpl = {11, 'b', 11}; +std::get(tpl) += 1; +std::get(tpl) += 1; +std::get(tpl) += 1; +// tpl = {12, 'c', 12}; +``` + +### Создание с помощью `std::make_tuple` + +В заголовочном файле `` есть шаблонная функция `std::make_tuple` +принимающая произвольное число аргументов различных типов и возвращающая +кортеж из переданных аргументов. + +Удобство заключается в возможности использования вывода типа переменной, +если написать ключевое слово `auto`. + +```c++ +auto t1 = std::make_tuple(15, 'c', 3.14); // std::tuple + +struct Product { int count; double price; }; +auto t2 = std::make_pair(true, Product{10, 3.14}); // std::tuple +std::cout << std::get<1>(t2).count << " " << std::get<1>(t2).price; +``` + +## Функция связывания `std::tie` + +Шаблонная функция позволяющая создать кортеж ссылок на переданные +аргументы или ссылку на специальный объект `std::ignore` + +- применяется для лексикографического сравнения структур: + +```c++ +struct Pair { int value; std::string name; } p1, p2; +std::tie(p1.value, p1.name) < std::tie(p2.value, p2.name); +``` + +- для распаковки кортежа или пары (так как пара конвертируется в кортеж): + +```c++ +int i; +double d; +std::tie(i, std::ignore, d) = std::tuple(1, "Test", 2.0); +``` + +## Структурное связывание (_structered bindings_) _C++17_ + +_Structered bindings_ - синтаксическая конструкция, введенная в _C++17_, +которая позволяет распаковывать составляющие составных типов данных +в отдельные переменные. + +Синтаксис: ` auto [...] = ;` + +Работает с массивами, структурами, парами, кортежами. + +```c++ +int array[] = {1, 2}; + +auto& [first, second] = array; +first = 3; +second = 4; // array = {3, 4}; +``` + +```c++ +struct Product { int count; double price; }; + +Product prod{10, 100.0}; +auto [count, price] = prod; +auto& [ref_count, ref_price] = prod; +const auto& [cref_count, cref_price] = prod; +``` + +```c++ +std::pair p(true, 10); +const auto& [b, i] = p; +``` + +```c++ +std::tuple tpl(10., 'a', 10); +auto [f, c, i] = tpl; +``` + +## Перегрузка функций + +Перегрузка функций позволяет иметь функции с одинаковыми именами для различных +входных аргументов. + +Перегрузить функцию можно только по аргументам, изменение возвращаемого типа, +без изменения аргументов **НЕ** является перегрузкой. + +CV-квалификаторы изменяют тип, поэтому добавление константности к аргументам +является перегрузкой. + +```c++ +void PrintValues(const int* begin, const int* end) {} +void PrintValues(int* begin, int* end) {} +void PrintValues(const int* array, size_t size) {} +void PrintValues(const Point& point) {} +// Point PrintValues(const Point& point) {} // compile error +``` + +Функция, имеющая значения по умолчанию, имеет перегрузки функции, без +аргументов по умолчанию, причем количество перегрузок соответствует +количеству аргументов по умолчанию. + +```c++ +void PrintValues(int x, float f = 0.0, char c = 'a') { + std::cout << "x = " << x << ", f = " << f << ", c = " << c << std::endl; +} + +PrintValues(x, f, c); +PrintValues(x, f); +PrintValues(x); +``` + +### Перегрузка операторов + +Поскольку операторы являются функциями, то операторы можно перегрузить. +Что позволяет использовать операторы для своих типов данных. + +Синтаксис: ` operator(...);` + +- `` - символьное обозначение оператора (`+`, `<<`, `==`, ...) +- `...` - один или два аргумента (для унарного и бинарного операторов) +- `` - тип возвращаемого значения + +**НЕЛЬЗЯ** перегрузить операторы: `::`, `?:`, `.`, `.*`, `typeid`, `sizeof`, `alignof` + +Перегрузка оператора `<<` для вывода в поток: + +```c++ +struct Pair { + int value; + std::string name; +}; + +std::ostream& operator<<(std::ostream& os, const Pair& pair) { + os << '(' << value << ", " << name << ')'; + return os; +} +``` + +Перегрузка операторов сравнения: + +```c++ +bool operator==(const Pair& lhs, const Pair& rhs) { + return lhs.value == rhs.value && lhs.name == rhs.name; +} + +bool operator<(const Pair& lhs, const Pair& rhs) { + if (lhs.value == rhs.value) { + return lhs.name < rhs.name; + } + return lhs.value < rhs.value; +// return (lhs.value == rhs.value) ? lhs.name < rhs.name : lhs.value < rhs.value; +// return std::tie(lhs.value, lhs.name) < std::tie(rhs.value, rhs.name); +} + +bool operator!=(const Pair& lhs, const Pair& rhs) { + return !(lhs == rhs); +} + +bool operator>(const Pair& lhs, const Pair& rhs) { + return !(lhs < rhs || lhs == rhs); +} + +bool operator>=(const Pair& lhs, const Pair& rhs) { + return !(lhs < rhs); +} + +bool operator<=(const Pair& lhs, const Pair& rhs) { + return lhs < rhs || lhs == rhs; +} +``` + +## Асимптотическая сложность + +Асимптотическая сложность — это математический способ оценки, как время +выполнения или объём потребляемой памяти алгоритма растут с увеличением +размера входных данных (`n`), когда `n` стремится к бесконечности. + +При оценке игнорируются константы и младшие члены в формуле, что позволяет +сосредоточиться на основном факторе масштабирования. Оценка позволяет +сравнивать эффективность алгоритмов независимо от аппаратного обеспечения. + +Обычно используется O-нотация («О большое») для определения верхней границы +(наихудшего случая). + +Распространенная асимптотическая сложность: + +1. $O(1)$ — Константная сложность + - Время выполнения не зависит от размера входных данных. + +1. $O(log(n))$ — Логарифмическая сложность + - Медленный рост. Удвоение `n` увеличивает время работы лишь на константу. + +1. $O(n)$ — Линейная сложность + - Время растет прямо пропорционально n. + +1. $O(n \cdot log(n))$ — Линейно-логарифмическая сложность + - Золотой стандарт для эффективных алгоритмов сортировки общего назначения. + +1. $O(n^a)$ — Степенная сложность + - Время растет пропорционально степени размера данных. При больших `n` + становится очень медленно. + +1. $O(2^n)$ — Экспоненциальная сложность + - Чрезвычайно быстрый рост. Практически неприменимо для задач с `n` > 30-40. + +1. $O(n!)$ — Факториальная сложность + - Рост быстрее экспоненциальной. Характерна для задач полного перебора всех перестановок. + +## Последовательные контейнеры v + +Стандартная библиотека _STL_ содержит множество шаблонных классов, которые +представляют различные структуры данных. Как правило, их называют контейнерами. +Контейнеры способны хранить произвольный тип данных. Контейнеры представляют +собой коллекцию элементов определенного типа. Контейнеры предоставляют +удобный способ взаимодействовать с элементами + +В качестве параметров шаблона внутри треугольных скобок `<>` обычно необходимо +указать тип данных, который использует контейнер. + +Для последовательных контейнеров определен оператор доступа по индексу `[]` + +## Контейнер `std::vector` + +Контейнер `std::vector` предназначен для хранения массива данных определенного типа +непрерывно в динамической памяти. + +Контейнер обеспечивает быстрое добавления элементов в конец и увеличение размера +блока памяти под элементы при необходимости. + +Для гарантии непрерывности памяти, при добавлении элемента в заполненный контейнер, +происходит **реалокация** всех элементов контейнера. + +Заголовочный файл: `` + +Синтаксис: `std::vector ;` +- `T` - произвольный тип данных +- `` - имя переменной + +### Инициализация `std::vector` + +Доступны множество способов инициализации вектора: + +```c++ +std::vector v1; // empty +std::vector v2(v1); // copy ctor from other vector +std::vector v3 = v1; // copy ctor from other vector +// ctor +std::vector v4(5); // 5 elemets with zero value +std::vector v5(5, 2); // 5 elements equal 2 +// initializer list +std::vector v6{1, 2, 4, 5}; // with elements 1, 2, 4, 5 +std::vector v7 = {1, 2, 3, 5}; // with elements 1, 2, 3, 5 +// iterators +std::vector v8(v7.begin(), v7.end()); // same as v7 +``` + +### Устройство `std::vector` + +Контейнер должен иметь **указатель на данные** (адрес начала памяти в куче, +выделенной под хранение элементов вектора), **вместимость выделенной памяти** +(сколько элементов данного типа можно положить), **текущее количество элементов** +(сколько элементов данного типа уже положено в контейнер). + +Условно можно представить себе, что хранится 3 поля: указатель на данные, +размер данных _size_, размер выделенной памяти _capacity_ + +Контейнер имеет размер 24 байта. + +Фактически, стандартный контейнер устроен несколько иначе, внутри хранится +3 указателя: на начало данных, за конец выделенной памяти, за конец элементов + +Элементы контейнера располагаются не на **стеке**, а в области памяти, называемой +куча. + +### Обзор методов `std::vector` + +Контейнер имеет встроенные функции для работы с контейнером, такие функции +называются **методы**. + +Доступ к элементам: +- `at(size_t pos)` - метод, принимающий индекс элемента и возвращающий ссылку +- `[size_t pos]` - оператор `[]`, принимающий индекс и возвращающий ссылку +- `font()` - метод, возвращающий ссылку на первый элемент +- `back()` - метод, возвращающий ссылку на последний элемент +- `data()` - метод, возвращающий указатель на начало данных + +Вместимость контейнера: +- `empty()` - возвращает `true` для пустого контейнера +- `size()` - возвращает количество элементов +- `capacity()` - возвращает вместимость контейнера +- `reserve(size_t count)` - выделяет память под `count` элементов +- `shrink_to_fit()` - уменьшает вместимость вектора в соответствии с `size()` + +Модифицирующие методы: +- `assign()` - заменить текущее содержимое на новое +- `clear()` - очистить содержимое (без фактического очищения) +- `push_back()` - добавить элемент в конец контейнера +- `pop_back()` - удалить последний элемент из контейнера +- `insert()` - добавить элементы в определенную позицию +- `erase()` - удалить элементы с определенной позиции +- `resize()` - изменить количество элементов контейнера +- `swap()` - обменять содержимое контейнеров. + +### Вместимость контейнера `std::vector` + +По умолчанию, неинициализированный, пустой контейнер **НЕ** выделяет память +под элементы. + +Инициализированный контейнер выделяет память ровно под количество элементов. + +Методы, проверяющие вместимость и размер: + +- `empty()` — возвращает true, если контейнер пуст +- `size()` — возвращает текущий размер, количество элементов в контейнере +- `capacity()` — возвращает вместимость контейнера, под какое количество + элементов выделена память + +### Добавление в конец `std::vector` + +Контейнер оптимизирован под добавление элементов в конец. + +Метод, добавляющий элемент в конец: + +- `push_back()` - добавить элемент, принимаемый в аргументах, в конец контейнера + +Заполнение контейнера в цикле (не оптимально). Несколько раз в ходе заполнения +контейнера произойдет реалокация, то есть выделится новый блок памяти в куче, +достаточный для элементов контейнера, и все элементы будут скопированы по +новому адресу. + +Как правило, при добавлении элемента в полностью заполненный контейнер, +вместимость контейнера будет **увеличиваться в 2 раза** + +Сложность: **амортизированная O(1)** + +```c++ +std::vector v; +size_t capacity = v.capacity(); + +std::cout << v.data() << std::endl; // int* (address) +std::cout << v.size() << ' ' << v.capacity() << std::endl; +for (int i = 0; i < 100; ++i) { + v.push_back(i); + if (capacity < v.capacity()) { + capacity = v.capacity(); + + std::cout << v.data() << std::endl; // int* (address) + std::cout << v.size() << ' ' << v.capacity() << std::endl; + } +} +``` + +### Доступ к элементам `std::vector` + +Доступ следует осуществлять только к валидным элементам. + +Доступ к элементам осуществляется с помощью оператора `[]`, принимающего +индекс, и с помощью методов: + +- `[size_t pos]` — принимает индекс и возвращает ссылку на элемент +- `at(size_t pos)` — принимает индекс и возвращает ссылку на элемент, если + переданный индекс (позиция) невалиден, то выбрасывается исключение + `std::out_of_range` +- `fornt()` — возвращает ссылку на первый элемент +- `back()` — возвращает ссылку на последний элемент +- `data()` — возвращает сырой указатель на начало данных + +Доступ к элементам вне диапазона контейнера, получение ссылок на элементы +для пустого контейнера (`v.empty()` возвращает `true`) это **UB** + +### Итераторы + +Итераторы - фундаментальная концепция языка C++, выступающая в качестве +обобщения указателей. Итераторы обеспечивают удобный **способ доступа** и +**перемещения** по элементам различных контейнеров. + +На данном этапе будем относиться к итераторам, как к удобной обертке над +указателем. + +Итераторы имитируют поведение **указателей**: разыменование, арифметику, сравнение + +Существуют разные категории итераторов, поэтому в зависимости от контейнера +поддерживаются не все операции с итераторами + +Каждый контейнер имеет **свой тип итератора**. + +Например, для вектора целочисленных значений тип итератора: +`std::vector::iterator` + +Константная версия итератора имеет тип: +`std::vector::const_iterator` + +Используются для реализации **range-based for** и в алгоритмах стандартной +библиотеки + +Как правило, можно получить итератор на начало (первый элемент) **begin** +и на конец **end** (за последний элемент). А также, их константные версии +**cbegin** и **cend** + +### Итераторы `std::vector` + +Итератор можно получить воспользовавшись методами контейнера: + +- `begin()` — возвращает итератор на начало +- `end()` — возвращает итератор на конец +- `rbegin()` — возвращает обратный итератор на начало +- `rend()` — возвращает обратный итератор на конец + +Также присутствуют методы с приставкой c возвращающие их константные версии. + +Чтобы не писать длинный тип используется ключевое слово **auto** + +### Итерирование `std::vector` + +Контейнер поддерживает различные способы итерирования, **range-based for**: + +```c++ +std::vector v = {1, 2, 3, 5}; +for (auto vi : v) { + std::cout << vi << std::endl; +} +``` + +Итерирование по индексу (порядковыому номеру): + +```c++ +std::vector v = {1, 2, 3, 5}; +for (size_t i = 0; i < v.size(); ++i) { + std::cout << v[i] << std::endl; +} +``` + +Использование прямых итераторов: + +```c++ +std::vector v = {1, 2, 3, 5}; +for (auto it = v.begin(); it != v.end(); ++it) { + std::cout << *it << std::endl; +} +``` + +Использование обратных итераторов, для обхода контейнера в обратном порядке: + +```c++ +std::vector v = {1, 2, 3, 5}; +for (auto it = v.rbegin(); it != v.rend(); ++it) { + std::cout << *it << std::endl; +} +``` + +### Метод `resize()` + +Метод `resize()` изменяет размер контейнера, причем в случае увеличения создаются +значения по умолчанию, в случае уменьшения вместимость контейнера, как правило, +**НЕ** уменьшается + +- `resize(size_t count)` — принимает требуемое количество элементов +- `resize(size_t count, const T& value)` — принимает требуемое количество элементов + и значение элемента, которым необходимо заполнить контейнер в случае увеличения + размера + +Сложность: **O(n)** или **O(1)** при уменьшении. + +Тратятся ресурсы на заполнение **значениями по умолчанию** + +Изменяет _size_ контейнера, а также _capacity_ при необходимости **увеличения** + +### Метод `reserve()` + +Метод `reserve()` выделяет нужное количество памяти, не заполняя элементы значением +по умолчанию, при этом _size_ контейнера не изменяется, а _capacity_ может только +увеличиваться в соответствии c заданным значением + +- `reserve(size_t new_capacity)` — принимает новое значение вместимости контейнера + +Сложность: **O(n)** + +Если известна требуемая вместимость заранее, наиболее оптимальный способ создания: + +```c++ +std::vector v; +v.reserve(100); +for (size_t i = 0; i < 100; ++i) { + v.push_back(i); +} +``` + +### Метод `pop_back()` + +Метод, удаляющий последний элемент: + +- `pop_back()` — удаляет элемент из конца контейнера + +Как правило, просто уменьшает размер контейнера, или перемещает указатель на конец +элементов, **НЕ** вызывает реалокацию памяти + +Сложность: **O(1)** + +`pop_back()` от пустого контейнера (`v.empty()` возвращает `true`) это **UB** + +### Метод `clear()` + +Метод `clear()` очищает контейнер, _size_ = 0, но _capacity_ **НЕ** изменяется + +Как правило, просто уменьшает размер контейнера, перемещает указатель на конец +элементов на начало. **НЕ** освобождает память + +Сложность: **O(1)** как правило просто переносится указатель конца элементов на начало + +### Остальные методы `std::vector` + +Основные модифицирующие методы контейнера: + +- `shrink_to_fit()` — уменьшает _capacity_ в соответствии с текущим _size_, + реалокация, **O(n)** +- `insert()` — вставляет элемент или диапазон в произвольное место в контейнер, **O(n)**, + вставка в конец **O(1)**. Возвращает итератор на начало вставки. +- `erase()` — удаляет элемент или диапазон из произвольного места в контейнер, **O(n)**, + поскольку необходимо передвинуть все элементы контейнера, удалить из конца **O(1)**. + Возвращает итератор после последнего удаленного элемента. +- `swap()` — обменивает содержимое двух контейнеров, **O(1)** поскольку осуществляется + обмен указателей +- `assign()` — заменяет содержимое контейнера на указанное значение или на диапазон, + **O(n)** + +[и другие ...](https://en.cppreference.com/w/cpp/container/vector.html) \ No newline at end of file diff --git a/03_week/03_data_structures.pdf b/03_week/03_data_structures.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7b5b63599b794dc4d75bd99a57e31a5d3ccab31e GIT binary patch literal 308213 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ⅇ1;ya>5bN2aNn=(&Yn--0u)`48-9czeW#U_ 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

4P#DD!GJ<~Myy1>?^7Cl< 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 literal 0 HcmV?d00001 diff --git a/03_week/CMakeLists.txt b/03_week/CMakeLists.txt new file mode 100644 index 00000000..e5df5bac --- /dev/null +++ b/03_week/CMakeLists.txt @@ -0,0 +1,17 @@ +cmake_minimum_required(VERSION 3.14) # Минимальная требуемая версия CMake +project(03_week) # Необходим для инициализации cmake + +set(CMAKE_CXX_STANDARD 20) # Версия стандарта C++ +set(CMAKE_CXX_STANDARD_REQUIRED ON) # Гарантирует использование указанной версии стандарта + +set(EXAMPLES_DIR examples) # Определим переменную с именем директории +set(TASKS_DIR tasks) + +add_subdirectory(tasks) + +# Создать исполняемый файл для каждого примера +if (BUILD_EXAMPLES_03_WEEK) + add_example(struct_examples ${EXAMPLES_DIR}/struct_examples.cpp) + add_example(union_examples ${EXAMPLES_DIR}/union_examples.cpp) + add_example(vector_examples ${EXAMPLES_DIR}/vector_examples.cpp) +endif() \ No newline at end of file diff --git a/03_week/examples/struct_examples.cpp b/03_week/examples/struct_examples.cpp new file mode 100644 index 00000000..11484025 --- /dev/null +++ b/03_week/examples/struct_examples.cpp @@ -0,0 +1,172 @@ +#include +#include + +struct BoolBool { bool x; bool y; }; +struct Point { int x; int y; }; +struct IID { int x; int y; double d; }; +struct IDI { int x; double d; int y;}; +struct IDIB { int x; double d; int y; bool b;}; +struct IIDB { int x; int y; double d; bool b;}; +struct IISDB { int x; int y; std::string s; double d; bool b;}; + + +void struct_sizeof() { + std::cout << __func__ << ':' << std::endl; + std::cout << "sizeof(BoolBool): " << sizeof(BoolBool) << std::endl; // 2 + std::cout << "sizeof(Point): " << sizeof(Point) << std::endl; // 8 + std::cout << "sizeof(IID): " << sizeof(IID) << std::endl; // 16 + std::cout << "sizeof(IDI): " << sizeof(IDI) << std::endl; // 24 + std::cout << "sizeof(IDIB): " << sizeof(IDIB) << std::endl; // 24 + std::cout << "sizeof(IIDB): " << sizeof(IIDB) << std::endl; // 24 + std::cout << "sizeof(IISDB): " << sizeof(IISDB) << std::endl; // 56 + std::cout << std::endl; +} + +void struct_alignof() { + std::cout << __func__ << ':' << std::endl; + std::cout << "alignof(BoolBool): " << alignof(BoolBool) << std::endl; // 1 + std::cout << "alignof(Point): " << alignof(Point) << std::endl; // 4 + std::cout << "alignof(IID): " << alignof(IID) << std::endl; // 8 + std::cout << "alignof(IDI): " << alignof(IDI) << std::endl; // 8 + std::cout << "alignof(IDIB): " << alignof(IDIB) << std::endl; // 8 + std::cout << "alignof(IIDB): " << alignof(IIDB) << std::endl; // 8 + std::cout << "alignof(IISDB): " << alignof(IISDB) << std::endl; // 8 + std::cout << std::endl; +} + +void struct_address() { + std::cout << __func__ << ':' << std::endl; + { + BoolBool obj; + std::cout << "struct BoolBool: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.x: " << &(obj.x) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.x) << std::endl; + std::cout << "&obj.y: " << &(obj.y) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.y) << std::endl; + } + { + Point obj; + std::cout << "struct Point: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.x: " << &(obj.x) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.x) << std::endl; + std::cout << "&obj.y: " << &(obj.y) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.y) << std::endl; + } + { + IID obj; + std::cout << "struct IID: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.x: " << &(obj.x) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.x) << std::endl; + std::cout << "&obj.y: " << &(obj.y) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.y) << std::endl; + std::cout << "&obj.d: " << &(obj.d) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.d) << std::endl; + + } + { + IDI obj; + std::cout << "struct IDI: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.x: " << &(obj.x) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.x) << std::endl; + std::cout << "&obj.d: " << &(obj.d) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.d) << std::endl; + std::cout << "&obj.y: " << &(obj.y) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.y) << std::endl; + } + { + IDIB obj; + std::cout << "struct IDIB: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.x: " << &(obj.x) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.x) << std::endl; + std::cout << "&obj.d: " << &(obj.d) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.d) << std::endl; + std::cout << "&obj.y: " << &(obj.y) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.y) << std::endl; + std::cout << "&obj.b: " << &(obj.b) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.b) << std::endl; + } + { + IIDB obj; + std::cout << "struct IIDB: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.x: " << &(obj.x) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.x) << std::endl; + std::cout << "&obj.y: " << &(obj.y) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.y) << std::endl; + std::cout << "&obj.d: " << &(obj.d) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.d) << std::endl; + std::cout << "&obj.b: " << &(obj.b) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.b) << std::endl; + } + { + IISDB obj; + std::cout << "struct IISDB: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.x: " << &(obj.x) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.x) << std::endl; + std::cout << "&obj.y: " << &(obj.y) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.y) << std::endl; + std::cout << "&obj.s: " << &(obj.s) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.s) << std::endl; + std::cout << "&obj.d: " << &(obj.d) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.d) << std::endl; + std::cout << "&obj.b: " << &(obj.b) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.b) << std::endl; + } + std::cout << std::endl; +} + +void struct_creation() { + std::cout << __func__ << ':' << std::endl; + { + Point p; + Point p2 = {1, 2}; + Point p3{2, 3}; + Point p4 = {}; + Point p5 = {1}; + } + { + std::string Point = "some_product_name"; + // Point p = {10, 300}; // compile error + struct Point p = {10, 300}; // OK + } + std::cout << std::endl; +} + +struct Inner { + bool b = false; +}; + +struct A { + int a = 0; + Inner inner = {}; +}; + +void struct_inner() { + std::cout << __func__ << ':' << std::endl; + std::cout << "sizeof(Inner): " << sizeof(Inner) << std::endl; // 1 + std::cout << "sizeof(A): " << sizeof(A) << std::endl; // 8 + std::cout << "alignof(Inner): " << alignof(Inner) << std::endl; // 1 + std::cout << "alignof(A): " << alignof(A) << std::endl; // 4 + A obj; + std::cout << "obj.inner.b = " << obj.inner.b << std::endl; + obj.inner.b = true; + std::cout << "obj.inner.b = true" << std::endl; + std::cout << "obj.inner.b = " << obj.inner.b << std::endl; + std::cout << std::endl; +} + +int main() { + struct_sizeof(); + struct_alignof(); + struct_address(); + struct_creation(); + struct_inner(); +} + + diff --git a/03_week/examples/union_examples.cpp b/03_week/examples/union_examples.cpp new file mode 100644 index 00000000..af332dca --- /dev/null +++ b/03_week/examples/union_examples.cpp @@ -0,0 +1,117 @@ +#include +#include +#include + +union ID { + int i; + double d; +}; + +union IBC { + int i; + bool b; + char c; +}; + +union IDBC { + int i; + double d; + bool b; + char c; +}; + +void union_sizeof() { + std::cout << __func__ << ':' << std::endl; + std::cout << "sizeof(ID): " << sizeof(ID) << std::endl; // 8 + std::cout << "sizeof(IBC): " << sizeof(IBC) << std::endl; // 4 + std::cout << "sizeof(IDBC): " << sizeof(IDBC) << std::endl; // 8 + std::cout << std::endl; +} + +void union_alignof() { + std::cout << __func__ << ':' << std::endl; + std::cout << "alignof(ID): " << alignof(ID) << std::endl; // 8 + std::cout << "alignof(IBC): " << alignof(IBC) << std::endl; // 4 + std::cout << "alignof(IDBC): " << alignof(IDBC) << std::endl; // 8 + std::cout << std::endl; +} + +void union_address() { + std::cout << __func__ << ':' << std::endl; + { + ID obj; + obj.i = 42; + std::cout << "union ID: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.i: " << &(obj.i) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.i) << std::endl; + obj.d = 3.14; + std::cout << "&obj.d: " << &(obj.d) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.d) << std::endl; + } + { + IBC obj; + obj.i = 42; + std::cout << "union IBC: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.i: " << &(obj.i) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.i) << std::endl; + obj.b = true; + std::cout << "&obj.b: " << &(obj.b) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&(obj.b)) << std::endl; + obj.c = 'c'; + std::cout << "&obj.c: " << static_cast(&(obj.c)) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&(obj.c)) << std::endl; + } + { + IDBC obj; + obj.i = 42; + std::cout << "union IDBC: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.i: " << &(obj.i) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.i) << std::endl; + obj.d = 3.14; + std::cout << "&obj.d: " << &(obj.d) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.d) << std::endl; + obj.b = true; + std::cout << "&obj.b: " << &(obj.b) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.b) << std::endl; + obj.c = 'c'; + std::cout << "&obj.c: " << reinterpret_cast(std::addressof(obj.c)) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.c) << std::endl; + } + std::cout << std::endl; +} + +union Color { + uint32_t value; + struct { + uint8_t a; + uint8_t b; + uint8_t g; + uint8_t r; + } components; +}; + +void union_read_inactive() { + std::cout << __func__ << ':' << std::endl; + Color c; + c.value = 0x00FF9955; + + std::cout << "Red: " << +c.components.r << std::endl; // 0 + std::cout << "Green: " << +c.components.g << std::endl; // 255 + std::cout << "Blue: " << +c.components.b << std::endl; // 153 + std::cout << "Alpha: " << +c.components.a << std::endl; // 85 + std::cout << std::endl; +} + + + +int main() { + union_sizeof(); + union_alignof(); + union_address(); + union_read_inactive(); +} + + diff --git a/03_week/examples/vector_examples.cpp b/03_week/examples/vector_examples.cpp new file mode 100644 index 00000000..42afa72f --- /dev/null +++ b/03_week/examples/vector_examples.cpp @@ -0,0 +1,89 @@ +#include +#include + +void vector_init() { + std::cout << __func__ << ':' << std::endl; + std::vector v1; // empty + std::vector v2(v1); // copy ctor from other vector + std::vector v3 = v1; // copy ctor from other vector + // ctor + std::vector v4(5); // 5 elemets with zero value + std::vector v5(5, 2); // 5 elements equal 2 + // initializer list + std::vector v6{1, 2, 4, 5}; // with elements 1, 2, 4, 5 + std::vector v7 = {1, 2, 3, 5}; // with elements 1, 2, 3, 5 + // iterators + std::vector v8(v7.begin(), v7.end()); // same as v7 + std::cout << std::endl; +} + +void vector_reallocation() { + std::cout << __func__ << ':' << std::endl; + std::vector v; + size_t capacity = v.capacity(); + + std::cout << v.data() << std::endl; // int* (address) + std::cout << v.size() << ' ' << v.capacity() << std::endl; + for (int i = 0; i < 1000; ++i) { + v.push_back(i); + if (capacity < v.capacity()) { + capacity = v.capacity(); + + std::cout << v.data() << std::endl; // int* (address) + std::cout << v.size() << ' ' << v.capacity() << std::endl; + } + } + std::cout << std::endl; +} + +void vector_iterating() { + std::cout << __func__ << ':' << std::endl; + + std::vector v = {1, 2, 3, 5}; + std::cout << "range_based for:" << std::endl; + for (auto vi : v) { + std::cout << vi << " "; + } + std::cout << std::endl; + + std::cout << "using [idx]:" << std::endl; + for (size_t i = 0; i < v.size(); ++i) { + std::cout << v[i] << " "; + } + std::cout << std::endl; + + std::cout << "forward iterating:" << std::endl; + for (auto it = v.begin(); it != v.end(); ++it) { + std::cout << *it << " "; + } + std::cout << std::endl; + + std::cout << "reverse iterating:" << std::endl; + for (auto it = v.rbegin(); it != v.rend(); ++it) { + std::cout << *it << " "; + } + std::cout << std::endl; + + std::cout << std::endl; +} + +void vector_reserve() { + std::cout << __func__ << ':' << std::endl; + std::vector v; + v.reserve(100); + for (size_t i = 0; i < 100; ++i) { + v.push_back(i); + } + std::cout << std::endl; + + std::cout << std::endl; +} + +int main() { + vector_init(); + vector_reallocation(); + vector_iterating(); + vector_reserve(); +} + + diff --git a/03_week/tasks/CMakeLists.txt b/03_week/tasks/CMakeLists.txt new file mode 100644 index 00000000..e240c8ea --- /dev/null +++ b/03_week/tasks/CMakeLists.txt @@ -0,0 +1,9 @@ +add_subdirectory(data_stats) +add_subdirectory(unique) +add_subdirectory(range) +add_subdirectory(minmax) +add_subdirectory(find_all) +add_subdirectory(os_overload) +add_subdirectory(easy_compare) +add_subdirectory(filter) +add_subdirectory(enum_operators) \ No newline at end of file diff --git a/03_week/tasks/data_stats/CMakeLists.txt b/03_week/tasks/data_stats/CMakeLists.txt new file mode 100644 index 00000000..08a1ec38 --- /dev/null +++ b/03_week/tasks/data_stats/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_data_stats test.cpp) \ No newline at end of file diff --git a/03_week/tasks/data_stats/README.md b/03_week/tasks/data_stats/README.md new file mode 100644 index 00000000..d2580e59 --- /dev/null +++ b/03_week/tasks/data_stats/README.md @@ -0,0 +1,13 @@ +[average]: https://en.wikipedia.org/wiki/Average +[standard deviation]: https://en.wikipedia.org/wiki/Standard_deviation + +# Статистика данных + +Необходимо реализовать функцию `CalculateDataStats`, которая принимает на вход +контейнер `std::vector` и возвращает структуру `DataStats`, содержащую +среднее значение ([average]) и стандартное отклонение ([standard deviation]). + +## Примечание + +- Запрещено использовать алгоритмы из `` +- Рекомендуется решить задачу в один проход по контейнеру \ No newline at end of file diff --git a/03_week/tasks/data_stats/data_stats.cpp b/03_week/tasks/data_stats/data_stats.cpp new file mode 100644 index 00000000..b941c211 --- /dev/null +++ b/03_week/tasks/data_stats/data_stats.cpp @@ -0,0 +1,11 @@ +#include + + +struct DataStats { + double avg = 0.0; + double sd = 0.0; +}; + +/* return_type */ CalculateDataStats(/* args */) { + throw std::runtime_error{"Not implemented"}; +} diff --git a/03_week/tasks/data_stats/test.cpp b/03_week/tasks/data_stats/test.cpp new file mode 100644 index 00000000..7061f5f4 --- /dev/null +++ b/03_week/tasks/data_stats/test.cpp @@ -0,0 +1,80 @@ +#include + +#include +#include + +#include "data_stats.cpp" + +constexpr double EPSILON = 1e-6; + +TEST(DataStatsTest, EmptyVector) { + std::vector empty_vec; + DataStats stats = CalculateDataStats(empty_vec); + + EXPECT_DOUBLE_EQ(stats.avg, 0.0); + EXPECT_DOUBLE_EQ(stats.sd, 0.0); +} + +TEST(DataStatsTest, SingleElement) { + std::vector vec = {42}; + DataStats stats = CalculateDataStats(vec); + + EXPECT_DOUBLE_EQ(stats.avg, 42.0); + EXPECT_DOUBLE_EQ(stats.sd, 0.0); +} + +TEST(DataStatsTest, TwoElements) { + std::vector vec = {10, 20}; + DataStats stats = CalculateDataStats(vec); + + EXPECT_DOUBLE_EQ(stats.avg, 15.0); + EXPECT_DOUBLE_EQ(stats.sd, 5.0); +} + +TEST(DataStatsTest, AllSameElements) { + std::vector vec = {7, 7, 7, 7, 7}; + DataStats stats = CalculateDataStats(vec); + + EXPECT_DOUBLE_EQ(stats.avg, 7.0); + EXPECT_DOUBLE_EQ(stats.sd, 0.0); +} + +TEST(DataStatsTest, PositiveNumbers) { + std::vector vec = {1, 2, 3, 4, 5}; + DataStats stats = CalculateDataStats(vec); + + EXPECT_DOUBLE_EQ(stats.avg, 3.0); + EXPECT_NEAR(stats.sd, std::sqrt(2.0), EPSILON); +} + +TEST(DataStatsTest, NegativeNumbers) { + std::vector vec = {-5, -4, -3, -2, -1}; + DataStats stats = CalculateDataStats(vec); + + EXPECT_DOUBLE_EQ(stats.avg, -3.0); + EXPECT_NEAR(stats.sd, std::sqrt(2.0), EPSILON); +} + +TEST(DataStatsTest, MixedPositiveNegative) { + std::vector vec = {-2, -1, 0, 1, 2}; + DataStats stats = CalculateDataStats(vec); + + EXPECT_DOUBLE_EQ(stats.avg, 0.0); + EXPECT_NEAR(stats.sd, std::sqrt(2.0), EPSILON); +} + +TEST(DataStatsTest, ConstCorrectness) { + const std::vector vec = {-2, -1, 0, 1, 2}; + DataStats stats = CalculateDataStats(vec); + + EXPECT_DOUBLE_EQ(stats.avg, 0.0); + EXPECT_NEAR(stats.sd, std::sqrt(2.0), EPSILON); +} + +TEST(DataStatsTest, LargeNumbers) { + std::vector vec = {50000, 60000, 70000}; + DataStats stats = CalculateDataStats(vec); + + EXPECT_DOUBLE_EQ(stats.avg, 60000.0); + EXPECT_NEAR(stats.sd, std::sqrt(200000000.0 / 3.0), EPSILON); +} \ No newline at end of file diff --git a/03_week/tasks/easy_compare/CMakeLists.txt b/03_week/tasks/easy_compare/CMakeLists.txt new file mode 100644 index 00000000..f1c0b634 --- /dev/null +++ b/03_week/tasks/easy_compare/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_easy_compare test.cpp) \ No newline at end of file diff --git a/03_week/tasks/easy_compare/README.md b/03_week/tasks/easy_compare/README.md new file mode 100644 index 00000000..11b1e3f1 --- /dev/null +++ b/03_week/tasks/easy_compare/README.md @@ -0,0 +1,25 @@ +# Оператор сравнения + +Необходимо реализовать перегрузку оператор сравнения для структуры `Date`. +Операторы сравнения для структуры `Date` должен соответствовать обычной логике. + +Необходимо реализовать перегрузку операторов сравнения на меньше и на равно +для структуры `StudentInfo`. Сравнение производится для ранжирования участников +олимпиады, поэтому есть особые правила. + +Две структуры равны, если равны оценки и равны баллы. + +Сравнение на меньше происходит в следующем порядке: + +1. Сравнивается оценка `mark`. Высшая оценка в приоритете (`Z` < `D` < `C` < `B` < `A`). +1. Сравниваются баллы `score`. Больший балл в приоритете (80 < 100). +1. Сравнивается курс обучения `course`. Менее опытные в приоритете (4 < 3). +1. Сравнивается дата рождения, сначала год, затем месяц, затем день. + Более молодые в приоритете. + +Сравнение начинается с первого пункта и продолжается если элементы равны. + +## Примечание + +- Удобно воспользоваться функцией `std::tie` +- В задаче гарантируется корректность данных diff --git a/03_week/tasks/easy_compare/easy_compare.cpp b/03_week/tasks/easy_compare/easy_compare.cpp new file mode 100644 index 00000000..dd5cb7f6 --- /dev/null +++ b/03_week/tasks/easy_compare/easy_compare.cpp @@ -0,0 +1,16 @@ +#include + + +struct Date { + unsigned year; + unsigned month; + unsigned day; +}; + +struct StudentInfo { + size_t id; + char mark; + int score; + unsigned course; + Date birth_date; +}; \ No newline at end of file diff --git a/03_week/tasks/easy_compare/test.cpp b/03_week/tasks/easy_compare/test.cpp new file mode 100644 index 00000000..1701e7d6 --- /dev/null +++ b/03_week/tasks/easy_compare/test.cpp @@ -0,0 +1,269 @@ +#include + +#include +#include + +#include "easy_compare.cpp" + + +TEST(DateTest, DefaultCtor) { + Date date; + EXPECT_EQ(date.year, 0u); + EXPECT_EQ(date.month, 0u); + EXPECT_EQ(date.day, 0u); +} + +TEST(DateTest, ParameterizedCtor) { + Date date{2025, 12, 31}; + EXPECT_EQ(date.year, 2025u); + EXPECT_EQ(date.month, 12u); + EXPECT_EQ(date.day, 31u); +} + +TEST(DateTest, EqualityOperator) { + EXPECT_TRUE(Date({2007, 1, 1}) == Date({2007, 1, 1})); + EXPECT_FALSE(Date({2007, 1, 1}) == Date({2007, 1, 2})); + EXPECT_FALSE(Date({2007, 1, 1}) == Date({2007, 2, 1})); + EXPECT_FALSE(Date({2007, 1, 1}) == Date({2006, 1, 1})); +} + +TEST(DateTest, LessThanOperator) { + Date d1(2007, 1, 1); + Date d2(2007, 1, 2); + Date d3(2007, 2, 1); + Date d4(2008, 1, 1); + + EXPECT_TRUE(d1 < d2); + EXPECT_TRUE(d1 < d3); + EXPECT_TRUE(d1 < d4); + EXPECT_TRUE(d2 < d3); + EXPECT_TRUE(d2 < d4); + EXPECT_TRUE(d3 < d4); + + EXPECT_FALSE(d1 < d1); + EXPECT_FALSE(d2 < d1); + EXPECT_FALSE(d3 < d1); + EXPECT_FALSE(d4 < d1); + EXPECT_FALSE(d3 < d2); + EXPECT_FALSE(d4 < d3); +} + +TEST(DateTest, FullComparisonOperators) { + Date d1(2000, 1, 1); + Date d2(2000, 1, 2); + + EXPECT_TRUE(d1 != d2); + EXPECT_FALSE(d1 != d1); + + EXPECT_FALSE(d2 <= d1); + EXPECT_TRUE(d1 <= d2); + EXPECT_FALSE(d1 >= d2); + EXPECT_TRUE(d2 >= d1); + EXPECT_FALSE(d1 > d2); + EXPECT_TRUE(d2 > d1); + + EXPECT_TRUE(d1 >= d1); + EXPECT_TRUE(d1 <= d1); +} + +TEST(StudentInfoTest, EqualityOperator) { + StudentInfo s1{1, 'A', 100, 1, Date{2000, 1, 1}}; + StudentInfo s2{2, 'A', 100, 2, Date{1999, 12, 31}}; + StudentInfo s3{3, 'B', 100, 1, Date{2000, 1, 1}}; + StudentInfo s4{4, 'A', 90, 1, Date{2000, 1, 1}}; + + EXPECT_TRUE(s1 == s2); + EXPECT_FALSE(s1 == s3); + EXPECT_FALSE(s1 == s4); +} + +TEST(StudentInfoTest, NotEqualOperator) { + StudentInfo s1{1, 'A', 100, 1, Date{2000, 1, 1}}; + StudentInfo s2{4, 'B', 100, 1, Date{2000, 1, 1}}; + StudentInfo s4{2, 'A', 90, 1, Date{2000, 1, 1}}; + + EXPECT_TRUE(s1 != s2); + EXPECT_FALSE(s1 != s1); + EXPECT_TRUE(s1 != s4); +} + +TEST(StudentInfoTest, CompareByMark) { + StudentInfo z_student{1, 'Z', 10, 1, Date{2000, 1, 1}}; + StudentInfo d_student{2, 'D', 20, 2, Date{2001, 1, 1}}; + StudentInfo c_student{3, 'C', 30, 3, Date{2002, 1, 1}}; + StudentInfo b_student{2, 'B', 40, 4, Date{2003, 1, 1}}; + StudentInfo a_student{5, 'A', 50, 5, Date{2004, 1, 1}}; + + EXPECT_TRUE(z_student < d_student); + EXPECT_TRUE(z_student < c_student); + EXPECT_TRUE(z_student < b_student); + EXPECT_TRUE(z_student < a_student); + + EXPECT_TRUE(d_student < c_student); + EXPECT_TRUE(d_student < b_student); + EXPECT_TRUE(d_student < a_student); + + EXPECT_TRUE(c_student < b_student); + EXPECT_TRUE(c_student < a_student); + + EXPECT_TRUE(b_student < a_student); + + EXPECT_FALSE(a_student < z_student); + EXPECT_FALSE(a_student < d_student); + EXPECT_FALSE(a_student < c_student); + EXPECT_FALSE(a_student < b_student); +} + +TEST(StudentInfoTest, CompareByScore) { + StudentInfo high_score{3, 'A', 100, 1, Date{2000, 1, 1}}; + StudentInfo medium_score{2, 'A', 80, 2, Date{2001, 1, 1}}; + StudentInfo low_score{7, 'A', 60, 3, Date{2002, 1, 1}}; + + EXPECT_TRUE(low_score < medium_score); + EXPECT_TRUE(medium_score < high_score); + EXPECT_TRUE(low_score < high_score); + + EXPECT_FALSE(high_score < medium_score); + EXPECT_FALSE(high_score < low_score); + EXPECT_FALSE(medium_score < low_score); +} + +TEST(StudentInfoTest, CompareByCourse) { + StudentInfo first_year{1, 'A', 100, 1, Date{2000, 1, 1}}; + StudentInfo second_year{3, 'A', 100, 2, Date{2000, 1, 1}}; + StudentInfo third_year{2, 'A', 100, 3, Date{2000, 1, 1}}; + StudentInfo fourth_year{4, 'A', 100, 4, Date{2000, 1, 1}}; + + EXPECT_TRUE(fourth_year < third_year); + EXPECT_TRUE(fourth_year < second_year); + EXPECT_TRUE(fourth_year < first_year); + + EXPECT_TRUE(third_year < second_year); + EXPECT_TRUE(third_year < first_year); + + EXPECT_TRUE(second_year < first_year); + + EXPECT_FALSE(first_year < second_year); + EXPECT_FALSE(first_year < third_year); + EXPECT_FALSE(first_year < fourth_year); + EXPECT_FALSE(third_year < fourth_year); +} + +TEST(StudentInfoTest, CompareByBirthDate) { + StudentInfo young{1, 'A', 100, 1, Date{2001, 1, 1}}; + StudentInfo middle{2, 'A', 100, 1, Date{2000, 6, 15}}; + StudentInfo old{3, 'A', 100, 1, Date{1999, 12, 31}}; + + EXPECT_TRUE(old < middle); + EXPECT_TRUE(middle < young); + EXPECT_TRUE(old < young); + + EXPECT_FALSE(young < middle); + EXPECT_FALSE(young < old); + EXPECT_FALSE(middle < old); +} + +TEST(StudentInfoTest, CompareByDateComponents) { + StudentInfo year1{1, 'A', 100, 1, Date{2000, 1, 1}}; + StudentInfo year2{2, 'A', 100, 1, Date{2001, 1, 1}}; + + StudentInfo month1{4, 'A', 100, 1, Date{2000, 1, 1}}; + StudentInfo month2{3, 'A', 100, 1, Date{2000, 2, 1}}; + + StudentInfo day1{5, 'A', 100, 1, Date{2000, 1, 1}}; + StudentInfo day2{6, 'A', 100, 1, Date{2000, 1, 2}}; + + EXPECT_TRUE(year1 < year2); + EXPECT_FALSE(year2 < year1); + + EXPECT_TRUE(month1 < month2); + EXPECT_FALSE(month2 < month1); + + EXPECT_TRUE(day1 < day2); + EXPECT_FALSE(day2 < day1); +} + +TEST(StudentInfoTest, ComplexComparisons) { + StudentInfo a_student{1, 'A', 50, 4, Date{1990, 1, 1}}; + StudentInfo b_student{2, 'B', 100, 1, Date{2005, 1, 1}}; + + EXPECT_TRUE(b_student < a_student); + EXPECT_FALSE(a_student < b_student); + + StudentInfo high_score{4, 'B', 100, 4, Date{1990, 1, 1}}; + StudentInfo low_score{3, 'B', 50, 1, Date{2005, 1, 1}}; + + EXPECT_TRUE(low_score < high_score); + EXPECT_FALSE(high_score < low_score); + + StudentInfo first_year{5, 'C', 80, 1, Date{1995, 1, 1}}; + StudentInfo fourth_year{6, 'C', 80, 4, Date{2005, 1, 1}}; + + EXPECT_TRUE(fourth_year < first_year); + EXPECT_FALSE(first_year < fourth_year); + + StudentInfo older{8, 'D', 70, 2, Date{1998, 1, 1}}; + StudentInfo younger{7, 'D', 70, 2, Date{2000, 1, 1}}; + + EXPECT_TRUE(older < younger); + EXPECT_FALSE(younger < older); + + StudentInfo older_month{8, 'D', 70, 2, Date{2007, 1, 31}}; + StudentInfo younger_month{7, 'D', 70, 2, Date{2007, 2, 1}}; + + EXPECT_TRUE(older_month < younger_month); + EXPECT_FALSE(younger_month < older_month); + + StudentInfo older_day{8, 'D', 70, 2, Date{2007, 1, 1}}; + StudentInfo younger_day{7, 'D', 70, 2, Date{2007, 1, 2}}; + + EXPECT_TRUE(older_day < younger_day); + EXPECT_FALSE(younger_day < older_day); +} + +class StudentSortTest : public ::testing::Test { +protected: + void SetUp() override { + students_expected = { + {7, 'Z', 100, 1, Date{2018, 1, 1}}, + {6, 'D', 120, 2, Date{2017, 1, 1}}, + {5, 'C', 140, 3, Date{2016, 1, 1}}, + {4, 'B', 150, 5, Date{2017, 1, 1}}, + {8, 'A', 1999, 2, Date{2003, 1, 1}}, + {9, 'A', 1999, 1, Date{2003, 1, 1}}, + {3, 'A', 1999, 1, Date{2003, 2, 1}}, + {2, 'A', 1999, 1, Date{2004, 2, 1}}, + {1, 'A', 2000, 5, Date{2000, 1, 1}}, + {10, 'A', 2000, 4, Date{2000, 1, 1}}, + {11, 'A', 2000, 4, Date{2000, 1, 2}} + }; + } + + std::vector students_expected; +}; + +TEST_F(StudentSortTest, SortStudents) { + std::vector students = { + {1, 'A', 2000, 5, Date{2000, 1, 1}}, + {2, 'A', 1999, 1, Date{2004, 2, 1}}, + {3, 'A', 1999, 1, Date{2003, 2, 1}}, + {4, 'B', 150, 5, Date{2017, 1, 1}}, + {5, 'C', 140, 3, Date{2016, 1, 1}}, + {6, 'D', 120, 2, Date{2017, 1, 1}}, + {7, 'Z', 100, 1, Date{2018, 1, 1}}, + {8, 'A', 1999, 2, Date{2003, 1, 1}}, + {9, 'A', 1999, 1, Date{2003, 1, 1}}, + {10, 'A', 2000, 4, Date{2000, 1, 1}}, + {11, 'A', 2000, 4, Date{2000, 1, 2}} + }; + + std::sort(students.begin(), students.end()); + + for (size_t i = 0; i < students.size(); ++i) { + EXPECT_EQ(students[i].id, students_expected[i].id); + EXPECT_EQ(students[i].mark, students_expected[i].mark); + EXPECT_EQ(students[i].score, students_expected[i].score); + EXPECT_EQ(students[i].course, students_expected[i].course); + EXPECT_EQ(students[i].birth_date, students_expected[i].birth_date); + } +} \ No newline at end of file diff --git a/03_week/tasks/enum_operators/CMakeLists.txt b/03_week/tasks/enum_operators/CMakeLists.txt new file mode 100644 index 00000000..efb136e1 --- /dev/null +++ b/03_week/tasks/enum_operators/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_enum_operators test.cpp) \ No newline at end of file diff --git a/03_week/tasks/enum_operators/README.md b/03_week/tasks/enum_operators/README.md new file mode 100644 index 00000000..59f6ff0d --- /dev/null +++ b/03_week/tasks/enum_operators/README.md @@ -0,0 +1,19 @@ +# Переопределение побитовых операторов + +Необходимо реализовать перегрузку побитовых операторов для перечисления `CheckFlags`: + +- `operator|` - возвращает результат побитового ИЛИ двух перечислений +- `operator&` - возвращает `true`, если все активные флаги одного операнда + присутствуют у другого операнда, иначе возвращает `false`. В случае когда у одного + из операндов нет активных флагов возвращает `false` +- `operator^` - возвращает результат исключающего ИЛИ двух перечислений. +- `operator~` - инвертирует установленные флаги (для `NONE` результат будет `ALL`) +- `operator<<` - выводит через запятую в произвольный поток вывода имена включенных + флагов проверки + +## Ограничения + +Все операторы должны гарантировать, что результат не содержит флагов вне диапазона +`[NONE, ALL]`, даже если входные данные превышают диапазон. Флаги вне диапазона +игнорируются. + \ No newline at end of file diff --git a/03_week/tasks/enum_operators/enum_operators.cpp b/03_week/tasks/enum_operators/enum_operators.cpp new file mode 100644 index 00000000..a539be38 --- /dev/null +++ b/03_week/tasks/enum_operators/enum_operators.cpp @@ -0,0 +1,33 @@ +#include +#include + +enum class CheckFlags : uint8_t { + NONE = 0, + TIME = (1 << 0), + DATE = (1 << 1), + USER = (1 << 2), + CERT = (1 << 3), + KEYS = (1 << 4), + DEST = (1 << 5), + ALL = TIME | DATE | USER | CERT | KEYS | DEST +}; + +/* return_type */ operator|(/* args */) { + throw std::runtime_error{"Not implemented"}; +} + +/* return_type */ operator&(/* args */) { + throw std::runtime_error{"Not implemented"}; +} + +/* return_type */ operator^(/* args */) { + throw std::runtime_error{"Not implemented"}; +} + +/* return_type */ operator~(/* args */) { + throw std::runtime_error{"Not implemented"}; +} + +/* return_type */ operator<<(/* args */) { + throw std::runtime_error{"Not implemented"}; +} diff --git a/03_week/tasks/enum_operators/test.cpp b/03_week/tasks/enum_operators/test.cpp new file mode 100644 index 00000000..caf96643 --- /dev/null +++ b/03_week/tasks/enum_operators/test.cpp @@ -0,0 +1,226 @@ +#include + +#include +#include +#include + +#include "enum_operators.cpp" + + +TEST(EnumOperatorsTest, UnderlyingType) { + static_assert(std::is_same_v, uint8_t>, + "CheckFlags must use uint8_t as underlying type"); + EXPECT_EQ(sizeof(CheckFlags), sizeof(uint8_t)); + EXPECT_EQ(alignof(CheckFlags), alignof(uint8_t)); +} + +TEST(EnumOperatorsTest, BitwiseOr) { + EXPECT_EQ(CheckFlags::TIME | CheckFlags::DATE, static_cast( + static_cast(CheckFlags::TIME) + static_cast(CheckFlags::DATE))); + EXPECT_EQ(CheckFlags::TIME | CheckFlags::DEST | CheckFlags::USER, static_cast( + static_cast(CheckFlags::TIME) + static_cast(CheckFlags::DEST) + + static_cast(CheckFlags::USER))); + EXPECT_EQ(CheckFlags::TIME | CheckFlags::TIME, CheckFlags::TIME); + EXPECT_EQ(CheckFlags::NONE | CheckFlags::TIME, CheckFlags::TIME); + EXPECT_EQ(CheckFlags::ALL | CheckFlags::TIME, CheckFlags::ALL); +} + +TEST(EnumOperatorsTest, BitwiseOrOutside) { + EXPECT_EQ(static_cast(0xFF) | CheckFlags::NONE, CheckFlags::ALL); + uint8_t invalid = 0x40; + invalid += static_cast(CheckFlags::CERT); + EXPECT_EQ(static_cast(invalid) | CheckFlags::KEYS, + static_cast(static_cast(CheckFlags::CERT) + static_cast(CheckFlags::KEYS))); +} + +TEST(EnumOperatorsTest, BitwiseAnd) { + CheckFlags flags = CheckFlags::TIME | CheckFlags::DATE; + + EXPECT_TRUE(flags & CheckFlags::TIME); + EXPECT_TRUE(flags & CheckFlags::DATE); + EXPECT_FALSE(flags & CheckFlags::USER); + + EXPECT_TRUE(CheckFlags::ALL & CheckFlags::TIME); + EXPECT_TRUE(CheckFlags::TIME & CheckFlags::ALL); + EXPECT_TRUE(CheckFlags::DATE & CheckFlags::ALL); + EXPECT_TRUE(CheckFlags::ALL & CheckFlags::ALL); + + EXPECT_FALSE(CheckFlags::DATE & CheckFlags::NONE); + EXPECT_FALSE(CheckFlags::NONE & CheckFlags::DATE); + EXPECT_FALSE(CheckFlags::NONE & CheckFlags::ALL); + EXPECT_FALSE(CheckFlags::ALL & CheckFlags::NONE); + EXPECT_FALSE(CheckFlags::NONE & CheckFlags::NONE); +} + +TEST(EnumOperatorsTest, BitwiseAndComplex) { + CheckFlags flags = CheckFlags::TIME | CheckFlags::DATE | CheckFlags::USER; + + EXPECT_TRUE(flags & (CheckFlags::TIME | CheckFlags::DATE)); + EXPECT_TRUE(flags & (CheckFlags::USER | CheckFlags::DATE)); + EXPECT_TRUE((CheckFlags::TIME | CheckFlags::DATE) & flags); + EXPECT_TRUE((CheckFlags::USER | CheckFlags::DATE) & flags); + + EXPECT_FALSE(flags & CheckFlags::CERT); + EXPECT_FALSE(flags & (CheckFlags::TIME | CheckFlags::CERT)); + EXPECT_FALSE(flags & (CheckFlags::DATE | CheckFlags::CERT)); + EXPECT_FALSE(flags & (CheckFlags::DATE | CheckFlags::TIME | CheckFlags::CERT)); + + EXPECT_FALSE(flags & CheckFlags::NONE); + EXPECT_FALSE(CheckFlags::NONE & flags); + + EXPECT_TRUE(flags & flags); + EXPECT_TRUE(flags & (CheckFlags::TIME | CheckFlags::DATE | CheckFlags::USER | CheckFlags::CERT)); + EXPECT_TRUE((CheckFlags::TIME | CheckFlags::DATE | CheckFlags::USER | CheckFlags::CERT) & flags); +} + +TEST(EnumOperatorsTest, BitwiseAndOutside) { + EXPECT_FALSE(static_cast(0xC0) & static_cast(0xC0)); + EXPECT_FALSE(static_cast(0xC1) & static_cast(0xC2)); + EXPECT_FALSE(static_cast(0xC0) & CheckFlags::ALL); + EXPECT_TRUE(static_cast(0xC1) & static_cast(0x03)); +} + +TEST(EnumOperatorsTest, BitwiseXor) { + CheckFlags flags1 = CheckFlags::TIME | CheckFlags::DATE; + CheckFlags flags2 = CheckFlags::TIME | CheckFlags::USER; + + EXPECT_EQ(flags1 ^ flags2, CheckFlags::DATE | CheckFlags::USER); + EXPECT_EQ(flags2 ^ flags1, CheckFlags::DATE | CheckFlags::USER); + EXPECT_EQ(flags1 ^ flags1, CheckFlags::NONE); + EXPECT_EQ(flags1 ^ CheckFlags::NONE, flags1); + EXPECT_EQ(CheckFlags::NONE ^ flags2, flags2); + EXPECT_EQ(flags1 ^ CheckFlags::ALL, CheckFlags::USER | CheckFlags::CERT | CheckFlags::KEYS | CheckFlags::DEST); + EXPECT_EQ(CheckFlags::ALL ^ flags2, CheckFlags::DATE | CheckFlags::CERT | CheckFlags::KEYS | CheckFlags::DEST); +} + +TEST(EnumOperatorsTest, BitwiseXorOutside) { + EXPECT_EQ(static_cast(0xC0) ^ static_cast(0x80), CheckFlags::NONE); + EXPECT_EQ(static_cast(0xC1) ^ static_cast(0xC2), CheckFlags::TIME | CheckFlags::DATE); + EXPECT_EQ(static_cast(0xC0) ^ CheckFlags::ALL,CheckFlags::ALL); + EXPECT_EQ(static_cast(0xFF) ^ CheckFlags::ALL, CheckFlags::NONE); +} + +TEST(EnumOperatorsTest, BitwiseNot) { + EXPECT_EQ(~(CheckFlags::NONE), CheckFlags::ALL); + EXPECT_EQ(~(CheckFlags::ALL), CheckFlags::NONE); + + CheckFlags not_time = ~CheckFlags::TIME; + EXPECT_NE(not_time, CheckFlags::NONE); + EXPECT_NE(not_time, CheckFlags::TIME); + EXPECT_FALSE(not_time & CheckFlags::TIME); + + CheckFlags flags = CheckFlags::TIME | CheckFlags::DATE; + EXPECT_EQ(~(~flags), flags); +} + +TEST(EnumOperatorsTest, OutputOperator) { + std::stringstream ss; + + ss << CheckFlags::NONE; + EXPECT_EQ(ss.str(), "NONE"); + ss.str(""); + + ss << CheckFlags::ALL; + EXPECT_EQ(ss.str(), "TIME, DATE, USER, CERT, KEYS, DEST"); + ss.str(""); + + ss << CheckFlags::DEST; + EXPECT_EQ(ss.str(), "DEST"); + ss.str(""); + + ss << (CheckFlags::TIME | CheckFlags::DATE | CheckFlags::USER); + std::string result = ss.str(); + EXPECT_EQ(result, "TIME, DATE, USER"); +} + +TEST(EnumOperatorsTest, OutputOperatorOutside) { + std::stringstream ss; + + ss << static_cast(0xC1); + EXPECT_EQ(ss.str(), "TIME"); + ss.str(""); + + ss << static_cast(0xFF); + EXPECT_EQ(ss.str(), "TIME, DATE, USER, CERT, KEYS, DEST"); + ss.str(""); + + ss << static_cast(0x80); + EXPECT_EQ(ss.str(), "NONE"); + ss.str(""); +} + +TEST(EnumOperatorsTest, OutputOperatorChainUse) { + std::stringstream ss; + ss << CheckFlags::CERT << " " << CheckFlags::KEYS << " " << CheckFlags::DEST; + std::string result = ss.str(); + EXPECT_EQ(result, "CERT KEYS DEST"); +} + + +TEST(EnumOperatorsTest, Sanitization) { + uint8_t raw_value = 0xFF; + CheckFlags flags_with_invalid = static_cast(raw_value); + + CheckFlags or_result = flags_with_invalid | CheckFlags::NONE; + EXPECT_EQ(or_result, CheckFlags::ALL); + + EXPECT_TRUE(flags_with_invalid & CheckFlags::ALL); + + CheckFlags xor_result = flags_with_invalid ^ CheckFlags::ALL; + EXPECT_EQ(xor_result, CheckFlags::NONE); + std::cerr << flags_with_invalid << std::endl; + + CheckFlags not_result = ~flags_with_invalid; + std::cerr << not_result << std::endl; + EXPECT_EQ(not_result, CheckFlags::NONE); +} + +TEST(EnumOperatorsTest, CombinedOperations) { + CheckFlags base = CheckFlags::TIME | CheckFlags::DATE | CheckFlags::USER; + + CheckFlags added = base | CheckFlags::CERT; + EXPECT_TRUE(added & CheckFlags::CERT); + + CheckFlags removed = added ^ CheckFlags::DATE; + EXPECT_FALSE(removed & CheckFlags::DATE); + EXPECT_TRUE(removed & CheckFlags::TIME); + EXPECT_TRUE(removed & CheckFlags::USER); + EXPECT_TRUE(removed & CheckFlags::CERT); + + CheckFlags inverse = ~removed; + EXPECT_FALSE(inverse & CheckFlags::TIME); + EXPECT_FALSE(inverse & CheckFlags::USER); + EXPECT_FALSE(inverse & CheckFlags::CERT); + EXPECT_TRUE(inverse & CheckFlags::DATE); + EXPECT_TRUE(inverse & CheckFlags::KEYS); + EXPECT_TRUE(inverse & CheckFlags::DEST); +} + +TEST(EnumOperatorsTest, OperationWithConst) { + const CheckFlags base = CheckFlags::TIME | CheckFlags::DATE | CheckFlags::USER; + + const CheckFlags added_lhs = base | CheckFlags::CERT; + const CheckFlags added_rhs = CheckFlags::CERT | base; + EXPECT_TRUE(added_lhs & CheckFlags::CERT); + EXPECT_TRUE(CheckFlags::CERT & added_rhs); + + const CheckFlags removed_lhs = added_lhs ^ CheckFlags::DATE; + const CheckFlags removed_rhs = CheckFlags::DATE ^ added_lhs; + EXPECT_FALSE(removed_lhs & CheckFlags::DATE); + EXPECT_TRUE(removed_lhs & CheckFlags::TIME); + EXPECT_TRUE(CheckFlags::USER & removed_lhs); + EXPECT_TRUE(CheckFlags::CERT & removed_lhs); + + EXPECT_FALSE(removed_rhs & CheckFlags::DATE); + EXPECT_TRUE(removed_rhs & CheckFlags::TIME); + EXPECT_TRUE(CheckFlags::USER & removed_rhs); + EXPECT_TRUE(CheckFlags::CERT & removed_rhs); + + const CheckFlags inverse = ~removed_lhs; + EXPECT_FALSE(inverse & CheckFlags::TIME); + EXPECT_FALSE(inverse & CheckFlags::USER); + EXPECT_FALSE(inverse & CheckFlags::CERT); + EXPECT_TRUE(inverse & CheckFlags::DATE); + EXPECT_TRUE(inverse & CheckFlags::KEYS); + EXPECT_TRUE(inverse & CheckFlags::DEST); +} \ No newline at end of file diff --git a/03_week/tasks/filter/CMakeLists.txt b/03_week/tasks/filter/CMakeLists.txt new file mode 100644 index 00000000..e5f4644d --- /dev/null +++ b/03_week/tasks/filter/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_filter test.cpp) \ No newline at end of file diff --git a/03_week/tasks/filter/README.md b/03_week/tasks/filter/README.md new file mode 100644 index 00000000..4cd5bace --- /dev/null +++ b/03_week/tasks/filter/README.md @@ -0,0 +1,11 @@ +# Фильтрация данных + +Необходимо реализовать функцию `Filter`, которая принимает `std::vector` +и указатель на функцию предикат, и оставляет в контейнере элементы, +удовлетворяющие предикату, в исходном порядке. + +## Примечание + +- Запрещено использовать функции из `` +- Алгоритм должен работать за линейное время `O(n)` (за один проход) +- Постарайтесь не выделять дополнительную память, дополнительная память `O(1)` \ No newline at end of file diff --git a/03_week/tasks/filter/filter.cpp b/03_week/tasks/filter/filter.cpp new file mode 100644 index 00000000..6648cb39 --- /dev/null +++ b/03_week/tasks/filter/filter.cpp @@ -0,0 +1,6 @@ +#include + + +/* return_type */ Filter(/* args */) { + throw std::runtime_error{"Not implemented"}; +} \ No newline at end of file diff --git a/03_week/tasks/filter/test.cpp b/03_week/tasks/filter/test.cpp new file mode 100644 index 00000000..2ad4ff38 --- /dev/null +++ b/03_week/tasks/filter/test.cpp @@ -0,0 +1,172 @@ +#include + +#include +#include +#include +#include +#include + +#include "filter.cpp" + + +bool IsEven(int x) { + return x % 2 == 0; +} + +bool IsOdd(int x) { + return x % 2; +} + +bool IsPositive(int x) { + return x > 0; +} + +bool AlwaysFalse(int) { + return false; +} + +TEST(FilterTest, EmptyVector) { + std::vector empty_vec; + Filter(empty_vec, IsEven); + EXPECT_TRUE(empty_vec.empty()); +} + +TEST(FilterTest, AllElementsFalse) { + std::vector vec = {1, -3, 5, -7, 9}; + Filter(vec, IsEven); + EXPECT_TRUE(vec.empty()); +} + +TEST(FilterTest, NullptrPredicate) { + std::vector vec = {1, 2, 3, 4, 5}; + size_t expected_size = vec.size(); + EXPECT_NO_THROW(Filter(vec, nullptr)); + EXPECT_EQ(vec.size(), expected_size); +} + +TEST(FilterTest, SingleElementTrue) { + std::vector vec = {18}; + Filter(vec, IsEven); + EXPECT_EQ(vec.size(), 1); + EXPECT_EQ(vec[0], 18); +} + +TEST(FilterTest, SingleElementFalse) { + std::vector vec = {17}; + Filter(vec, IsEven); + EXPECT_TRUE(vec.empty()); +} + +TEST(FilterTest, AllElementsPass) { + std::vector vec = {2, 4, 6, 8, 10}; + Filter(vec, IsEven); + std::vector expected = {2, 4, 6, 8, 10}; + EXPECT_EQ(vec.size(), expected.size()); + EXPECT_EQ(vec, expected); +} + +TEST(FilterTest, MixedElements) { + std::vector vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + Filter(vec, IsEven); + std::vector expected = {2, 4, 6, 8, 10}; + EXPECT_EQ(vec.size(), expected.size()); + EXPECT_EQ(vec, expected); +} + +TEST(FilterTest, NotSortedElements) { + std::vector vec = {10, 2, 3, 4, 5, 7, 6, 8, 9, 1}; + Filter(vec, IsEven); + std::vector expected = {10, 2, 4, 6, 8}; + EXPECT_EQ(vec, expected); +} + +TEST(FilterTest, NotRealocate) { + std::vector vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + auto capacity = vec.capacity(); + auto ptr_before = vec.data(); + Filter(vec, IsEven); + EXPECT_EQ(vec.data(), ptr_before); + EXPECT_EQ(vec.capacity(), capacity); +} + +TEST(FilterTest, AllFalsePredicate) { + std::vector vec = {1, 2, 3, 4, 5}; + Filter(vec, AlwaysFalse); + EXPECT_TRUE(vec.empty()); +} + +TEST(FilterTest, LargeVector) { + const size_t SIZE = 1'000'000; + std::vector vec(SIZE); + for (size_t i = 0; i < SIZE; ++i) { + vec[i] = static_cast(i); + } + + Filter(vec, IsEven); + + EXPECT_EQ(vec.size(), SIZE / 2); + + for (size_t i = 0; i < vec.size(); ++i) { + EXPECT_EQ(vec[i], static_cast(i * 2)); + EXPECT_TRUE(IsEven(vec[i])); + } +} + +TEST(FilterTest, ConsecutiveCalls) { + std::vector vec = {1, -2, 3, 4, 5, 6, 7, -8, 9, 10}; + + Filter(vec, IsEven); + Filter(vec, IsEven); + std::vector expected = {-2, 4, 6, -8, 10}; + EXPECT_EQ(vec, expected); + + Filter(vec, IsPositive); + expected = {4, 6, 10}; + EXPECT_EQ(vec, expected); +} + +TEST(FilterTest, BigRandomDataMultipleSeeds) { + const size_t NUM_TESTS = 10; + const size_t VECTOR_SIZE = 1'000'000; + const int MIN_VALUE = -1'000'000; + const int MAX_VALUE = 1'000'000; + + std::random_device rd; + std::mt19937 seed_gen(rd()); + std::uniform_int_distribution seed_dist(0, 100000); + + double erase_duration = 0; + double filter_duration = 0; + for (size_t test_idx = 0; test_idx < NUM_TESTS; ++test_idx) { + unsigned int seed = seed_dist(seed_gen); + std::mt19937 gen(seed); + std::uniform_int_distribution value_dist(MIN_VALUE, MAX_VALUE); + + std::vector test(VECTOR_SIZE); + for (size_t i = 0; i < VECTOR_SIZE; ++i) { + test[i] = value_dist(gen); + } + + auto expected = test; + auto start = std::chrono::high_resolution_clock::now(); + std::erase_if(expected, IsOdd); + auto end = std::chrono::high_resolution_clock::now(); + erase_duration += std::chrono::duration_cast(end - start).count(); + + start = std::chrono::high_resolution_clock::now(); + Filter(test, IsEven); + end = std::chrono::high_resolution_clock::now(); + filter_duration += std::chrono::duration_cast(end - start).count(); + + ASSERT_EQ(test.size(), expected.size()) + << "Test #" << test_idx << " with seed " << seed + << ": size mismatch"; + EXPECT_EQ(test, expected) + << "Test #" << test_idx << " with seed " << seed + << ": content mismatch"; + } + + EXPECT_LE(filter_duration, 1.2 * erase_duration) + << "Function too slow: " + <<"filter_duration = " << filter_duration << " ms, erase_duration = " << erase_duration << " ms\n"; +} \ No newline at end of file diff --git a/03_week/tasks/find_all/CMakeLists.txt b/03_week/tasks/find_all/CMakeLists.txt new file mode 100644 index 00000000..e96cdff7 --- /dev/null +++ b/03_week/tasks/find_all/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_find_all test.cpp) \ No newline at end of file diff --git a/03_week/tasks/find_all/README.md b/03_week/tasks/find_all/README.md new file mode 100644 index 00000000..50475494 --- /dev/null +++ b/03_week/tasks/find_all/README.md @@ -0,0 +1,9 @@ +# Найти все элементы + +Необходимо реализовать функцию `FindAll`, которая принимает на вход контейнер +`std::vector` и указатель на функцию предикат, и возвращает контейнер +позиций всех элементов, удовлетворяющих предикату. + +## Примечание + +- Запрещено использовать функции из `` \ No newline at end of file diff --git a/03_week/tasks/find_all/find_all.cpp b/03_week/tasks/find_all/find_all.cpp new file mode 100644 index 00000000..74f393b2 --- /dev/null +++ b/03_week/tasks/find_all/find_all.cpp @@ -0,0 +1,6 @@ +#include + + +/* return_type */ FindAll(/* args */) { + throw std::runtime_error{"Not implemented"}; +} \ No newline at end of file diff --git a/03_week/tasks/find_all/test.cpp b/03_week/tasks/find_all/test.cpp new file mode 100644 index 00000000..f58dc607 --- /dev/null +++ b/03_week/tasks/find_all/test.cpp @@ -0,0 +1,119 @@ +#include + +#include + +#include "find_all.cpp" + +bool IsEven(int x) { + return x % 2 == 0; +} + +bool IsPositive(int x) { + return x > 0; +} + +bool AlwaysFalse(int) { + return false; +} + +TEST(FindAllTest, EmptyVector) { + std::vector empty_vec; + auto result = FindAll(empty_vec, IsEven); + EXPECT_TRUE(result.empty()); +} + +TEST(FindAllTest, NullptrPredicate) { + std::vector vec = {1, 2, 3, 4, 5}; + auto result = FindAll(vec, nullptr); + EXPECT_TRUE(result.empty()); +} + +TEST(FindAllTest, SingleElementTrue) { + std::vector vec = {18}; + auto result = FindAll(vec, IsEven); + EXPECT_EQ(result.size(), 1); + EXPECT_EQ(result[0], 0); +} + +TEST(FindAllTest, SingleElementFalse) { + std::vector vec = {17}; + auto result = FindAll(vec, IsEven); + EXPECT_TRUE(result.empty()); +} + +TEST(FindAllTest, AllElementsPass) { + std::vector vec = {2, 4, 6, 8, 10}; + auto result = FindAll(vec, IsEven); + + EXPECT_EQ(result.size(), vec.size()); + std::vector expected = {0, 1, 2, 3, 4}; + EXPECT_EQ(result, expected); +} + +TEST(FindAllTest, AllElementsFalse) { + std::vector vec = {1, 3, 5, 7, 9}; + auto result = FindAll(vec, IsEven); + EXPECT_TRUE(result.empty()); +} + +TEST(FindAllTest, MixedElements) { + std::vector vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + auto result = FindAll(vec, IsEven); + std::vector expected = {1, 3, 5, 7, 9}; + EXPECT_EQ(result, expected); +} + +TEST(FindAllTest, NotSortedElements) { + std::vector vec = {10, 2, 3, 4, 5, 7, 6, 8, 9, 1}; + auto result = FindAll(vec, IsEven); + std::vector expected = {0, 1, 3, 6, 7}; + EXPECT_EQ(result, expected); +} + +TEST(FindAllTest, AllFalsePredicate) { + std::vector vec = {1, 2, 3, 4, 5}; + auto result = FindAll(vec, AlwaysFalse); + EXPECT_TRUE(result.empty()); +} + +TEST(FindAllTest, LargeVector) { + const size_t SIZE = 1'000'000; + std::vector vec(SIZE); + for (size_t i = 0; i < SIZE; ++i) { + vec[i] = static_cast(i); + } + + auto result = FindAll(vec, IsEven); + + EXPECT_EQ(result.size(), SIZE / 2); + + for (size_t i = 0; i < result.size(); ++i) { + EXPECT_EQ(result[i], i * 2); + EXPECT_TRUE(IsEven(vec[result[i]])); + } +} + +TEST(FindAllTest, CapacityOptimization) { + std::vector vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + + auto result = FindAll(vec, IsEven); + EXPECT_EQ(result.capacity(), result.size()); +} + +TEST(FindAllTest, ConsecutiveCalls) { + std::vector vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + + auto result1 = FindAll(vec, IsEven); + auto result2 = FindAll(vec, IsEven); + EXPECT_EQ(result1, result2); + + auto result3 = FindAll(vec, IsPositive); + EXPECT_EQ(result3.size(), 10); +} + +TEST(FindAllTest, ConstCorrectness) { + const std::vector vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + auto result = FindAll(vec, IsEven); + std::vector expected = {1, 3, 5, 7, 9}; + EXPECT_EQ(result, expected); +} \ No newline at end of file diff --git a/03_week/tasks/minmax/CMakeLists.txt b/03_week/tasks/minmax/CMakeLists.txt new file mode 100644 index 00000000..a2a33c75 --- /dev/null +++ b/03_week/tasks/minmax/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_minmax test.cpp) \ No newline at end of file diff --git a/03_week/tasks/minmax/README.md b/03_week/tasks/minmax/README.md new file mode 100644 index 00000000..b9067359 --- /dev/null +++ b/03_week/tasks/minmax/README.md @@ -0,0 +1,14 @@ +# Минимум и максимум + +Необходимо реализовать функцию `MinMax`, которая принимает на вход контейнер +`std::vector` и возвращает пару итераторов, указывающих на минимальный +и максимальный элемент контейнера. + +## Примечание + +- Запрещено использовать `std::minmax_element` и другие функции из `` +- Необходимо найти оба элемента за один проход по контейнеру. +- Для пустого контейнера необходимо вернуть пару итераторов на конец контейнера. +- В случае нескольких одинаковых элементов, итератор на минимум должен указывать + на первое вхождение, итератор на максимум на последнее вхождение соответствующих + элементов \ No newline at end of file diff --git a/03_week/tasks/minmax/minmax.cpp b/03_week/tasks/minmax/minmax.cpp new file mode 100644 index 00000000..c2869799 --- /dev/null +++ b/03_week/tasks/minmax/minmax.cpp @@ -0,0 +1,6 @@ +#include + + +/* return_type */ MinMax(/* args */) { + throw std::runtime_error{"Not implemented"}; +} diff --git a/03_week/tasks/minmax/test.cpp b/03_week/tasks/minmax/test.cpp new file mode 100644 index 00000000..70e1cb68 --- /dev/null +++ b/03_week/tasks/minmax/test.cpp @@ -0,0 +1,141 @@ +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "minmax.cpp" + + +TEST(MinMaxTest, EmptyVector) { + std::vector empty_vec; + auto [min_it, max_it] = MinMax(empty_vec); + + EXPECT_EQ(min_it, empty_vec.end()); + EXPECT_EQ(max_it, empty_vec.end()); +} + +TEST(MinMaxTest, SingleElement) { + std::vector vec = {42}; + auto [min_it, max_it] = MinMax(vec); + + EXPECT_EQ(min_it, vec.begin()); + EXPECT_EQ(max_it, vec.begin()); + EXPECT_EQ(*min_it, 42); + EXPECT_EQ(*max_it, 42); +} + +TEST(MinMaxTest, AllEqualElements) { + std::vector vec = {5, 5, 5, 5, 5}; + auto [min_it, max_it] = MinMax(vec); + + EXPECT_NE(min_it, vec.begin()); + EXPECT_NE(max_it, vec.end() - 1); + EXPECT_EQ(*min_it, 5); + EXPECT_EQ(*max_it, 5); +} + +TEST(MinMaxTest, BeginMinEndMax) { + std::vector vec = {1, 2, 3, 4, 5}; + auto [min_it, max_it] = MinMax(vec); + + EXPECT_EQ(min_it, vec.begin()); + EXPECT_EQ(max_it, vec.end() - 1); + EXPECT_EQ(*min_it, 1); + EXPECT_EQ(*max_it, 5); + +} + +TEST(MinMaxTest, BeginMaxEndMin) { + std::vector vec = {5, 4, 3, 2, 1}; + auto [min_it, max_it] = MinMax(vec); + + EXPECT_EQ(min_it, vec.end() - 1); + EXPECT_EQ(max_it, vec.begin()); + EXPECT_EQ(*min_it, 1); + EXPECT_EQ(*max_it, 5); +} + +TEST(MinMaxTest, MinAndMaxInMiddle) { + std::vector vec = {5, 3, 2, 1, 5, 4, 2, 1}; + auto [min_it, max_it] = MinMax(vec); + + EXPECT_EQ(min_it, vec.begin() + 3); + EXPECT_EQ(max_it, vec.begin() + 4); + EXPECT_EQ(*min_it, 1); + EXPECT_EQ(*max_it, 5); +} + +TEST(MinMaxTest, NegativeNumbers) { + std::vector vec = {-5, -10, -3, -1, -8}; + auto [min_it, max_it] = MinMax(vec); + + EXPECT_EQ(min_it, vec.begin() + 1); + EXPECT_EQ(max_it, vec.begin() + 3); + EXPECT_EQ(*min_it, -10); + EXPECT_EQ(*max_it, -1); +} + +TEST(MinMaxTest, MixedPositiveNegative) { + std::vector vec = {-5, 10, -3, 0, 8, -20}; + auto [min_it, max_it] = MinMax(vec); + + EXPECT_EQ(min_it, vec.end() - 1); + EXPECT_EQ(max_it, vec.begin() + 1); + EXPECT_EQ(*min_it, -20); + EXPECT_EQ(*max_it, 10); +} + +TEST(MinMaxTest, LargeVector) { + std::vector vec(1000); + + int value = -vec.size() / 2; + for (size_t i = 0; i < vec.size(); ++i, ++value) { + vec[i] = value; + } + + vec[500] = -vec.size(); + vec[750] = vec.size(); + + auto [min_it, max_it] = MinMax(vec); + + EXPECT_EQ(min_it, vec.begin() + 500); + EXPECT_EQ(max_it, vec.begin() + 750); + EXPECT_EQ(*min_it, -vec.size()); + EXPECT_EQ(*max_it, vec.size()); +} + +TEST(MinMaxTest, ConstCorrectness) { + const std::vector vec = {1, 9}; + auto [min_it, max_it] = MinMax(vec); + + EXPECT_EQ(*min_it, 1); + EXPECT_EQ(*max_it, 9); +} + +TEST(MinMaxTest, PerformanceCheck) { + const double THRESHOLD = 0.3; + const size_t SIZE = 1'000'000u; + std::vector large_vec(SIZE); + std::iota(large_vec.begin(), large_vec.end(), 0); + std::shuffle(large_vec.begin(), large_vec.end(), std::mt19937{18}); + + auto start = std::chrono::high_resolution_clock::now(); + auto [min_it, max_it] = MinMax(large_vec); + auto end = std::chrono::high_resolution_clock::now(); + auto duration = std::chrono::duration_cast(end - start); + + start = std::chrono::high_resolution_clock::now(); + auto [min_it_std, max_it_std] = std::minmax_element(large_vec.begin(), large_vec.end()); + end = std::chrono::high_resolution_clock::now(); + auto duration_std = std::chrono::duration_cast(end - start); + + EXPECT_LE(std::abs(duration_std.count() - duration.count()) * 1.0, duration_std.count() * THRESHOLD) << + "Your function is very slowly"; + EXPECT_EQ(*min_it, *min_it_std); + EXPECT_EQ(*max_it, *max_it_std); +} \ No newline at end of file diff --git a/03_week/tasks/os_overload/CMakeLists.txt b/03_week/tasks/os_overload/CMakeLists.txt new file mode 100644 index 00000000..48aae693 --- /dev/null +++ b/03_week/tasks/os_overload/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_os_overload test.cpp) \ No newline at end of file diff --git a/03_week/tasks/os_overload/README.md b/03_week/tasks/os_overload/README.md new file mode 100644 index 00000000..2986a87a --- /dev/null +++ b/03_week/tasks/os_overload/README.md @@ -0,0 +1,42 @@ +# Перегрузка оператора вывода + +Необходимо реализовать операторы вывода в поток для типа `CircleRegionList` и +всех вложенных в него типов. + +Структура `Coord2D` содержит два целочисленных поля `x`, `y`, по умолчанию, +имеющие значения начала координат. + +Структура `Circle` имеет поле `Coord2D` для центра окружности, и целочисленное поле +для задания радиуса окружности. По умолчанию радиус должен быть равен 1 и не должен +принимать отрицательных значений. + +Пара `CircleRegion` включает в себя структуру `Circle` и булевое поле, которое +характеризует внутренняя или внешняя зона окружности активна, `true` - внутренняя, +`false` - внешняя + +Требования к выводу: + +- `Coord2D` - должен выводится в формате `(x, y)` +- `Circle` - должен выводиться в формате `circle[{center}, r = {radius}]`, где + `{center}` вывод координат центра в соответствии с `Coord2D`, а `{radius}` + значение радиуса, или `circle[]`, если радиус равен нулю. +- `CircleRegion` - при выводе должен ставить `+` для внутренней зоны окружности и + `-` для внешней перед форматированным выводом `Circle` +- `CircleRegionList` - выводит внутри фигурных скобок с нулевым отступом, весь список + `CircleRegion` через запятую в форматированном виде, с новой строки, с отступом в одну + табуляцию или `{}`, если список пуст. + +Возможный вывод в поток: + +``` +{ + +circle[(-1, 3), r = 5], + -circle[(0, 0), r = 17], + +circle[], + -circle[] +} +``` + +## Примечание + +- Должен работать вывод в произвольный поток вывода. \ No newline at end of file diff --git a/03_week/tasks/os_overload/os_overload.cpp b/03_week/tasks/os_overload/os_overload.cpp new file mode 100644 index 00000000..e473418d --- /dev/null +++ b/03_week/tasks/os_overload/os_overload.cpp @@ -0,0 +1,21 @@ +#include +#include +#include + + +struct Coord2D { + int x; + int y; +}; + +struct Circle { + Coord2D coord; + unsigned radius; +}; + +using CircleRegion = std::pair; +using CircleRegionList = std::vector; + +/* return_type */ operator<<(/* args */) { + throw std::runtime_error{"Not implemented"}; +} diff --git a/03_week/tasks/os_overload/test.cpp b/03_week/tasks/os_overload/test.cpp new file mode 100644 index 00000000..461009a3 --- /dev/null +++ b/03_week/tasks/os_overload/test.cpp @@ -0,0 +1,308 @@ +#include + +#include +#include + +#include "os_overload.cpp" + +TEST(Coord2DTest, DefaultConstructor) { + Coord2D coord; + EXPECT_EQ(coord.x, 0); + EXPECT_EQ(coord.y, 0); +} + +TEST(Coord2DTest, Coord2DCreation) { + Coord2D coord = {5, -3}; + EXPECT_EQ(coord.x, 5); + EXPECT_EQ(coord.y, -3); +} + +TEST(Coord2DTest, OutputOperator) { + { + Coord2D coord; + std::ostringstream oss; + oss << coord; + EXPECT_EQ(oss.str(), "(0, 0)"); + } + { + Coord2D coord{42, -15}; + std::ostringstream oss; + oss << coord; + EXPECT_EQ(oss.str(), "(42, -15)"); + } + { + Coord2D coord{-1, 3}; + std::ostringstream oss; + oss << coord; + EXPECT_EQ(oss.str(), "(-1, 3)"); + } +} + +TEST(CircleTest, DefaultConstructor) { + Circle circle; + EXPECT_EQ(circle.coord.x, 0); + EXPECT_EQ(circle.coord.y, 0); + EXPECT_EQ(circle.radius, 1u); +} + +TEST(CircleTest, CircleCreation) { + { + Coord2D center{10, 20}; + Circle circle(center, 5); + EXPECT_EQ(circle.coord.x, 10); + EXPECT_EQ(circle.coord.y, 20); + EXPECT_EQ(circle.radius, 5u); + } + { + Circle circle({-5, 7}); + EXPECT_EQ(circle.coord.x, -5); + EXPECT_EQ(circle.coord.y, 7); + EXPECT_EQ(circle.radius, 1u); + } +} + +TEST(CircleTest, OutputOperator) { + { + Circle circle; + std::ostringstream oss; + oss << circle; + EXPECT_EQ(oss.str(), "circle[(0, 0), r = 1]"); + } + { + Coord2D center(-1, 3); + Circle circle(center, 5); + std::ostringstream oss; + oss << circle; + EXPECT_EQ(oss.str(), "circle[(-1, 3), r = 5]"); + } + { + Coord2D center(0, 0); + Circle circle(center, 17); + std::ostringstream oss; + oss << circle; + EXPECT_EQ(oss.str(), "circle[(0, 0), r = 17]"); + } + { + Coord2D center(10, 10); + Circle circle(center, 0); + std::ostringstream oss; + oss << circle; + EXPECT_EQ(oss.str(), "circle[]"); + } + { + Coord2D center(100, -200); + Circle circle(center, 1000); + std::ostringstream oss; + oss << circle; + EXPECT_EQ(oss.str(), "circle[(100, -200), r = 1000]"); + } +} + +TEST(CircleRegionTest, CreateAndOutput) { + { + Circle circle({3, 4}); + CircleRegion region(circle, true); + std::ostringstream oss; + oss << region; + EXPECT_EQ(oss.str(), "+circle[(3, 4), r = 1]"); + } + { + Circle circle({-5, -6}, 7); + CircleRegion region(circle, false); + std::ostringstream oss; + oss << region; + EXPECT_EQ(oss.str(), "-circle[(-5, -6), r = 7]"); + } + { + Circle circle({1, 2}, 0); + CircleRegion region(circle, true); + std::ostringstream oss; + oss << region; + EXPECT_EQ(oss.str(), "+circle[]"); + } + { + Circle circle({1, 2}, 0); + CircleRegion region(circle, false); + std::ostringstream oss; + oss << region; + EXPECT_EQ(oss.str(), "-circle[]"); + } +} + +TEST(CircleRegionListTest, EmptyList) { + CircleRegionList empty_list; + std::ostringstream oss; + oss << empty_list; + std::string expected = "{}"; + EXPECT_EQ(oss.str(), expected); +} + +TEST(CircleRegionListTest, SingleElement) { + CircleRegionList list; + list.emplace_back(Circle(Coord2D{1, 2}, 3), true); + std::ostringstream oss; + oss << list; + std::string expected = "{\n\t+circle[(1, 2), r = 3]\n}"; + EXPECT_EQ(oss.str(), expected); +} + +TEST(CircleRegionListTest, MultipleElements) { + CircleRegionList list; + list.emplace_back(Circle(Coord2D(-1, 3), 5), true); + list.emplace_back(Circle(Coord2D(0, 0), 17), false); + list.emplace_back(Circle(Coord2D(10, 20), 0), true); + list.emplace_back(Circle(Coord2D(-5, -5), 0), false); + + std::ostringstream oss; + oss << list; + + std::string expected = + "{\n" + "\t+circle[(-1, 3), r = 5],\n" + "\t-circle[(0, 0), r = 17],\n" + "\t+circle[],\n" + "\t-circle[]\n" + "}"; + EXPECT_EQ(oss.str(), expected); +} + +TEST(CircleRegionListTest, VariousCombinations) { + CircleRegionList list; + + // Добавляем разные комбинации + list.emplace_back(Circle({0, 0}), true); + list.emplace_back(Circle(Coord2D(5, 5), 10), false); + list.emplace_back(Circle(Coord2D(-10, -10), 0), true); + list.emplace_back(Circle(Coord2D(100, 200), 50), true); + list.emplace_back(Circle(Coord2D(-3, 7), 2), false); + + std::ostringstream oss; + oss << list; + + std::string expected = + "{\n" + "\t+circle[(0, 0), r = 1],\n" + "\t-circle[(5, 5), r = 10],\n" + "\t+circle[],\n" + "\t+circle[(100, 200), r = 50],\n" + "\t-circle[(-3, 7), r = 2]\n" + "}"; + EXPECT_EQ(oss.str(), expected); +} + +TEST(FullTaskTest, ChainedOutput) { + { + Coord2D coord{42, -15}; + std::ostringstream oss; + oss << coord << coord; + EXPECT_EQ(oss.str(), "(42, -15)(42, -15)"); + } + { + Circle circle_one({0, 0}, 17); + Circle circle_two({10, 10}, 0); + std::ostringstream oss; + oss << circle_one << circle_two; + EXPECT_EQ(oss.str(), "circle[(0, 0), r = 17]circle[]"); + } + { + Circle circle({-5, -6}, 7); + CircleRegion region(circle, false); + std::ostringstream oss; + oss << region << region; + EXPECT_EQ(oss.str(), "-circle[(-5, -6), r = 7]-circle[(-5, -6), r = 7]"); + } + { + CircleRegionList list; + list.emplace_back(Circle(Coord2D(1, 2), 3), true); + + std::ostringstream oss; + oss << "List:\n" << list << '\n' << list << "\nEnd"; + + std::string expected = "List:\n{\n\t+circle[(1, 2), r = 3]\n}\n{\n\t+circle[(1, 2), r = 3]\n}\nEnd"; + EXPECT_EQ(oss.str(), expected); + } +} + +TEST(FullTaskTest, ConstCorrectness) { + { + const Coord2D coord{42, -15}; + std::ostringstream oss; + oss << coord << coord; + EXPECT_EQ(oss.str(), "(42, -15)(42, -15)"); + } + { + const Circle circle_one({0, 0}, 17); + const Circle circle_two({10, 10}, 0); + std::ostringstream oss; + oss << circle_one << circle_two; + EXPECT_EQ(oss.str(), "circle[(0, 0), r = 17]circle[]"); + } + { + Circle circle({-5, -6}, 7); + const CircleRegion region(circle, false); + std::ostringstream oss; + oss << region << region; + EXPECT_EQ(oss.str(), "-circle[(-5, -6), r = 7]-circle[(-5, -6), r = 7]"); + } + { + const CircleRegionList list = { std::make_pair(Circle(Coord2D(1, 2), 3), true) }; + + std::ostringstream oss; + oss << "List:\n" << list << '\n' << list << "\nEnd"; + + std::string expected = "List:\n{\n\t+circle[(1, 2), r = 3]\n}\n{\n\t+circle[(1, 2), r = 3]\n}\nEnd"; + EXPECT_EQ(oss.str(), expected); + } +} + +class StandardOutputCaptureTest : public ::testing::Test { +protected: + void SetUp() override { + origin_cout = std::cout.rdbuf(buffer.rdbuf()); + } + + void TearDown() override { + std::cout.rdbuf(origin_cout); + } + + std::string GetOutput() { + return buffer.str(); + } + + void ClearOutput() { + buffer.str(""); + } + + std::stringstream buffer; + std::streambuf* origin_cout; +}; + +TEST_F(StandardOutputCaptureTest, WorkWithCout) { + { + Coord2D coord{42, -15}; + EXPECT_NO_THROW(std::cout << coord); + EXPECT_EQ(GetOutput(), "(42, -15)"); + } + ClearOutput(); + { + Circle circle_one({0, 0}, 17); + Circle circle_two({10, 10}, 0); + EXPECT_NO_THROW(std::cout << circle_one << circle_two); + EXPECT_EQ(GetOutput(), "circle[(0, 0), r = 17]circle[]"); + } + ClearOutput(); + { + Circle circle({-5, -6}, 7); + CircleRegion region(circle, false); + EXPECT_NO_THROW(std::cout << region); + EXPECT_EQ(GetOutput(), "-circle[(-5, -6), r = 7]"); + } + ClearOutput(); + { + CircleRegionList list; + list.emplace_back(Circle(Coord2D(1, 2), 3), true); + EXPECT_NO_THROW(std::cout << "List:\n" << list << '\n' << list << "\nEnd"); + std::string expected = "List:\n{\n\t+circle[(1, 2), r = 3]\n}\n{\n\t+circle[(1, 2), r = 3]\n}\nEnd"; + EXPECT_EQ(GetOutput(), expected); + } +} \ No newline at end of file diff --git a/03_week/tasks/range/CMakeLists.txt b/03_week/tasks/range/CMakeLists.txt new file mode 100644 index 00000000..650a0654 --- /dev/null +++ b/03_week/tasks/range/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_range test.cpp) \ No newline at end of file diff --git a/03_week/tasks/range/README.md b/03_week/tasks/range/README.md new file mode 100644 index 00000000..4fb3ccad --- /dev/null +++ b/03_week/tasks/range/README.md @@ -0,0 +1,11 @@ +# Диапазон элементов + +Необходимо реализовать функцию `Range`, которая принимает на вход значение +начала диапазона, конца диапазона, шаг, и возвращает вектор `std::vector` +значений из диапазона `[from, to)` с шагом `step`. Шаг по умолчанию равен 1. + +## Примечание + +- Запрещено использовать функции из `` +- Рекомендуется избежать реалокаций памяти, то есть выделить память под нужное + количество элементов заранее \ No newline at end of file diff --git a/03_week/tasks/range/range.cpp b/03_week/tasks/range/range.cpp new file mode 100644 index 00000000..d2085495 --- /dev/null +++ b/03_week/tasks/range/range.cpp @@ -0,0 +1,7 @@ +#include +#include + + +std::vector Range(int from, int to, int step) { + throw std::runtime_error{"Not implemented"}; +} diff --git a/03_week/tasks/range/test.cpp b/03_week/tasks/range/test.cpp new file mode 100644 index 00000000..1b680b90 --- /dev/null +++ b/03_week/tasks/range/test.cpp @@ -0,0 +1,98 @@ +#include + +#include +#include + +#include "range.cpp" + +TEST(RangeTest, SimpleIncreasing) { + EXPECT_EQ(Range(1, 6, 1), std::vector({1, 2, 3, 4, 5})); + EXPECT_EQ(Range(1, 7, 2), std::vector({1, 3, 5})); + EXPECT_EQ(Range(-20, 10, 10), std::vector({-20, -10, 0})); +} + +TEST(RangeTest, SimpleDecreasing) { + EXPECT_EQ(Range(6, 1, -1), std::vector({6, 5, 4, 3, 2})); + EXPECT_EQ(Range(7, 1, -2), std::vector({7, 5, 3})); + EXPECT_EQ(Range(20, 18, -3), std::vector({20})); + EXPECT_EQ(Range(-20, -24, -3), std::vector({-20, -23})); +} + +TEST(RangeTest, EmptyRanges) { + EXPECT_TRUE(Range(0, 0, 2).empty()); + EXPECT_TRUE(Range(7, 7, 1).empty()); + EXPECT_TRUE(Range(20, 20, -2).empty()); + EXPECT_TRUE(Range(-5, -5, -2).empty()); + EXPECT_TRUE(Range(-7, -7, 1).empty()); +} + +TEST(RangeTest, InvalidParameters) { + EXPECT_TRUE(Range(1, 7, -1).empty()); + EXPECT_TRUE(Range(3, 7, 0).empty()); + EXPECT_TRUE(Range(2, -2, 2).empty()); + EXPECT_TRUE(Range(3, -7, 0).empty()); + EXPECT_TRUE(Range(-2, -3, 2).empty()); +} + +TEST(RangeTest, SingleElement) { + EXPECT_EQ(Range(7, 8, 1), std::vector({7})); + EXPECT_EQ(Range(7, 8, 2), std::vector({7})); + EXPECT_EQ(Range(7, 8, 100), std::vector({7})); + + EXPECT_EQ(Range(5, 4, -1), std::vector({5})); + EXPECT_EQ(Range(5, 4, -2), std::vector({5})); + EXPECT_EQ(Range(5, 4, -100), std::vector({5})); + + EXPECT_EQ(Range(-7, 8, 100), std::vector({-7})); + EXPECT_EQ(Range(-7, -8, -100), std::vector({-7})); +} + +TEST(RangeTest, NegativeNumbers) { + EXPECT_EQ(Range(-5, 0, 1), std::vector({-5, -4, -3, -2, -1})); + EXPECT_EQ(Range(-5, 5, 2), std::vector({-5, -3, -1, 1, 3})); + EXPECT_EQ(Range(0, -5, -1), std::vector({0, -1, -2, -3, -4})); + EXPECT_EQ(Range(0, -10, -3), std::vector({0, -3, -6, -9})); +} + +TEST(RangeTest, LargeStep) { + EXPECT_EQ(Range(0, 100, 33), std::vector({0, 33, 66, 99})); + EXPECT_EQ(Range(100, 0, -33), std::vector({100, 67, 34, 1})); +} + +TEST(RangeTest, DefaultStep) { + EXPECT_EQ(Range(0, 5), std::vector({0, 1, 2, 3, 4})); + EXPECT_EQ(Range(-2, 3), std::vector({-2, -1, 0, 1, 2})); + EXPECT_TRUE(Range(5, 5).empty()); + EXPECT_TRUE(Range(5, 3).empty()); +} + +TEST(RangeTest, CapacityMatchesSize) { + auto result = Range(0, 100, 3); + EXPECT_EQ(result.capacity(), result.size()); +} + +TEST(RangePerformanceTest, LargeRange) { + const int from = -1'000'000; + const int to = 1'000'000; + + auto result_asc = Range(from, to); + EXPECT_EQ(result_asc.size(), to - from); + EXPECT_EQ(result_asc.front(), from); + EXPECT_EQ(result_asc.back(), to - 1); + + for (size_t i = 0; i < result_asc.size(); ++i) { + EXPECT_EQ(result_asc[i], from + static_cast(i)); + } + + auto result_desc = Range(to - 1, from - 1, -1); + EXPECT_EQ(result_desc.size(), to - from); + EXPECT_EQ(result_desc.front(), to - 1); + EXPECT_EQ(result_desc.back(), from); + + for (size_t i = 0; i < result_asc.size(); ++i) { + EXPECT_EQ(result_desc[i], to - 1 - static_cast(i)); + } + + EXPECT_GE(result_asc.capacity(), result_asc.size()); + EXPECT_GE(result_desc.capacity(), result_desc.size()); +} \ No newline at end of file diff --git a/03_week/tasks/unique/CMakeLists.txt b/03_week/tasks/unique/CMakeLists.txt new file mode 100644 index 00000000..3920144d --- /dev/null +++ b/03_week/tasks/unique/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_unique test.cpp) \ No newline at end of file diff --git a/03_week/tasks/unique/README.md b/03_week/tasks/unique/README.md new file mode 100644 index 00000000..5f5c253e --- /dev/null +++ b/03_week/tasks/unique/README.md @@ -0,0 +1,11 @@ +# Уникальные элементы + +Необходимо реализовать функцию `Unique`, которая принимает отсортированный +вектор `std::vector` и возвращает вектор уникальных элементов в исходном +порядке. + +## Примечание + +- Запрещено использовать функции из `` +- Рекомендуется избегать частых реалокаций памяти +- Вместимость вектора должна соответствовать количеству элементов \ No newline at end of file diff --git a/03_week/tasks/unique/test.cpp b/03_week/tasks/unique/test.cpp new file mode 100644 index 00000000..6c459abd --- /dev/null +++ b/03_week/tasks/unique/test.cpp @@ -0,0 +1,92 @@ +#include + +#include +#include +#include + +#include "unique.cpp" + +TEST(UniqueTest, EmptyVector) { + std::vector empty; + auto result = Unique(empty); + EXPECT_TRUE(result.empty()); + EXPECT_EQ(result.capacity(), result.size()); +} + +TEST(UniqueTest, SingleElement) { + std::vector vec = {42}; + auto result = Unique(vec); + EXPECT_EQ(result.size(), 1); + EXPECT_EQ(result[0], 42); +} + +TEST(UniqueTest, AllSameElements) { + std::vector vec = {1, 1, 1, 1, 1}; + auto result = Unique(vec); + EXPECT_EQ(result.size(), 1); + EXPECT_EQ(result[0], 1); +} + +TEST(UniqueTest, AlreadyUniqueSorted) { + std::vector vec = {1, 2, 3, 4, 5}; + auto result = Unique(vec); + EXPECT_EQ(result.size(), 5); + EXPECT_EQ(result, vec); +} + +TEST(UniqueTest, SimpleDuplicates) { + std::vector vec = {1, 2, 2, 3, 3, 3}; + auto result = Unique(vec); + std::vector expected = {1, 2, 3}; + EXPECT_EQ(result, expected); +} + +TEST(UniqueTest, MultipleDuplicates) { + std::vector vec = {1, 1, 2, 2, 2, 3, 3, 4, 5, 5, 5, 5}; + auto result = Unique(vec); + std::vector expected = {1, 2, 3, 4, 5}; + EXPECT_EQ(result, expected); +} + +TEST(UniqueTest, NegativeNumbers) { + std::vector vec = {-5, -5, -3, -3, -3, 0, 0, 2, 2, 2, 2}; + auto result = Unique(vec); + std::vector expected = {-5, -3, 0, 2}; + EXPECT_EQ(result, expected); +} + +TEST(UniqueTest, ZeroAndDuplicates) { + std::vector vec = {0, 0, 0, 0}; + auto result = Unique(vec); + std::vector expected = {0}; + EXPECT_EQ(result, expected); +} + +TEST(UniqueTest, RandomSortedData) { + std::mt19937 gen(18); + std::uniform_int_distribution dist(-1000, 1000); + + const size_t N = 1'000'000; + std::vector vec(N); + + for (size_t i = 0; i < N; ++i) { + vec[i] = dist(gen); + } + std::sort(vec.begin(), vec.end()); + std::vector expected = vec; + auto last = std::unique(expected.begin(), expected.end()); + expected.erase(last, expected.end()); + + auto result = Unique(vec); + + EXPECT_EQ(result.size(), expected.size()); + EXPECT_EQ(result.size(), result.capacity()); + EXPECT_EQ(result, expected); +} + +TEST(UniqueTest, ConstCorrectness) { + const std::vector vec = {1, 2, 2, 3, 3, 3}; + auto result = Unique(vec); + std::vector expected = {1, 2, 3}; + EXPECT_EQ(result, expected); +} \ No newline at end of file diff --git a/03_week/tasks/unique/unique.cpp b/03_week/tasks/unique/unique.cpp new file mode 100644 index 00000000..9d2545bb --- /dev/null +++ b/03_week/tasks/unique/unique.cpp @@ -0,0 +1,6 @@ +#include +#include + +/* return_type */ Unique(/* args */) { + throw std::runtime_error{"Not implemented"}; +} diff --git a/grading/deadlines.json b/grading/deadlines.json index 7c07c7e8..ac7682be 100644 --- a/grading/deadlines.json +++ b/grading/deadlines.json @@ -64,5 +64,51 @@ "max_score": 200, "deadline": "2025-12-09 23:59", "description": "Форматированный вывод массива" + }, + + "data_stats": { + "max_score": 100, + "deadline": "2025-12-18 23:59", + "description": "Статистика данных" + }, + "unique": { + "max_score": 100, + "deadline": "2025-12-18 23:59", + "description": "Уникальные элементы" + }, + "range": { + "max_score": 100, + "deadline": "2025-12-18 23:59", + "description": "Диапазон элементов" + }, + "minmax": { + "max_score": 100, + "deadline": "2025-12-18 23:59", + "description": "Минимум и максимум" + }, + "find_all": { + "max_score": 100, + "deadline": "2025-12-18 23:59", + "description": "Найти все элементы" + }, + "os_overload": { + "max_score": 100, + "deadline": "2025-12-18 23:59", + "description": "Перегрузка оператора вывода" + }, + "easy_compare": { + "max_score": 100, + "deadline": "2025-12-18 23:59", + "description": "Оператор сравнения" + }, + "filter": { + "max_score": 100, + "deadline": "2025-12-18 23:59", + "description": "Фильтрация данных" + }, + "enum_operators": { + "max_score": 200, + "deadline": "2025-12-18 23:59", + "description": "Переопределение побитовых операторов" } } \ No newline at end of file From 001681fe0410717739af16d8e654de7657553d26 Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Tue, 16 Dec 2025 14:57:09 +0500 Subject: [PATCH 23/40] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20find=5Fall?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 03_week/tasks/find_all/find_all.cpp | 32 ++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/03_week/tasks/find_all/find_all.cpp b/03_week/tasks/find_all/find_all.cpp index 74f393b2..7b889847 100644 --- a/03_week/tasks/find_all/find_all.cpp +++ b/03_week/tasks/find_all/find_all.cpp @@ -1,6 +1,32 @@ #include +#include +/* +Функция принимает на вход std::vector и указатель на функцию-предикат +Возвращает контейнер позиций всех элементов, удовлетворяющих предикату. +Нельзя алгоритмы +//Люблю я всё-таки эти псевдонимы. Как в одном из прошлых заданий, будет также добавлено кастомное название для типа функции. +// Тесты хотят чтобы вернулся std::vector +// Воспользуемся методом .shrink_to_fit(); для подгона размера вектора и то что там находится. +// В одной из прошлых задач было реализовано два прогона цикла, сначала проходимся и определяем размер, а только потом заполняем +// Оказывается есть вкусный метод, который сделает это в одну строчку, но опять же, скорее всего это более затратно. Так как происходит полная переаллокация +// Сейчас нам не особо важно это, но когда будет огромное кол-во элементов там то уже наверно и скажется на скорости +// Но цель то обучиться, поэтому надо все попробовать)) +*/ - -/* return_type */ FindAll(/* args */) { - throw std::runtime_error{"Not implemented"}; +using PredicatePtr = bool(*)(int); +std::vector FindAll(const std::vector& wetArray, PredicatePtr predicateFunc) +{ + if (!predicateFunc) return {}; + + std::vector result; + result.reserve(wetArray.size()); + + for (size_t i = 0; i < wetArray.size(); ++i) { + if (predicateFunc(wetArray[i])) { + result.push_back(i); + } + } + result.shrink_to_fit(); + + return result; } \ No newline at end of file From 07e7342ba9b07d5020701af2fc0ec098dff3a850 Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Tue, 16 Dec 2025 14:57:48 +0500 Subject: [PATCH 24/40] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20data=5Fstats?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 03_week/tasks/data_stats/data_stats.cpp | 33 ++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/03_week/tasks/data_stats/data_stats.cpp b/03_week/tasks/data_stats/data_stats.cpp index b941c211..ecb0351c 100644 --- a/03_week/tasks/data_stats/data_stats.cpp +++ b/03_week/tasks/data_stats/data_stats.cpp @@ -1,11 +1,36 @@ #include +#include +#include +/* +Функция принимает на вход контейнер int, а возвращает структуру DataStats, в которой есть среднее отклонение average и стандарт отклонение standard deviation +Нельзя алгоритмы +Лучше решить в один проход +//Под корнем среднего отклонения не должно быть отрицательных чисел. Есть такая штука как std::max. Он сравнивает два аргумента и выдает наибольшой. +*/ - -struct DataStats { +struct DataStats { double avg = 0.0; double sd = 0.0; }; -/* return_type */ CalculateDataStats(/* args */) { - throw std::runtime_error{"Not implemented"}; +DataStats CalculateDataStats(const std::vector& Nums) { + DataStats resultOfMeasure; + size_t sizeNum = Nums.size(); + + if (sizeNum == 0) return DataStats{}; + + double sum = 0.0; + double sumSquares = 0.0; + + for (size_t i = 0; i < sizeNum; ++i) { + sum += Nums[i]; + sumSquares += static_cast(Nums[i]) * Nums[i]; + } + + resultOfMeasure.avg = sum / sizeNum; + double deviation = (sumSquares / sizeNum) - (resultOfMeasure.avg * resultOfMeasure.avg); + resultOfMeasure.sd = sqrt(std::max(deviation, 0.0)); + + return resultOfMeasure; + } From 595104375e8b611fba808f3f418e8fdc6f3a2f19 Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Tue, 16 Dec 2025 14:58:33 +0500 Subject: [PATCH 25/40] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20minmax?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 03_week/tasks/minmax/minmax.cpp | 37 +++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/03_week/tasks/minmax/minmax.cpp b/03_week/tasks/minmax/minmax.cpp index c2869799..ad62ffa0 100644 --- a/03_week/tasks/minmax/minmax.cpp +++ b/03_week/tasks/minmax/minmax.cpp @@ -1,6 +1,39 @@ #include +#include +/* +Функция должна найти максимальное и минимальное число в переданном ей std::vector. +1.Вернуть должна пару итераторов, указывающих на миминмал и максимал элементы +2.Нельзя алгоритмы +3.Надо найти максимал и минимал элемент за один проход +4.для пустого контейнера необходимо вернуть пару итераторов на конец контейнера. +5.В случае нескольких одинаковых элементов, итератор на минимум должен указывать + на первое вхождение, итератор на максимум на последнее вхождение соответствующих + элементов +// Спустя несколько попыток решить задачу, наконец дошло что обычная структура не подойдет, надо бы использовать std::pair как возвращаемое значение +// Думаю никто не обидется если длинное некрасивое нечто в возвращаемом значении заменю одной фразой, так приятнее. +// Хотя наверно можно было просто написать auto в возвр. значении, но мне не нравится эта непонятная штука, не очевидная. +//Итераторы ведут себя примерно также как указатели, но они могут быть и не указателями, а хоть чем. Это абстракция некая над указателем, если можно так сказать +*/ -/* return_type */ MinMax(/* args */) { - throw std::runtime_error{"Not implemented"}; +using IteratorsPairReturn = std::pair::const_iterator,std::vector::const_iterator> ; + +IteratorsPairReturn MinMax(const std::vector& wetArray) +{ + if (wetArray.empty() == true) return {wetArray.end(), wetArray.end()}; + + //оба итератора на .begin потому что если вектор не пустой, первый элемент одновременно является и текущим минимумом, и текущим максимумом. По сути + auto minIt = wetArray.begin(); + auto maxIt = wetArray.begin(); + //Тогда начинаем итерироваться с +1 значения, тк первый это и есть и минимум и максимум, до тех пор пока его не изменим + for (auto iter = wetArray.begin() + 1; iter != wetArray.end(); ++iter) { + if (*iter < *minIt) { + minIt = iter; + } + else if (*iter >= *maxIt) { + maxIt = iter; + } + } + + return std::make_pair(minIt, maxIt); } From 3b2bae5348339d8e69221943a12700df9257061a Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Tue, 16 Dec 2025 14:59:09 +0500 Subject: [PATCH 26/40] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20range?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 03_week/tasks/range/range.cpp | 39 +++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/03_week/tasks/range/range.cpp b/03_week/tasks/range/range.cpp index d2085495..75b5fe40 100644 --- a/03_week/tasks/range/range.cpp +++ b/03_week/tasks/range/range.cpp @@ -1,7 +1,42 @@ #include #include +/* +Функция принимает значение начала и конца диапазона и шаг +Возвращает вектор std::vector из значений с опред шагом +По умолчанию шаг = 1 +[from, to) +Нельзя алгоритмы +Если выделять память, то под нужное количество элементов заранее +//Отрациательный шаг тоже шаг +*/ -std::vector Range(int from, int to, int step) { - throw std::runtime_error{"Not implemented"}; +std::vector Range(int from, int to, int step = 1) +{ + if (step == 0) return {}; + int countSteps = 0; + + if (step > 0 && from < to) { + countSteps = (to - from + step - 1) / step; + } + else if (step < 0 && from > to) { + countSteps = (from - to - step - 1) / (-step); + } + + if (countSteps <= 0) return {}; + + std::vector rangedArray = {}; + rangedArray.reserve(countSteps); + + if (step > 0) { + for (int i = from; i < to; i += step) { + rangedArray.push_back(i); + } + } else { + for (int i = from; i > to; i += step) { + rangedArray.push_back(i); + } + } + + return rangedArray; } From b16ec35022bbae06c238249f2bb6dc1490e48816 Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Tue, 16 Dec 2025 14:59:51 +0500 Subject: [PATCH 27/40] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20unique?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 03_week/tasks/unique/unique.cpp | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/03_week/tasks/unique/unique.cpp b/03_week/tasks/unique/unique.cpp index 9d2545bb..678a809e 100644 --- a/03_week/tasks/unique/unique.cpp +++ b/03_week/tasks/unique/unique.cpp @@ -1,6 +1,34 @@ #include #include +/* +Функция принимает отсортированный вектор std::vector и возвращает уникальные элементы в порядке их встречи (то есть массив тоже будет, из тестов вижу целочисленный) +Нельзя алгоритмы +Не надо частых аллокаций +Вместимость сделать соответствующей кол-ву элементов +//Вообще можно использовать std::unique и тогда можно сделать код в раазыыы короче, но я не понимаю насколько это оправданно. Насколько этот std:unique эффективен +Написал без него, мне кажется моя версия должна быть эффективнее по памяти так как unique более тяжелая и мощная вещь. +*/ -/* return_type */ Unique(/* args */) { - throw std::runtime_error{"Not implemented"}; +std::vector Unique(const std::vector& inputArray) { + size_t size = inputArray.size(); + if (size == 0) return {}; + + size_t uniqueCount = 1; + for (size_t i = 1; i < size; ++i) { + if (inputArray[i] != inputArray[i-1]) { + ++uniqueCount; + } + } + + std::vector outputArray; + outputArray.reserve(uniqueCount); + + outputArray.push_back(inputArray[0]); + for (size_t i = 1; i < size; ++i) { + if (inputArray[i] != inputArray[i-1]) { + outputArray.push_back(inputArray[i]); + } + } + + return outputArray; } From 2ea8c4e1987a4e75068235e1edad1087bd2ad810 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 15 Dec 2025 17:34:11 +0000 Subject: [PATCH 28/40] Auto-sync: 2025-12-15 17:34 --- 03_week/tasks/minmax/test.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/03_week/tasks/minmax/test.cpp b/03_week/tasks/minmax/test.cpp index 70e1cb68..03a4bf0a 100644 --- a/03_week/tasks/minmax/test.cpp +++ b/03_week/tasks/minmax/test.cpp @@ -33,8 +33,8 @@ TEST(MinMaxTest, AllEqualElements) { std::vector vec = {5, 5, 5, 5, 5}; auto [min_it, max_it] = MinMax(vec); - EXPECT_NE(min_it, vec.begin()); - EXPECT_NE(max_it, vec.end() - 1); + EXPECT_EQ(min_it, vec.begin()); + EXPECT_EQ(max_it, vec.end() - 1); EXPECT_EQ(*min_it, 5); EXPECT_EQ(*max_it, 5); } From dc2f0aea4b880f979b2b65423c64f29d85fd66ba Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Tue, 16 Dec 2025 15:22:29 +0500 Subject: [PATCH 29/40] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BB=D0=B8=D1=88=D0=BD=D1=8F=D1=8F=20=D0=BD=D0=B5?= =?UTF-8?q?=D0=B4=D0=B5=D0=BB=D1=8F(4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 04_week/04_class.md | 902 ----------------------------------------- 04_week/04_class.pdf | Bin 251118 -> 0 bytes 04_week/CMakeLists.txt | 15 - 3 files changed, 917 deletions(-) delete mode 100644 04_week/04_class.md delete mode 100644 04_week/04_class.pdf delete mode 100644 04_week/CMakeLists.txt diff --git a/04_week/04_class.md b/04_week/04_class.md deleted file mode 100644 index 46e00076..00000000 --- a/04_week/04_class.md +++ /dev/null @@ -1,902 +0,0 @@ -# Лекция 4. ООП. Класс - -1. [ООП](#oop) - - [Инкапсуляция](#encapsulation) - - [Наследование](#inheritance) - - [Полиморфизм](#polymorphism) - - [Абстракция](#abstraction) -1. [Класс](#class) - - [Спецификаторы доступа](#access_specifiers) - - [Отличие класса и структуры](#class_struct_diff) - - [Пустой класс](#class_empty) - - [Поля класса](#class_fields) - - [Инициализация полей значением по умолчанию](#field_default_init) - - [Конструктор](#ctor) - - [Список инициализации полей класса](#member_initializer_list) - - [Параметризованный конструктор](#parameterized_ctor) - - [Конструктор по умолчанию](#default_ctor) - - [Конструктор копирования](#copy_ctor) - - [Указатель на себя `this`](#this_ptr) - - [Копирующий оператор присваивания](#copy_assignment) - - [Деструктор](#dtor) - - [Конструктор преобразования](#converting_ctor) - - [Ключевое слово `explicit`](#explicit) - - [Конструктор от `std::initializer_list`(_C++11_)](#ctor_std_initializer_list) - - [Делегирующий конструктор (_C++11_)](#delegating_ctor) - - [Ключевое слово `default` (_С++11_)](#keyword_default) - - [Ключевое слово `delete` (_С++11_)](#keyword_delete) - - [Методы](#methods) - - [Определение методов вне класса](#methods_definition_outside) - - [CV-квалификация методов ](#cv_for_methods) - - [Оператор преобразования](#conversion_operator) - - [Перегрузка операторов внутри класса](#class_operator_overloading_inside) - - [Перегрузка операторов вне класса](#class_operator_overloading_outside) - - [Ключевое слово `friend`](#keyword_friend) - - [Ключевое слово `mutable`](#keyword_mutable) - - -## ООП - -Объектно-ориентированное программирование - парадигма программирования, которая -основывается на представление в коде программы различных объектов, взаимодействующих -друг с другом. - -Класс - пользовательский тип данных, шаблон (макет) для создания объектов и описания -их характеристик, функций. - -Объект - экземпляр класса. Объект включает данные (поля) и методы (функции). -Что позволяет хранить характеристики объекта, изменять их и взаимодействовать с -другими объектами. - -Основные принципы ООП: - -- Инкапсуляция -- Наследование -- Полиморфизм -- Абстракция - -### Инкапсуляция - -Инкапсуляция - объединение данных и методов для работы с данными внутри класса. -Сокрытие деталей реализации класса. - -```c++ -class Budget { -public: - void increase_balance(double value) { - budget_ += value; - } -private: - double budget_; -}; -``` - -### Наследование - -Наследование - механизм создания новых классов на основе существующих. Позволяет -строить иерархию классов и переиспользовать код классов родителей внутри -классов наследников. - -```c++ -class Animal { /* common data */}; -class Cat : public Animal {}; -class Dog : public Animal {}; -``` - -### Полиморфизм - -Полиморфизм - возможность различного поведения сущностей C++. - -Виды полиморфизма: - -- статический (на этапе компиляции, шаблоны, перегрузка функций) -- динамический (во время выполнения программы, виртуальные методы) - -```c++ -class Shape { -public: - virtual void draw() = 0; -}; -class Circle : public Shape { - void draw() override { /* рисуем круг */ } -}; -``` - -### Абстракция - -Абстракция - упрощение сложных вещей через выделение основных характеристик. - -## Класс - -Класс - пользовательский тип данных, который объединяет в себе данные (поля класса) -и функции для работы с данными (методы класса), представляет собой макет для -создания объектов (экземпляров) данного типа. - -Синтаксис: `class {};` - -- `` - имя класса, пользовательского типа данных -- `` - тело класса, включающее поля, методы, конструкторы и деструктор - -### Спецификаторы доступа - -Для ограничения видимости полей и методов внутри класса используются -спецификаторы доступа, весь код после спецификатора имеет соответствующий тип -доступа: - -- `public` - публичный доступ, поле или метод класса доступны извне -- `protected` - защищенный доступ, поля и методы доступны наследникам класса - и внутри класса -- `private` - приватный доступ, поля и методы доступны только внутри класса. - -Синтаксис внутри класса или структуры: `:` - -Указывать спецификаторы доступа можно произвольное число раз. - -```c++ -class User { -public: - /* some data and functions for everyone */ -protected: - /* some data and functions for children classes */ -private: - /* some data and functions inside class */ -}; -``` - -Приватные поля и методы будут недоступны снаружи, то есть **НЕЛЬЗЯ** к ним -обратится или вызвать через экземляр класс, используя операторы `.`, `->`. - -Всё содержимое класса по умолчанию имеет спецификатор доступа `private`, -несмотря на это часто принято явно указывать данный спецификатор, даже при -определении полей класса в самом начале тела класса. - -### Отличие класса и структуры - -Структура `struct` и класс `class` имеют одинаковые возможности в C++. - -Отличие заключается, что содержимое структуры по умолчанию имеет публичный -доступ `public`, а содержимое класса приватный `private` - -Структура нужна для взаимодействия с `legacy` кодом на языке C, а также для -публичных классов. - -Несмотря на одинаковые возможности, принято разделять структуру и класс -семантически. Так, структуру используют только с публичными полями, а класс -с приватными. Создавать классы и структуры со смешанным типом полей не -рекомендуется, так как это может быть не очевидно и не понятно программистам, -читающим код. - -### Пустой класс - -Пустой класс имеет размер 1 байт, поскольку объект такого класса можно создать -и необходимо иметь адресс данного объекта, чтобы иметь адресс, необходимо что-то -положить в память по определенному адресу. - -Чаще используется пустая структура. Такая структура может понадобитсья в качестве -именнованного тега. Пока будем просто считать, что иногда надо. - -### Поля класса - -Поля класса представляют собой внутренние переменные произвольного типа. -К полям класса внутри класса можно обращаться по имени. В качестве поля можно -использовать указатели и ссылки. - -В случае ссылок необходимо их инициализировоать при создании объекта. Например, -можно проинициализирвоать адресом объекта из глобальной области видимости. А еще -это можно сделать в списке инициализации при конструировании объекта. - -Существуют разные стили кода к именованию полей класса. Часто встречается: - -- `m_` - добавляют `m_` в качестве префикса к перименной (`m` - `member`) -- `_` - добавляют `_` в качестве постфикса к переменной. - -```c++ -// inside class -int m_value; -int value_; -``` - -Поля класса хранятся в классе и инициализируются в порядке их объявления. - -Поля уникальны для каждого экземпляра класса. - -### Инициализация полей значением по умолчанию - -Аналогично структурам рекомендуется всегда инициализировать поля внутри класса. - -```c++ -class Time { -private: - int hour_ = 0; - int minute_{0}; // uniform -}; -``` - -Иначе в полях класса также может лежать мусор. - -### Конструктор - -Конструктор это особый метод класса, который используется для конструирования -объекта. - -Синтаксис: `() {}` - -- `` - имя конструктора должно совпадать с именем класса -- `` - аргументы конструктора. -- `` - тело конструктора. - -В зависимости от аргументов конструктора выделяют различные типы конструктора. -Основные способы конструирования объекта: - -- Параметризованный конструктор -- Конструктор по умолчанию -- Конструктор копирования -- Копирующий оператор присваивания -- Конструктор перемещения -- Перемещающий оператор присваивания - -Важно понимать, что если конструкторы не определены, то компилятор самостоятельно -сгенерирует конструкторы. Но если определен, хотя бы один конструктор, то -компилятор скорее всего этого не сделает. - -Важно понимать, что при входе в тело конструктора все поля уже проинициализированы -и в теле может происходить только присваивание новых значений полям класса. -Следовательно, в теле уже нельзя изменить константное поле или инициализировать -ссылку. - -Проинициализировать константу и ссылку можно не только значением по -умолчанию или значением (адресом) переменной из глобальной области видимости. -Для этого в синтаксисе конструктора предусмотрен список инициализации. - -### Список инициализации полей класса - -Список инициализации полей (_member initializer list_) позволяет инициализировать -поля в момент создания объекта. В списке инициализации доступны аргументы -конструктора и имена полей класса. Список инициализации указывается между сигнатурой -и телом конструктора, и выглядит как перечисление после символа `:` через запятую -полей класса и внутри `()` или `{}` их инициализирующих значений. - -Синтаксис: `() : {}` - -- `` - список инициализации = `(), {}` - -```c++ -class InitList { -public: - InitList(int val) : a_(val), b_(val), c_(val) {} -public: - int a_; int b_; int c_; -}; -``` - -Причем имена полей класса и имена параметров могут полностью совпадать, конфликта -имен не будет, поскольку компилятор понимает, что нужно инициализировать поля. - -```c++ -class InitSameName { -public: - InitSameName(int a, int b, int c) : a(a), b(b), c(c) {} -public: - int a; int b; int c; -}; -``` - -Также, следует отметить, что в качестве инициализирующего значения, может использоваться -не только переменная или константа, но также выражение (_expression_) и результат -вызова функции. - -**ВАЖНО**, что инициализация происходит в порядке полей класса, и не зависит от -порядка в списке инициализации. Поэтому важно самостоятельно отслеживать -правильный порядок инициализации. - -```c++ -class BadOrderInit { -public: - BadOrderInit(int val) : c(val), b(c + 1), a(10) {} -public: - int a; int b; int c; -}; -``` -- `c` используется неинициализированной при инициализации `b` (**UB**) - -Если поля класса объявлены со значением по умолчанию, то они будут проигнорированы -для полей в списке инициализации. - -```c++ -class BadOrderInit { -public: - BadOrderInit(int val) : c(val), b(c + 1), a(10) {} -public: - int a = 7; int b = 7; int c = 7; -}; -``` -- значение `7` будет проигнорированно, по-прежнему **UB** - -Списки инициализации могут быть неполными. Тогда недостающие поля будут -сконструированы со значениями по умолчанию, а при их отсутствии инициализируются -мусором. - -```c++ -class BadOrderInitNoAB { -public: - BadOrderInitNoAB(int val) : c(val) {} -public: - int a; int b = 7; int c = 7; -}; -``` -- в поле `b` будет значение `7`, в `a` будет мусор - -Список инициализации позволяет сконструировать константное поле и поле ссылку извне: - -```c++ -class RefConst { -public: - RefConst(int value, int& ref, const double& cref) - : id_(value), ref_(ref), const_ref_(cref) {} -private: - const int id_; - int& ref_; - const double& const_ref_; -}; -``` - -### Параметризованный конструктор - -Конструктор, который имеет параметры (аргументы) называют параметризованным -конструктором (конструктором с параметрами). Аргументов может быть несколько -и они могут иметь значения по умолчанию, Таким образом, конструктор может -быть перегружен. - -```c++ -class Time { -public: - Time(int hour, int minute, int second) - : hour_(hour), minute_(minute), second_(second) {} -private: - int hour_, minute_, second_; -}; -``` - -Если конструктор имеет у всех аргументов значение по умолчанию, то такой -конструктор перегружает конструктор по умолчанию. - -```c++ -class Time { -public: - Time(int hour = 0, int minute = 0, int second = 0) - : hour_(hour), minute_(minute), second_(second) {} -private: - int hour_, minute_, second_; -}; -``` - -Для создания объекта класса необходим вызов конструктора. Синтаксис вызова констуктора: - -```c++ -Time t1(1, 1, 1); -Time t2{1, 1, 1}; -Time t3 = {1, 1, 1} -Time t4 = Time{1, 1, 1}; -Time t5 = Time(1, 1, 1); -``` - -Аналогично для всех его вариантов перегрузки. - -### Конструктор по умолчанию - -Конструктор по умолчанию представляет собой конструктор без аргументов. -Часто для простых класов конструктор имеет пустое тело. Удобно использовать -значение по умолчанию для инициализации. - -Синтаксис: `() {}` - -Часто имеет пустое тело для тривиальных случаев. - -Если не определен ни один конструктор, то компилятор самостоятельно сгенерирует -данный конструктор. - -```c++ -class DefaultCtor { -public: - DefaultCtor() {} -private: - int value = 0; -}; -``` - -Вызов конструктора: - -```c++ -DefaultCtor obj; -DefaultCtor obj2{}; -DefaultCtor obj3 = {}; -DefaultCtor obj4 = DefaultCtor{}; -DefaultCtor obj5 = DefaultCtor(); -``` -- во всех этих случаях вызовется только конструктор по умолчанию один раз - -### Конструктор копирования - -Конструктор копирования необходим для создания копии объекта из объекта того -же типа. Представляет собой конструктор, принимающий в качестве аргументов -константную ссылку того же типа, что и сам класс. - -Синтаксис: `(const & ) {}` - -```c++ -class Time { -public: - Time(const Time& other) - : hour_(other.hour_), minute_(other.minute_), second_(other.second_) {} -private: - int hour_, minute_, second_; -}; -``` - -Поля другого объекта того же класса доступны внутри методов класса даже если они -приватные. - -Вызывается конструктор копирования: - -- при передаче в функцию по значению -- при возврате объекта соответствующего значения по значению -- при конструировании одного объекта из другого - -```c++ -Time t; -Time t1 = t; // copy ctor -Time t2(t); // copy ctor -Time t3{t}; // copy ctor -``` - -### Указатель на себя `this` - -Внутри класса, в методах, в том числе конструкторах, можно получить указатель на -себя (объект класса, который вызывает данный метод) с помощью ключевого слова `this`. - -Можно использовать `this`, как в качестве значения по умолчанию, так и в списке -инициализации. - -```c++ -class Self { -public: - Self() : self(this) {}; - Self* GetPtr() { return self; } - Self& GetRef() { return *this; } -private: - Self* self = this; -}; -``` - -Можно считать что указатель на себя передается первым неявным аргументом в конструкторы, -методы и операторы класса. - -Через указатель можно явно обращаться к полям класса, но как правило, так не делают - -```c++ -// inside methods -this->self; -``` - -### Копирующий оператор присваивания - -Оператор присвания необходим при присваивании одного созданного объекта другому. -Если один из объектов не создан, то он не будет вызываться, а будет вызываться -конструктор копирования, даже если в инструкции есть `=`. - -Как правило, оператор возвращает ссылку на себя (экземпляр текущего класса), что -позволяет испоьзовать цепочку из операторов `=`. Для этого необходимо вернуть из -оператора разыменованный указатель на себя `return *this;`. - -Синтаксис: `& operator=(const & ) {}` - -Поскольку язык не запрещает присвоить объект самому себе, как правило, в копирующем -операторе присваивания выполняют проверку на самоприсваивание. Особенно это -критично для классов владеющих ресурсами (выделяющих память), что может привести -к **UB** - -```c++ -class Time { -public: - Time& operator=(const Time& other) { - if (this == &other) { - return *this; - } - hour_ = other.hour_; - minute_ = other.minute_; - second_ = other.second_; - return *this; - } -private: - int hour_, minute_, second_; -}; -``` - -Вызов оператора: - -```c++ -Time t1, t2, t3; -t1 = t2; // copy assignment -t1 = t1; // copy assignment -t1 = t2 = t3; // copy assignment -auto t4 = t1; // copy ctor (not a copy assignment!) -``` - -### Деструктор - -Особый метод, вызываемый перед разрушением объекта, когда заканчивается время -жизни объекта. - -Синтаксис: `~() {}` - -Если в конструкторе выполнялось ручное выделение ресурсов, то в деструкторе -необходимо обязательно освободить ресурсы. Иначе деструктор остается тривиальным -и генерируется компилятором по умолчанию. - -Деструкторы вызываются в обратном порядке по отношению к конструируемым объектам -при выходе из области видимости. Последний сконструированный объект, будет разрушен -первым. - -### Конструктор преобразования - -Конструктором преобразования называется конструктор, принимающий один аргумент -другого произвольного типа. Данный конструктор разрешает неявное преобразование -из указанного типа в тип класса. - -```c++ -class Integer { -private: - int value; -public: - Integer(int v) : value(v) {} - Integer(char c) : value(static_cast(c)) {} -}; -``` - -Таким образом, если функция принимает пользовательский класс, а класс имеет -конструктор преобразования от другого типа, то в функцию можно передать -непосредственно этот другой тип, произойдет неявное преобразование с помощью -соответствующего конструктора: - -```c++ -int DoSomething(Integer i) {} - -int main() { - Integer i{3}; - int value = 5; - char c = 'I'; - DoSomething(i); // OK - DoSomething(value); // OK - DoSomething(5); // OK - DoSomething(c); // OK - DoSomething('i'); // OK -} -``` - -**ВАЖНО** понимать, что при наличии конструктора присваивания из другого типа, -компилятор **НЕ** будет генеировать оператор присваивания из данного типа, его -необходимо определять самостоятельно. - -### Ключевое слово `explicit` - -Ключевое слово `explicit` используется как спецификатор перед именем конструктора -и позволяет запретить неявное преобразование и сообщает компилятору, что данный -конструктор можно вызывать только явно. - -```c++ -class Integer { -private: - int value; -public: - Integer(int v) : value(v) {} - Integer(char c) : value(static_cast(c)) {} - explicit Integer(double d) : value(static_cast(d)) {} -}; -``` - -Неявно такой конструктор вызвать нельзя: - -```c++ -//Integer i2 = 3.14; // compile error -Integer i3 = Integer{3.14}; // OK - -int DoSomething(Integer i) {} - -int main() { - double d = 3.14; - //DoSomething(d); // compile error - //DoSomething(3.14); // compile error - DoSomething(Integer{3.14}); // OK - DoSomething(Integer(3.14)); // OK -} -``` - -Также спецификатор `explicit` можно использовать с оператором преобразования, об этом -после знакомства с методами. - -### Конструктор от `std::initializer_list`(_C++11_) - -В C++11 появился контейнер список инициализации `std::initializer_list`, который -позволяет инициализировать класс набором элементов. Что вызывает неоднозначность -при наличии параметризированных конструкторов какой конструктор вызывать. - -Конструктор по умолчанию имеет приоритет перед конструктором от списка инициализации. - -Список инициализации имеет приоритет перед параметризированными конструкторами при -использовании `{}`. - -```c++ -class Vector { -public: - Vector() {}; - Vector(size_t count); - Vector(int a, int b); - Vector(std::initializer_list list); -private: - std::vector data; -}; -``` - -Вызов конструкторов: - -```c++ -Vector v = {1, 2, 3, 4, 5}; // ctor std::initializer_list -Vector v2{1, 2, 3}; // ctor std::initializer_list -Vector v3(10); // ctor Vector(size_t) -Vector v4{10}; // ctor std::initializer_list -Vector v5 = {10}; // ctor std::initializer_list -Vector v6(10, 20); // ctor Vector(int a, int b) -Vector v7{10, 20}; // ctor std::initializer_list -Vector v8 = {10, 20}; // ctor std::initializer_list -Vector v9 = 10; // ctor Vector(size_t) implicit cast -Vector v10; // default ctor -Vector v11{}; // default ctor -Vector v12 = {}; // default ctor -``` - -### Делегирующий конструктор (_C++11_) - -Делегирующий конструктор - конструктор, который на месте списка инициализации -использует другой конструктор данного класса. В таком случае можно указать только -один целевой конструктор, дополнительно списки инициализации указать нельзя. - -```c++ -class Time { -public: - Time(int hour, int minute, int second) - : hour_(hour), minute_(minute), second_(second) {} - Time(int hour) : Time(hour, 0, 0) {} -private: - int hour_, minute_, second_; -}; -``` - -Делегирующий конструктор **НЕ** может быть рекурсивным. - -### Ключевое слово `default` (_С++11_) - -С помощью ключевого слова `default` можно явно попросить компилятор сгенерировать -конструктор (деструктор), указав после сигнатуры `= default`. Это более выразительно, -чем писать `{}` для конструктора по умолчанию. Рекомендуется к использованию. - -```c++ -class Value { -public: - Value(int x) : x_(x) {} - Value() = default; - Value(const Value& other) = default; - Value(Value&& other) = default; - Value& operator=(const Value& other) = default; - Value& operator=(Value&& other) = default; - ~Value() = default; -private: - int x = 0; -}; -``` - -### Ключевое слово `delete` (_С++11_) - -С помощью ключевого слова `delete` можно явно попросить компилятор удалить функцию -(запретить её использование), указав после сигнатуры `= delete`. Это более выразительно, -чем прятать конструкторы в приватную область класса. Рекомендуется к использованию. - -Можно использовать не только для конструкторов, деструкторов, но и для любых методов, -операторов, шаблонных функций, функций вне классов. - -```c++ -class Value { -public: - Value(int x) : x_(x) {} - Value() = delete; - Value(const Value&) = delete; - Value& operator=(const Value&) = delete; -private: - int x = 0; -}; -``` - -Например, если класс не подразумевает сравнения на равенство или других операторов -можно явно указать для них `delete`. - -### Методы - -Внутри класса можно определять функции, которые могут работать с полями класса, в том -числе закрытыми. Данные функции называются методы. - -Синтаксис аналогичен определению обычным функциям. - -Публичный метод можно вызвать через операторы `.` для экземпляра и `->` для указателяю. - -Приватные методы, можно вызывать внутри класса. - -Можно вызывать методы в списках инициализации. Например, метод, который будет -контролировать допустимость значения или выполнять дополнительные преобразования. - -### Определение методов вне класса - -Методы можно объявить внутри класса, а определить снаружи класса. Содержимое -класса имеет свою область видимости. Для определения снаружи класса перед именем -конструктора, метода, оператора используется имя класса и оператор разрешения области -видимости `::` - -```c++ -class Time { -public: - Time(); - Time(int hours, int minutes, int seconds = 0); - int GetHours(); - void SetHours(int hours); -private: - int hours_ = 0; - int minutes_ = 0; - int seconds_ = 0; -}; - -Time::Time() = default; -Time::Time(int hours, int minutes, int seconds) - : hours_(hours), minutes_(minutes), seconds_(seconds) {} - -int Time::GetHours() { return hours; } -void Time::SetHours(int hours) { hours_ += hours; } -``` - -Аргументы методов, имеющие значения по умолчанию указываются только при объявлении, -при определении нельзя указать значения по умолчанию - -### CV-квалификация методов - -Методы могут иметь CV-квалификацию. Методы, которые не изменяют полей класса, а только -предоставляют информацию о них следует помечать квалификатором `const` после сигнатуры -и перед телом метода: - -```c++ -class Size { -public: - size_t GetSize() const { return size; }; - void AddSize(size_t size) { size_ += size; }; -private: - size_t size_ = 0; -}; -``` - -Методы помеченные квалификатором `const` можно вызывать у константных объектов класса. -Компилятор отслеживает, что в данном методе нет измененеий полей класса. - -Методы можно перегрузить только по квалификатору `const`. - -Не изменяет поля класса и может быть вызван для константного объекта: - -```c++ -int Class::foo() const; -``` - -Может изменять поля класса и может быть вызван для `volatile` объекта: - -```c++ -int Class::foo() volatile; -``` - -Может быть вызван как для `const`, так и для `volatile` объекта, так и для -`const volatile` объекта: - -```c++ -int Class::foo() const volatile; -``` - -### Оператор преобразования - -В классе возможно определить оператор преобразования, который позволяет преобразовывать -пользовательский класс в другой тип. - -Синтаксис: ` operator () const {}` - -- `` - можно запретить неявное преобразование -- `` - тип к которому выполняется приведение - -Рекомендуется помечать `const` поскольку данный оператор не должен менять полей класса -и вызываться от констант данного класса. - -Как правило рекомендуется запрещать неявное преобразование к типу (использовать -`explicit`), поскольку можно обнаружить много неожиданных мест в коде, где неявно -произведено преобразование. - -Исключением обычно является оператор `bool` для удобства использования в условиях. - -### Перегрузка операторов внутри класса - -Поскольку первым аргументом неявно передается ключевое слово `this`, то перегрузка -бинарных операторов внутри класса имеет один аргумент: - -```c++ -Class& operator+=(const Class& other); -Class& operator-=(const Class& other); -Class& operator*=(const Class& other); -Class& operator/=(const Class& other); -``` - -Операторы арифмесстических операций часто переопределяют на основе работы присваивающих -операторов: - -```c++ -Class operator+(const Class& other) const { - Class result = *this; // copy ctor - result += other; // operator += - return result; -} -``` - -Операторы префиксного и постфиксного инкремента/декремента переопределяются -следующим образом: - -```c++ -Class& operator++(); // ++obj -Class operator++(int); // obj++ -Class& operator--(); // --obj -Class operator--(int); // obj-- -``` -- постфиксный оператор возвращает копию, поэтому у возвращаемого значения нет `&` - -### Перегрузка операторов вне класса - -Операторы можно перегрузить вне класса, тогда сигнатура перегружаемого оператора -пишется в привычной манере. Но для реализации таких операторов у класса должны быть -методы задающие и считывающие значение полей (геттеры и сеттеры). Бывает, что их нет, -тогда перегрузить класс не получится или получится на основе определенных операторов -составного присваивания внутри класса. - -Перегрузка инкремента и декремента вне класса: - -```c++ -Class& operator++(const Class& obj); // ++obj -Class operator++(const Class& obj, int); // obj++ -Class& operator--(const Class& obj); // --obj -Class operator--(const Class& obj, int); // obj-- -``` - -### Ключевое слово `friend` - -Внутри класса с помощью ключевого слова `friend` (_friend declaration_) можно -объявить дружественную функцию, класс или дружественный метод другого класса. - -Сущности объявленные дружественными будут иметь доступ к `private` и `protected` -полям класса. - -Дружественность работает в одностороннем порядке. - -```c++ -friend void SomeMethod(int); -friend struct SomeStruct; -friend class SomeClass; -friend OtherClass; // C++11 -friend int OtherClass::Method(); -``` - -### Ключевое слово `mutable` - -Спецификатор типа `mutable` разрешает изменять поле класса, объявленное с ним, -даже в константных методах и для константных объектов. - -Например, это может быть поле представляющее собой счетчик операций и необходимо его -изменять даже в константном методе. - -Также может использоваться в лямбда-выражениях \ No newline at end of file diff --git a/04_week/04_class.pdf b/04_week/04_class.pdf deleted file mode 100644 index 50a488d9fcab3609ae8817ce4684647091ae75d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251118 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 diff --git a/04_week/CMakeLists.txt b/04_week/CMakeLists.txt deleted file mode 100644 index 0531237e..00000000 --- a/04_week/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -cmake_minimum_required(VERSION 3.14) # Минимальная требуемая версия CMake -project(04_week) # Необходим для инициализации cmake - -set(CMAKE_CXX_STANDARD 20) # Версия стандарта C++ -set(CMAKE_CXX_STANDARD_REQUIRED ON) # Гарантирует использование указанной версии стандарта - -set(EXAMPLES_DIR examples) # Определим переменную с именем директории -set(TASKS_DIR tasks) - -add_subdirectory(tasks) - -# Создать исполняемый файл для каждого примера -if (BUILD_EXAMPLES_04_WEEK) -# add_example(struct_examples ${EXAMPLES_DIR}/struct_examples.cpp) -endif() \ No newline at end of file From b5b6bc3ad1682d651d447c359d9a0a1157c4eab6 Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Wed, 17 Dec 2025 18:24:49 +0500 Subject: [PATCH 30/40] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20filter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 03_week/tasks/filter/filter.cpp | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/03_week/tasks/filter/filter.cpp b/03_week/tasks/filter/filter.cpp index 6648cb39..767169aa 100644 --- a/03_week/tasks/filter/filter.cpp +++ b/03_week/tasks/filter/filter.cpp @@ -1,6 +1,29 @@ #include +#include +/* +Функция принимает std::vector +и указатель на функцию предикат, и оставляет в контейнере элементы, +удовлетворяющие предикату, в исходном порядке. +Нельзя алгоритм +Алгоритм долэен проходить за O(n) +*/ -/* return_type */ Filter(/* args */) { - throw std::runtime_error{"Not implemented"}; +using PredicatePtr = bool(*)(int); +void Filter(std::vector& array, PredicatePtr predicate) { + if (!predicate) return; + + + size_t writeIndex = 0; + + for (size_t readIndex = 0; readIndex < array.size(); ++readIndex) { + if (predicate(array[readIndex])) { + if (writeIndex != readIndex) { + array[writeIndex] = std::move(array[readIndex]); + } + ++writeIndex; + } + } + + array.resize(writeIndex); } \ No newline at end of file From cdf7cb7774abc0a4cff00583da47d87d0b308cff Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Wed, 17 Dec 2025 18:39:42 +0500 Subject: [PATCH 31/40] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20enum=5Foperators?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tasks/enum_operators/enum_operators.cpp | 122 ++++++++++++++++-- 1 file changed, 112 insertions(+), 10 deletions(-) diff --git a/03_week/tasks/enum_operators/enum_operators.cpp b/03_week/tasks/enum_operators/enum_operators.cpp index a539be38..dfbf8765 100644 --- a/03_week/tasks/enum_operators/enum_operators.cpp +++ b/03_week/tasks/enum_operators/enum_operators.cpp @@ -1,5 +1,23 @@ #include +#include #include +#include + +/* +Необходимо реализовать перегрузку побитовых операторов для перечисления `CheckFlags`: + +- `operator|` - возвращает результат побитового ИЛИ двух перечислений +- `operator&` - возвращает `true`, если все активные флаги одного операнда + присутствуют у другого операнда, иначе возвращает `false`. В случае когда у одного + из операндов нет активных флагов возвращает `false` +- `operator^` - возвращает результат исключающего ИЛИ двух перечислений. +- `operator~` - инвертирует установленные флаги (для `NONE` результат будет `ALL`) +- `operator<<` - выводит через запятую в произвольный поток вывода имена включенных + флагов проверки +// Думаю сделать мини функцию для маскирования + + +*/ enum class CheckFlags : uint8_t { NONE = 0, @@ -12,22 +30,106 @@ enum class CheckFlags : uint8_t { ALL = TIME | DATE | USER | CERT | KEYS | DEST }; -/* return_type */ operator|(/* args */) { - throw std::runtime_error{"Not implemented"}; +// Вспомогательная функция для маскирования +uint8_t maskFlags(CheckFlags flags) { + return static_cast(flags) & static_cast(CheckFlags::ALL); } -/* return_type */ operator&(/* args */) { - throw std::runtime_error{"Not implemented"}; +//operator| - побитовое ИЛИ +CheckFlags operator|(CheckFlags lhs, CheckFlags rhs) { + uint8_t result = maskFlags(lhs) | maskFlags(rhs); + return static_cast(result); } -/* return_type */ operator^(/* args */) { - throw std::runtime_error{"Not implemented"}; +// operator& - проверка что один набор содержит другой +bool operator&(CheckFlags lhs, CheckFlags rhs) { + uint8_t lhsMasked = maskFlags(lhs); + uint8_t rhsMasked = maskFlags(rhs); + + // Если любой из операндов NONE -> false (по условию) + if (lhsMasked == 0 || rhsMasked == 0) { + return false; + } + + return ((lhsMasked & rhsMasked) == lhsMasked) || + ((lhsMasked & rhsMasked) == rhsMasked); } -/* return_type */ operator~(/* args */) { - throw std::runtime_error{"Not implemented"}; +//operator^ - исключающее ИЛИ +CheckFlags operator^(CheckFlags lhs, CheckFlags rhs) { + uint8_t result = maskFlags(lhs) ^ maskFlags(rhs); + return static_cast(result); } -/* return_type */ operator<<(/* args */) { - throw std::runtime_error{"Not implemented"}; +//operator~ - инвертирование +CheckFlags operator~(CheckFlags flags) { + uint8_t masked = maskFlags(flags); + uint8_t inverted = ~masked; + uint8_t result = inverted & static_cast(CheckFlags::ALL); + + return static_cast(result); } + +// operator<< - вывод в поток +std::ostream& operator<<(std::ostream& os, CheckFlags flags) { + uint8_t masked = maskFlags(flags); + + if (masked == 0) { + os << "NONE"; + return os; + } + + if (masked == static_cast(CheckFlags::ALL)) { + os << "TIME, DATE, USER, CERT, KEYS, DEST"; + return os; + } + + bool isFirst = true; + + // Проверяем каждый флаг + if (masked & static_cast(CheckFlags::TIME)) { + os << "TIME"; + isFirst = false; + } + + if (masked & static_cast(CheckFlags::DATE)) { + if (!isFirst) { + os << ", "; + } + os << "DATE"; + isFirst = false; + } + + if (masked & static_cast(CheckFlags::USER)) { + if (!isFirst) { + os << ", "; + } + os << "USER"; + isFirst = false; + } + + if (masked & static_cast(CheckFlags::CERT)) { + if (!isFirst) { + os << ", "; + } + os << "CERT"; + isFirst = false; + } + + if (masked & static_cast(CheckFlags::KEYS)) { + if (!isFirst) { + os << ", "; + } + os << "KEYS"; + isFirst = false; + } + + if (masked & static_cast(CheckFlags::DEST)) { + if (!isFirst) { + os << ", "; + } + os << "DEST"; + } + + return os; +} \ No newline at end of file From ed9d5f987791d70638b46e9ecec12fc0e773d8eb Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Wed, 17 Dec 2025 18:46:47 +0500 Subject: [PATCH 32/40] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20os=5Foverload?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 03_week/tasks/os_overload/os_overload.cpp | 57 ++++++++++++++++++++--- 1 file changed, 51 insertions(+), 6 deletions(-) diff --git a/03_week/tasks/os_overload/os_overload.cpp b/03_week/tasks/os_overload/os_overload.cpp index e473418d..bb253cb3 100644 --- a/03_week/tasks/os_overload/os_overload.cpp +++ b/03_week/tasks/os_overload/os_overload.cpp @@ -1,21 +1,66 @@ #include #include #include - +#include struct Coord2D { - int x; - int y; + int x = 0; + int y = 0; }; struct Circle { Coord2D coord; - unsigned radius; + unsigned radius = 1; // по умолчанию 1 }; using CircleRegion = std::pair; using CircleRegionList = std::vector; -/* return_type */ operator<<(/* args */) { - throw std::runtime_error{"Not implemented"}; +//оператор вывода для Coord2D +std::ostream& operator<<(std::ostream& os, const Coord2D& coord) { + os << "(" << coord.x << ", " << coord.y << ")"; + return os; +} + +// Оператор вывода для Circle +std::ostream& operator<<(std::ostream& os, const Circle& circle) { + os << "circle["; + + if (circle.radius != 0) { + os << circle.coord << ", r = " << circle.radius; + } + + os << "]"; + return os; } + +// Оператор вывода для CircleRegion +std::ostream& operator<<(std::ostream& os, const CircleRegion& region) { + + if (region.second) { + os << "+"; + } else { + os << "-"; + } + os << region.first; + return os; +} + + // Оператор вывода для CircleRegionList +std::ostream& operator<<(std::ostream& os, const CircleRegionList& list) { + os << "{"; + + if (!list.empty()) { + os << "\n"; + + for (size_t i = 0; i < list.size(); ++i) { + os << "\t" << list[i]; + // Запятая после всех элементов, кроме последнего + if (i != list.size() - 1) os << ","; + os << "\n"; + } + } + + os << "}"; + return os; +} \ No newline at end of file From 5d637d51970ddeee2f84a59db3707c08b7177c90 Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Wed, 17 Dec 2025 18:58:12 +0500 Subject: [PATCH 33/40] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20easy=5Fcompare?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 03_week/tasks/easy_compare/easy_compare.cpp | 84 +++++++++++++++++++-- 1 file changed, 79 insertions(+), 5 deletions(-) diff --git a/03_week/tasks/easy_compare/easy_compare.cpp b/03_week/tasks/easy_compare/easy_compare.cpp index dd5cb7f6..ee6a684e 100644 --- a/03_week/tasks/easy_compare/easy_compare.cpp +++ b/03_week/tasks/easy_compare/easy_compare.cpp @@ -1,16 +1,90 @@ #include - +#include struct Date { - unsigned year; - unsigned month; - unsigned day; + unsigned year = 0; + unsigned month = 0; + unsigned day = 0; }; +bool operator==(const Date& lhs, const Date& rhs) { + return std::tie(lhs.year, lhs.month, lhs.day) == + std::tie(rhs.year, rhs.month, rhs.day); +} + +bool operator<(const Date& lhs, const Date& rhs) { + return std::tie(lhs.year, lhs.month, lhs.day) < + std::tie(rhs.year, rhs.month, rhs.day); +} + +bool operator!=(const Date& lhs, const Date& rhs) { + return !(lhs == rhs); +} + +bool operator>(const Date& lhs, const Date& rhs) { + return rhs < lhs; +} + +bool operator<=(const Date& lhs, const Date& rhs) { + return !(rhs < lhs); +} + +bool operator>=(const Date& lhs, const Date& rhs) { + return !(lhs < rhs); +} + struct StudentInfo { size_t id; char mark; int score; unsigned course; Date birth_date; -}; \ No newline at end of file +}; + +int markWeight(char mark) { + switch (mark) { + case 'Z': return 1; + case 'D': return 2; + case 'C': return 3; + case 'B': return 4; + case 'A': return 5; + default: return 0; + } +} + +bool operator==(const StudentInfo& lhs, const StudentInfo& rhs) { + return std::tie(lhs.mark, lhs.score) == + std::tie(rhs.mark, rhs.score); +} + +bool operator<(const StudentInfo& lhs, const StudentInfo& rhs) { + return std::make_tuple(markWeight(lhs.mark), + lhs.score, + -static_cast(lhs.course), + lhs.birth_date.year, + lhs.birth_date.month, + lhs.birth_date.day) + < + std::make_tuple(markWeight(rhs.mark), + rhs.score, + -static_cast(rhs.course), + rhs.birth_date.year, + rhs.birth_date.month, + rhs.birth_date.day); +} + +bool operator!=(const StudentInfo& lhs, const StudentInfo& rhs) { + return !(lhs == rhs); +} + +bool operator>(const StudentInfo& lhs, const StudentInfo& rhs) { + return rhs < lhs; +} + +bool operator<=(const StudentInfo& lhs, const StudentInfo& rhs) { + return !(rhs < lhs); +} + +bool operator>=(const StudentInfo& lhs, const StudentInfo& rhs) { + return !(lhs < rhs); +} \ No newline at end of file From d52be889aebd68642bd42ed222491de29729145b Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Wed, 24 Dec 2025 17:19:38 +0500 Subject: [PATCH 34/40] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20stack?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 04_week/tasks/stack/stack.cpp | 105 ++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) diff --git a/04_week/tasks/stack/stack.cpp b/04_week/tasks/stack/stack.cpp index 222e4ffc..7c69e514 100644 --- a/04_week/tasks/stack/stack.cpp +++ b/04_week/tasks/stack/stack.cpp @@ -1,6 +1,111 @@ #include +/* +Необходимо реализовать класс стек то есть обертку над вектором итнов +- Метод `Push` - добавляет элемент на верхушку стека +- Метод `Pop` - убирает элемент с верхушки стека +- Метод `Top` - обеспечивает доступ к элементу на верхушке стека +- Метод `Empty` - возвращает результат проверки стека на отсутствие элементов +- Метод `Size` - возвращает количество элементов в стеке +- Метод `Clear` - очищает стек +- Метод `Swap` - меняется элементами с другим стеком (без копирования) +- Оператор `==` - сравнение стека на равенство +- Оператор `!=` - сравнение стека на неравенство + +Вызов метода `Pop` от пустого стека является корректной операцией. Метод должен +возвращать `true` или `false` в зависимости от того выполнялась операция или нет. +//Значения стека должны находится в закрытой части класса +// Рекомендуется определять методы вне класса +//Некоторые методы могут потребовать перегрузки +//Обратите внимание, что при использовании в качестве полей контейнеров стандартной +//библиотеки нет необходимости писать собственные конструкторы + +//Перегрузка операторов +Синтаксис: ` operator(...);` + +- `` - символьное обозначение оператора (`+`, `<<`, `==`, ...) +- `...` - один или два аргумента (для унарного и бинарного операторов) +- `` - тип возвращаемого значения + +// Методы в классе это функции. +*/ +//реализации методов делаются с префиксом Stack:: class Stack { + public: + void Push(int value); + void Clear(); + void Swap(Stack& otherStack); + bool Pop(); + bool Empty() const; + int& Top(); // Для неконстантного стека + const int& Top() const; // Для константного стека + size_t Size() const; + + bool operator==(const Stack& otherStack) const; + bool operator!=(const Stack& otherStack) const; + + + private: + std::vector data; }; + +//push метод +void Stack::Push(int value) { + data.push_back(value); +} + +//CLear метод +void Stack::Clear() { + data.clear(); + +} + +//Swap метод +void Stack::Swap(Stack& otherStack) { + data.swap(otherStack.data); + +} + +//Pop метод +bool Stack::Pop() { + if (Empty()) return false; + + data.pop_back(); + return true; + +} + +//Top меттод +int& Stack::Top() { + static int throwMes = 0; + if(Empty()) return throwMes; + return data.back(); +} + +const int& Stack::Top() const { + static const int throwMes = 0; + if(Empty()) return throwMes; + + return data.back(); +} + +//Empty метод +bool Stack::Empty() const{ + return data.empty(); + +} + +size_t Stack::Size() const { + return data.size(); +} + +/////////////////////Перегрузка в 10G/////////////// +bool Stack::operator==(const Stack& otherStack) const { + return data == otherStack.data; +} + +bool Stack::operator!=(const Stack& otherStack) const { + return !(*this == otherStack); // используем == тк выше уже определили его +} \ No newline at end of file From 07ae1ff5ecc3d5da1b0fa660d9c9920959b38ca7 Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Thu, 25 Dec 2025 22:15:46 +0500 Subject: [PATCH 35/40] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20queue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 04_week/tasks/queue/queue.cpp | 201 ++++++++++++++++++++++++++++++++++ 1 file changed, 201 insertions(+) diff --git a/04_week/tasks/queue/queue.cpp b/04_week/tasks/queue/queue.cpp index 2a9f8493..96cf14a0 100644 --- a/04_week/tasks/queue/queue.cpp +++ b/04_week/tasks/queue/queue.cpp @@ -1,6 +1,207 @@ #include +#include +/* +//очередь работает по принципу FIFO. +//Нельзя `std::queue`, `std::deque`, `std::list` +// Методы определяем вне класса +//Была идея использовать algorithm, но оттуда чисто один метод нужен был, проше уж самому реализовать через цикл, а не тащить целую библиотеку +//необходима реализация в зависимости от конструктора. +//Добавил строгости в преобразовании. запрет на неявность. explicit +*/ + + class Queue { +public: + //Конструкторы + Queue() = default; + explicit Queue(size_t capacity); + explicit Queue(const std::vector& vec); + Queue(std::initializer_list init); + explicit Queue(const std::stack& stack); + //Методы + void Push(int value); + void Clear(); + void Swap(Queue& otherQueue); + + int& Front(); + const int& Front() const; + int& Back(); + const int& Back() const; + + bool Pop(); + bool Empty() const; + size_t Size() const; + + bool operator==(const Queue& otherQueue) const; + bool operator!=(const Queue& otherQueue) const; +private: + std::vector inputDat; + std::vector outputDat; + + void MoveInputToOutput() { + while (!inputDat.empty()) { + outputDat.push_back(inputDat.back()); + inputDat.pop_back(); + } + } }; + +// Реализации конструкторов +Queue::Queue(size_t capacity) { + inputDat.reserve(capacity / 2 + 1); + outputDat.reserve(capacity / 2 + 1); +} + +Queue::Queue(const std::vector& vec) : inputDat(vec) {} + +Queue::Queue(std::initializer_list initList) : inputDat(initList) {} + +Queue::Queue(const std::stack& stack) { + std::stack temp = stack; + // Извлекаем элементы из стека в обратном порядке + while (!temp.empty()) { + inputDat.insert(inputDat.begin(), temp.top()); + temp.pop(); + } +} + +// Реализации методов +void Queue::Push(int value) { + inputDat.push_back(value); +} + +void Queue::Clear() { + inputDat.clear(); + outputDat.clear(); +} + +void Queue::Swap(Queue& otherQueue) { + inputDat.swap(otherQueue.inputDat); + outputDat.swap(otherQueue.outputDat); +} + +int& Queue::Front() { + if (outputDat.empty()) { + MoveInputToOutput(); + } + return outputDat.back(); +} + +const int& Queue::Front() const { + if (outputDat.empty()) { + // Создаем временные копии + std::vector tempInput = inputDat; + std::vector tempOutput = outputDat; + + // Перекладываем элементы + while (!tempInput.empty()) { + tempOutput.push_back(tempInput.back()); + tempInput.pop_back(); + } + + static int returnZero = 0; + if (!tempOutput.empty()) { + returnZero = tempOutput.back(); + } + return returnZero; + } + return outputDat.back(); +} + +int& Queue::Back() { + if (!inputDat.empty()) { + return inputDat.back(); + } + if (!outputDat.empty()) { + return outputDat.front(); + } + static int returnZero = 0; + return returnZero; +} + +const int& Queue::Back() const { + if (!inputDat.empty()) { + return inputDat.back(); + } + if (!outputDat.empty()) { + return outputDat.front(); + } + static int returnZero = 0; + return returnZero; +} + +bool Queue::Pop() { + if (Empty()) { + return false; + } + + if (outputDat.empty()) { + MoveInputToOutput(); + } + + outputDat.pop_back(); + return true; +} + +bool Queue::Empty() const { + return inputDat.empty() && outputDat.empty(); +} + +size_t Queue::Size() const { + return inputDat.size() + outputDat.size(); +} + +bool Queue::operator==(const Queue& otherQueue) const { + if (Size() != otherQueue.Size()) return false; + if (Empty()) return true; + +//Для одной очереди + size_t idx1 = 0; + std::vector temp1; + + if (!outputDat.empty()) { + for (size_t i = outputDat.size(); i > 0; --i) { + temp1.push_back(outputDat[i - 1]); + } + } + for (size_t i = 0; i < inputDat.size(); ++i) { + temp1.push_back(inputDat[i]); + } + +//Для второй очереди + std::vector temp2; + if (!otherQueue.outputDat.empty()) { + for (size_t i = otherQueue.outputDat.size(); i > 0; --i) { + temp2.push_back(otherQueue.outputDat[i - 1]); + } + } + for (size_t i = 0; i < otherQueue.inputDat.size(); ++i) { + temp2.push_back(otherQueue.inputDat[i]); + } + return temp1 == temp2; +} + +bool Queue::operator!=(const Queue& otherQueue) const { + return !(*this == otherQueue); +} +//////////Долгострой питерский//////////////////////////////////// +// bool Queue::operator==(const Queue& otherQueue) const { +// if (Size() != otherQueue.Size()) return false; + +// Queue temp1 = *this; +// Queue temp2 = otherQueue; + +// temp1.MoveInputToOutput(); +// temp2.MoveInputToOutput(); + +// if (temp1.outputDat.size() != temp2.outputDat.size()) return false; + +// for (size_t i = 0; i < temp1.outputDat.size(); ++i) { +// if (temp1.outputDat[i] != temp2.outputDat[i]) return false; +// } +// return true; +// } +//////////////////////////////////////////////////////////////////// \ No newline at end of file From ae1c015a4e6d1307e58c9eef315da787b7a9df73 Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Fri, 26 Dec 2025 15:43:29 +0500 Subject: [PATCH 36/40] =?UTF-8?q?=D0=9A=D0=BE=D1=81=D0=BC=D0=B5=D1=82?= =?UTF-8?q?=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=B8=D0=B9=20=D1=80=D0=B5=D0=BC?= =?UTF-8?q?=D0=BE=D0=BD=D1=82.=20=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BB=D0=B8=D1=88=D0=BD=D0=B5=D0=B3=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 04_week/tasks/queue/queue.cpp | 36 ++++++----------------------------- 1 file changed, 6 insertions(+), 30 deletions(-) diff --git a/04_week/tasks/queue/queue.cpp b/04_week/tasks/queue/queue.cpp index 96cf14a0..53d3e8ff 100644 --- a/04_week/tasks/queue/queue.cpp +++ b/04_week/tasks/queue/queue.cpp @@ -112,23 +112,17 @@ const int& Queue::Front() const { } int& Queue::Back() { - if (!inputDat.empty()) { - return inputDat.back(); - } - if (!outputDat.empty()) { - return outputDat.front(); - } + if (!inputDat.empty()) return inputDat.back(); + if (!outputDat.empty()) return outputDat.front(); + static int returnZero = 0; return returnZero; } const int& Queue::Back() const { - if (!inputDat.empty()) { - return inputDat.back(); - } - if (!outputDat.empty()) { - return outputDat.front(); - } + if (!inputDat.empty()) return inputDat.back(); + if (!outputDat.empty()) return outputDat.front(); + static int returnZero = 0; return returnZero; } @@ -187,21 +181,3 @@ bool Queue::operator==(const Queue& otherQueue) const { bool Queue::operator!=(const Queue& otherQueue) const { return !(*this == otherQueue); } -//////////Долгострой питерский//////////////////////////////////// -// bool Queue::operator==(const Queue& otherQueue) const { -// if (Size() != otherQueue.Size()) return false; - -// Queue temp1 = *this; -// Queue temp2 = otherQueue; - -// temp1.MoveInputToOutput(); -// temp2.MoveInputToOutput(); - -// if (temp1.outputDat.size() != temp2.outputDat.size()) return false; - -// for (size_t i = 0; i < temp1.outputDat.size(); ++i) { -// if (temp1.outputDat[i] != temp2.outputDat[i]) return false; -// } -// return true; -// } -//////////////////////////////////////////////////////////////////// \ No newline at end of file From 92d7686ad3d6197e55d57732ea145fc099be68d1 Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Fri, 26 Dec 2025 16:57:17 +0500 Subject: [PATCH 37/40] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20ringBuffer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 04_week/tasks/ring_buffer/ring_buffer.cpp | 223 +++++++++++++++++++++- 1 file changed, 222 insertions(+), 1 deletion(-) diff --git a/04_week/tasks/ring_buffer/ring_buffer.cpp b/04_week/tasks/ring_buffer/ring_buffer.cpp index e2b57ba2..9308d721 100644 --- a/04_week/tasks/ring_buffer/ring_buffer.cpp +++ b/04_week/tasks/ring_buffer/ring_buffer.cpp @@ -1,6 +1,227 @@ #include - +#include //Осваиваю throw вместо простого return что-то +/* +Необходимо реализовать кольцевой буфер фиксированного размера, построенный на контейнере вектора интов +//Нельзя `std::queue`, `std::deque`, `std::list` +При добавлении в заполненный буфер перезаписывается самый старый элемент. +Может хранить либо позиции начала, конца и размер буфера, либо указатели на +соответствующие позиции. +//Нельзя сконструировать буфер нулевого размера, минимально 1 +//Методы определяем вне класса, исключение - приватные вспомогательные методы. +- Конструктор от вместимости буфера +- Конструктор от вместимости буфера и начального значения, заполняет весь буфер +- Конструктор от `std::initializer_list`, вместимость соответствует размеру контейнера. +//Исходя из прошлых ошибок по оформлению теперь использую name_ для обозначения переменных класса, для явности пренадлежности +// Постарался побольше использовать тернарные операторы так где это оправданно. +*/ class RingBuffer { +public: + explicit RingBuffer(size_t capacity); + RingBuffer(size_t capacity, int initialValue); + RingBuffer(std::initializer_list init); + + void Push(int value); + bool TryPush(int value); + + bool Pop(); + bool TryPop(int& value); + + int& Front(); + const int& Front() const; + int& Back(); + const int& Back() const; + + bool Empty() const; + bool Full() const; + size_t Size() const; + size_t Capacity() const; + + void Clear(); + void Resize(size_t newCapacity); + + std::vector Vector() const; + + bool operator==(const RingBuffer& other) const; + bool operator!=(const RingBuffer& other) const; + int& operator[](size_t index); + const int& operator[](size_t index) const; + +private: + std::vector buffer_; + size_t oldestElement_ = 0; + size_t indexNextElem_ = 0; + size_t currentCountElem_ = 0; + //Для удобства добавил следующие конструкции: + size_t NextIndex(size_t index) const { + return (index + 1) % buffer_.capacity(); + } + + size_t PhysicalIndex(size_t logical) const { + return (oldestElement_ + logical) % buffer_.capacity(); + } + void ValidateIndex(size_t index) const { + if (index >= currentCountElem_) throw std::out_of_range("out of range"); + } + + void ValidateNotEmpty() const { + if (Empty()) throw std::logic_error("Buff is empty"); + } }; + +RingBuffer::RingBuffer(size_t capacity) { + capacity = capacity ? capacity : 1; // минимум 1 по тз + buffer_.reserve(capacity); + buffer_.resize(capacity); + oldestElement_ = 0; + indexNextElem_ = 0; + currentCountElem_ = 0; +} + +RingBuffer::RingBuffer(size_t capacity, int initialValue) + : RingBuffer(capacity) { //жесточайшее делегирование и лень) + if (capacity > 0) { + for (size_t i = 0; i < capacity; ++i) { + Push(initialValue); + } + } else { + buffer_[0] = initialValue; + indexNextElem_ = 1 % buffer_.capacity(); + currentCountElem_ = 1; + } +} + +RingBuffer::RingBuffer(std::initializer_list init) { + size_t capacity = init.size() ? init.size() : 1; + buffer_.reserve(capacity); + buffer_.resize(capacity); + oldestElement_ = 0; + indexNextElem_ = 0; + currentCountElem_ = 0; + for (int value : init) Push(value); //Добавил range based, так как будто бы уютнее смотрится +} + +void RingBuffer::Push(int value) { + if (Full()) { + buffer_[indexNextElem_] = value; + oldestElement_ = NextIndex(oldestElement_); + indexNextElem_ = NextIndex(indexNextElem_); + } else { + buffer_[indexNextElem_] = value; + indexNextElem_ = NextIndex(indexNextElem_); + ++currentCountElem_; + } +} + +bool RingBuffer::TryPush(int value) { + if (Full()) return false; + buffer_[indexNextElem_] = value; + indexNextElem_ = NextIndex(indexNextElem_); + ++currentCountElem_; + return true; +} + +bool RingBuffer::Pop() { + if (Empty()) return false; + oldestElement_ = NextIndex(oldestElement_); + --currentCountElem_; + return true; +} + +bool RingBuffer::TryPop(int& value) { + if (Empty()) return false; + value = buffer_[oldestElement_]; + Pop(); + return true; +} + +int& RingBuffer::operator[](size_t index) { + ValidateIndex(index); + return buffer_[PhysicalIndex(index)]; +} + +const int& RingBuffer::operator[](size_t index) const { + ValidateIndex(index); + return buffer_[PhysicalIndex(index)]; +} + +int& RingBuffer::Front() { + ValidateNotEmpty(); + size_t frontIndex = indexNextElem_ ? indexNextElem_ - 1 : buffer_.capacity() - 1; + return buffer_[frontIndex]; +} + +const int& RingBuffer::Front() const { + ValidateNotEmpty(); + size_t frontIndex = indexNextElem_ ? indexNextElem_ - 1 : buffer_.capacity() - 1; + return buffer_[frontIndex]; +} + +int& RingBuffer::Back() { + ValidateNotEmpty(); + return buffer_[oldestElement_]; +} + +const int& RingBuffer::Back() const { + ValidateNotEmpty(); + return buffer_[oldestElement_]; +} + +bool RingBuffer::Empty() const { + return currentCountElem_ == 0; +} + +bool RingBuffer::Full() const { + return currentCountElem_ == buffer_.capacity(); +} + +size_t RingBuffer::Size() const { + return currentCountElem_; +} + +size_t RingBuffer::Capacity() const { + return buffer_.capacity(); +} + +void RingBuffer::Clear() { + oldestElement_ = indexNextElem_ = currentCountElem_ = 0; +} + +void RingBuffer::Resize(size_t newCapacity) { + newCapacity = newCapacity ? newCapacity : 1; + if (newCapacity == buffer_.capacity()) return; + + size_t newCount = currentCountElem_ < newCapacity ? currentCountElem_ : newCapacity; + std::vector newBuffer = {}; + newBuffer.reserve(newCapacity); + newBuffer.resize(newCapacity); + + for (size_t i = 0; i < newCount; ++i) { + newBuffer[i] = (*this)[currentCountElem_ - newCount + i]; + } + + buffer_ = std::move(newBuffer); + oldestElement_ = 0; + indexNextElem_ = newCount % newCapacity; + currentCountElem_ = newCount; +} + +std::vector RingBuffer::Vector() const { + std::vector result; + result.reserve(currentCountElem_); + for (size_t i = 0; i < currentCountElem_; ++i) result.push_back((*this)[i]); + return result; +} + +bool RingBuffer::operator==(const RingBuffer& other) const { + if (currentCountElem_ != other.currentCountElem_ || buffer_.capacity() != other.buffer_.capacity()) + return false; + for (size_t i = 0; i < currentCountElem_; ++i) + if ((*this)[i] != other[i]) return false; + return true; +} + +bool RingBuffer::operator!=(const RingBuffer& other) const { + return !(*this == other); +} \ No newline at end of file From 42c8c6364b35577402b329da045e9d12f359471e Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Fri, 26 Dec 2025 17:26:34 +0500 Subject: [PATCH 38/40] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=BD=D0=B5=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D1=83?= =?UTF-8?q?=D0=B5=D0=BC=D0=B0=D1=8F=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=BD=D0=B0=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 04_week/tasks/queue/queue.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/04_week/tasks/queue/queue.cpp b/04_week/tasks/queue/queue.cpp index 53d3e8ff..ee420478 100644 --- a/04_week/tasks/queue/queue.cpp +++ b/04_week/tasks/queue/queue.cpp @@ -153,7 +153,6 @@ bool Queue::operator==(const Queue& otherQueue) const { if (Empty()) return true; //Для одной очереди - size_t idx1 = 0; std::vector temp1; if (!outputDat.empty()) { From 23c2ebbb4bf3e1879d1894f695547cae2588dbac Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Fri, 26 Dec 2025 19:11:43 +0500 Subject: [PATCH 39/40] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20phasor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 04_week/tasks/phasor/phasor.cpp | 364 +++++++++++++++++++++++++++++++- 1 file changed, 363 insertions(+), 1 deletion(-) diff --git a/04_week/tasks/phasor/phasor.cpp b/04_week/tasks/phasor/phasor.cpp index 3ec1b9ad..ea9c1f86 100644 --- a/04_week/tasks/phasor/phasor.cpp +++ b/04_week/tasks/phasor/phasor.cpp @@ -1,10 +1,372 @@ +#include +#include +#include +#include // Для форматирования вывода +/* +Необходимо реализовать класс, представляющий комплесн амплитуду +Комплексная амплитуда может быть реализована в различных формах: алгебраическая, показательная, тригонометрическая, временная +- Конструктор по умолчанию создает нулевой фазор. +- Конструктор, принимающий амплитуду и фазу в радианах. +Конструкторы с тегами `ExpTag`, `DegTag`, `AlgTag` в качестве третьего параметра: +- Конструктор с тегом `ExpTag` - делегирует работу основному конструктору +- Конструктор с тегом `DegTag` - из амплитуды и фазы в градусах +- Конструктор с тегом `AlgTag` - из алгебраической формы записи (_real_, _imag_) +//Нельзя `std::complex` +- Операторы `+` и `-` удобно реализовывать в декартовых координатах +- Операторы `*` и `/` удобно реализовывать в полярных координатах +Реализовать перегрузку оператора `<<` для вывода комплексной амплитуды в +поток в формате: + +`{mag}*e(j*{arg}) [{real} + j*{imag}]`, где + +- `{mag}` - амплитуда +- `{arg}` - аргумент в градусах +- `{real}` - действительная часть +- `{imag}` - мнимая часть +Также предоставляются синонимы: +- Метод `Abs` - синоним метода `Magnitude` +- Метод `Angle` - синоним метода `Phase` +- Метод `A +//также необходима реализация и доступность арфим. операций "+" "-" "*" ; "/" ; "унарный -"" +//Нужна перегрузка += -= *= /= +Мыыы друзьяя, а для них, у друзей нет выходных +//Ключевое слово friend позволяет внешней функции или классу получать доступ к приватным private и защищенным protected членам класса. +-Дается прямой доступ к приватным полям +-Не вызывает методы +-Не наследуется +-Нет двунаправленности(например если А дружит с Б, значит Б является другом А, но не наоборот). +Понадобилось для перегрузки вывода. Можно и по-другому, но мне просто понравилось это. +//Из тестов видно, что нужен setprecition(3) или что-то подобное +/////Осталась часть, которая дублируется на мой взгляд, но как это грамотно исправить пока не знаю(в конце кода где операторы) +1. Бинарные операторы (не члены класса) +2. Операторы с вещественными числами +*/ struct ExpTag {}; struct DegTag {}; struct AlgTag {}; - class Phasor { +public: + Phasor() : real_(0.0), imag_(0.0) {} // конструкторы + Phasor(double magnitude, double phaseRad); + Phasor(double magnitude, double phaseRad, ExpTag tag); + Phasor(double magnitude, double phaseDeg, DegTag tag); + Phasor(double real, double imag, AlgTag tag); + + void SetPolar(double magnitude, double phase_rad); + void SetCartesian(double real, double imag); + + double Magnitude() const; + double Phase() const; + double PhaseDeg() const; + double Real() const; + double Imag() const; + //Синонимы + double Abs() const { return Magnitude(); } + double Angle() const { return Phase(); } + double AngleDeg() const { return PhaseDeg(); } + + Phasor operator+() const; + Phasor operator-() const; + + Phasor& operator+=(const Phasor& other); + Phasor& operator-=(const Phasor& other); + Phasor& operator*=(const Phasor& other); + Phasor& operator/=(const Phasor& other); + + Phasor& operator+=(double scalar); + Phasor& operator-=(double scalar); + Phasor& operator*=(double scalar); + Phasor& operator/=(double scalar); + Phasor Conj() const; + Phasor Inv() const; + + friend bool operator==(const Phasor& lhs, const Phasor& rhs); + friend bool operator!=(const Phasor& lhs, const Phasor& rhs); + + friend std::ostream& operator<<(std::ostream& os, const Phasor& p); + +private: + double real_; + double imag_; + + static double NormalizeAngle(double angleRad); + static double DegToRad(double deg); + static double RadToDeg(double rad); }; + +Phasor MakePhasorCartesian(double real, double imag); +Phasor MakePhasorPolar(double magnitude, double phaseRad); +Phasor MakePhasorPolarDeg(double magnitude, double phaseDeg); + +// Реализации конструкторов +Phasor::Phasor(double magnitude, double phaseRad) { + SetPolar(magnitude, phaseRad); +} + +Phasor::Phasor(double magnitude, double phaseRad, ExpTag tag) + : Phasor(magnitude, phaseRad) { //Делегирование +} + +Phasor::Phasor(double magnitude, double phaseDeg, DegTag tag) { + SetPolar(magnitude, DegToRad(phaseDeg)); +} + +Phasor::Phasor(double real, double imag, AlgTag tag) + : real_(real), imag_(imag) { + // уже в декартовых координатах +} + +// Реализации методов +void Phasor::SetPolar(double magnitude, double phaseRad) { + phaseRad = NormalizeAngle(phaseRad); + real_ = magnitude * std::cos(phaseRad); + imag_ = magnitude * std::sin(phaseRad); +} + +void Phasor::SetCartesian(double real, double imag) { + real_ = real; + imag_ = imag; +} + +double Phasor::Magnitude() const { + return std::sqrt(real_ * real_ + imag_ * imag_); +} + +double Phasor::Phase() const { + if (real_ == 0.0 && imag_ == 0.0) return 0.0; // для нулевого фазора фаза не определена, возвращаем 0 + return std::atan2(imag_, real_); // лучше чем std::atan(y/x) тк обрабатывает все квадранты и синтаксис приятнее +} + +double Phasor::PhaseDeg() const { + return RadToDeg(Phase()); +} + +double Phasor::Real() const { + return real_; +} + +double Phasor::Imag() const { + return imag_; +} + +Phasor Phasor::operator+() const { + return *this; // унарный "+"" ничего не меняет +} + +Phasor Phasor::operator-() const { + return Phasor(-real_, -imag_, AlgTag()); //создает новый объект, не меняя старый +} + +Phasor& Phasor::operator+=(const Phasor& other) { + real_ += other.real_; + imag_ += other.imag_; + return *this; +} + +Phasor& Phasor::operator-=(const Phasor& other) { + real_ -= other.real_; + imag_ -= other.imag_; + return *this; +} + +Phasor& Phasor::operator*=(const Phasor& other) { + // Умножение в полярных координатах + double mag1 = Magnitude(); + double mag2 = other.Magnitude(); + double phase1 = Phase(); + double phase2 = other.Phase(); + + double newMag = mag1 * mag2; + double newPhase = phase1 + phase2; + + SetPolar(newMag, newPhase); + return *this; +} + +Phasor& Phasor::operator/=(const Phasor& other) { + // Деление в полярных координатах + double mag1 = Magnitude(); + double mag2 = other.Magnitude(); + + if (mag2 == 0.0) throw std::runtime_error("division by zero detected"); //кидать всякое я уже умею. В тестах деление на ноль не проверяется, но пусть будет. не мешает же + + double phase1 = Phase(); + double phase2 = other.Phase(); + + double newMag = mag1 / mag2; + double newPhase = phase1 - phase2; + + SetPolar(newMag, newPhase); + return *this; +} + +Phasor& Phasor::operator+=(double scalar) { + real_ += scalar; + return *this; +} + +Phasor& Phasor::operator-=(double scalar) { + real_ -= scalar; + return *this; +} + +Phasor& Phasor::operator*=(double scalar) { + real_ *= scalar; + imag_ *= scalar; + return *this; +} + +Phasor& Phasor::operator/=(double scalar) { + if (scalar == 0.0) throw std::runtime_error("division by zero detected"); + real_ /= scalar; + imag_ /= scalar; + return *this; +} + +//Спец и доп. методы +//Сопряженное число. То есть если было x=a+ib, то вернется x'=a-ib +Phasor Phasor::Conj() const { + return Phasor(real_, -imag_, AlgTag()); +} + +Phasor Phasor::Inv() const { + // 1/z = conj(z) / |z|^2 + double mag_sq = real_ * real_ + imag_ * imag_; + + return Phasor(real_ / mag_sq, -imag_ / mag_sq, AlgTag()); +} + +double Phasor::NormalizeAngle(double angleRad) { + // Приводим угол к диапазону (-П, П]. Это надо потому что каждые 360 градусов ничего не меняют 370=10 + const double two_pi = 2.0 * M_PI; + // Убираем полные обороты + angleRad = std::fmod(angleRad, two_pi); //Нашел fmod. Возвращает остаток от деления. Работает как сколько останется от x после вычитания максимально возможного количества целых y + // Приводим к (-П, П] + if (angleRad > M_PI) { + angleRad -= two_pi; + } else if (angleRad <= -M_PI) { + angleRad += two_pi; + } + + return angleRad; +} + +double Phasor::DegToRad(double deg) { + return deg * M_PI / 180.0; +} + +double Phasor::RadToDeg(double rad) { + return rad * 180.0 / M_PI; +} + +// Дружественные операторы сравнения +bool operator==(const Phasor& lhs, const Phasor& rhs) { + const double eps = 1e-10; // точность сравнения + return std::abs(lhs.real_ - rhs.real_) < eps && + std::abs(lhs.imag_ - rhs.imag_) < eps; +} + +bool operator!=(const Phasor& lhs, const Phasor& rhs) { + return !(lhs == rhs); +} + +// Дружественный оператор вывода +std::ostream& operator<<(std::ostream& os, const Phasor& p) { + double mag = p.Magnitude(); + double arg_deg = p.PhaseDeg(); + double real = p.Real(); + double imag = p.Imag(); + + // Устанавливаем фиксированный формат и точность 3 знака после запятой(тесты требуют) + os << std::fixed << std::setprecision(3); + os << mag << "*e(j*" << arg_deg << ") [" + << real << " + j*" << imag << "]"; + + // Восстанавливаем состояние потока после наших издевательств над ним + os.unsetf(std::ios_base::floatfield); + os.precision(6); // стандартная точность + + return os; +} +// Бинарные операторы (не члены класса) +Phasor operator+(const Phasor& lhs, const Phasor& rhs) { + Phasor result = lhs; + result += rhs; + return result; +} + +Phasor operator-(const Phasor& lhs, const Phasor& rhs) { + Phasor result = lhs; + result -= rhs; + return result; +} + +Phasor operator*(const Phasor& lhs, const Phasor& rhs) { + Phasor result = lhs; + result *= rhs; + return result; +} + +Phasor operator/(const Phasor& lhs, const Phasor& rhs) { + Phasor result = lhs; + result /= rhs; + return result; +} + +// Операторы с вещественными числами +Phasor operator+(const Phasor& phasor, double scalar) { + Phasor result = phasor; + result += scalar; + return result; +} + +Phasor operator+(double scalar, const Phasor& phasor) { + return phasor + scalar; // коммутативность +} + +Phasor operator-(const Phasor& phasor, double scalar) { + Phasor result = phasor; + result -= scalar; + return result; +} + +Phasor operator-(double scalar, const Phasor& phasor) { + return Phasor(scalar, 0, AlgTag()) - phasor; +} + +Phasor operator*(const Phasor& phasor, double scalar) { + Phasor result = phasor; + result *= scalar; + return result; +} + +Phasor operator*(double scalar, const Phasor& phasor) { + return phasor * scalar; // коммутативность +} + +Phasor operator/(const Phasor& phasor, double scalar) { + Phasor result = phasor; + result /= scalar; + return result; +} + +Phasor operator/(double scalar, const Phasor& phasor) { + return Phasor(scalar, 0, AlgTag()) / phasor; +} + +// Функции создания +Phasor MakePhasorCartesian(double real, double imag) { + return Phasor(real, imag, AlgTag()); +} + +Phasor MakePhasorPolar(double magnitude, double phaseRad) { + return Phasor(magnitude, phaseRad); +} + +Phasor MakePhasorPolarDeg(double magnitude, double phaseDeg) { + return Phasor(magnitude, phaseDeg, DegTag()); +} \ No newline at end of file From 844e29217f45dfaf3960c78203c64f7a1abf65db Mon Sep 17 00:00:00 2001 From: Dsv9toy Date: Fri, 26 Dec 2025 19:15:55 +0500 Subject: [PATCH 40/40] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BD=D1=8B=20?= =?UTF-8?q?=D0=BB=D0=B8=D1=88=D0=BD=D0=B8=D0=B5=20=D0=BD=D0=B0=D0=B7=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 04_week/tasks/phasor/phasor.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/04_week/tasks/phasor/phasor.cpp b/04_week/tasks/phasor/phasor.cpp index ea9c1f86..093e56b6 100644 --- a/04_week/tasks/phasor/phasor.cpp +++ b/04_week/tasks/phasor/phasor.cpp @@ -107,15 +107,15 @@ Phasor::Phasor(double magnitude, double phaseRad) { SetPolar(magnitude, phaseRad); } -Phasor::Phasor(double magnitude, double phaseRad, ExpTag tag) +Phasor::Phasor(double magnitude, double phaseRad, ExpTag) : Phasor(magnitude, phaseRad) { //Делегирование } -Phasor::Phasor(double magnitude, double phaseDeg, DegTag tag) { +Phasor::Phasor(double magnitude, double phaseDeg, DegTag) { SetPolar(magnitude, DegToRad(phaseDeg)); } -Phasor::Phasor(double real, double imag, AlgTag tag) +Phasor::Phasor(double real, double imag, AlgTag) : real_(real), imag_(imag) { // уже в декартовых координатах }