diff --git a/Ignatenok Easy.cpp b/Ignatenok Easy.cpp deleted file mode 100644 index 0927d92c..00000000 --- a/Ignatenok Easy.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include -#include - -using namespace std; -int main() -{ - int n; //кол-во элементов списка - cin >> n; - int m[n]; //списков из n-элементов - int s = 0; //сумма элементов списка - int c = 0; - //счетчик чисел больших среднего - - for(int i = 0; i < n; i++) - { - cin >> m[i]; - s += m[i]; - } - for(int i = 0; i < n; i++) - { - if (m[i] > (s/n)) - { - c += 1; - } - } - cout << "Кол-во эл. больших среднего арифметического:" << c; - return 0; -} diff --git a/Lab-9.py b/Lab-9.py new file mode 100644 index 00000000..24bbaf24 --- /dev/null +++ b/Lab-9.py @@ -0,0 +1,26 @@ +import numpy as np + +def count_and_replace(array): + counts = np.bincount(array) + return counts[array] + +# Тестовые случаи + +def test_count_and_replace(): + test_cases = [ + {"input": np.array([3, 3, 2, 1, 1, 1]), "expected": np.array([2, 2, 1, 3, 3, 3])}, + {"input": np.array([0, 0, 0, 4, 4, 2]), "expected": np.array([3, 3, 3, 2, 2, 1])}, + {"input": np.array([7, 7, 8, 8, 8, 9]), "expected": np.array([2, 2, 3, 3, 3, 1])}, + {"input": np.array([5]), "expected": np.array([1])}, + {"input": np.array([6, 6, 6, 6, 6]), "expected": np.array([5, 5, 5, 5, 5])}, + ] + + for i, test_case in enumerate(test_cases, start=1): + input_array = test_case["input"] + expected_output = test_case["expected"] + result = count_and_replace(input_array) + assert np.array_equal(result, expected_output), f"Тест {i} не пройден: ожидалось {expected_output}, получено {result}" + print(f"Тест {i} пройден: {result}") + +if __name__ == "__main__": + test_count_and_replace() \ No newline at end of file diff --git a/lab-3.cpp b/lab-3.cpp deleted file mode 100644 index 12ce656f..00000000 --- a/lab-3.cpp +++ /dev/null @@ -1,53 +0,0 @@ -#include -#include -using namespace std; - -// Функция для поиска всех подмассивов размера K с суммой элементов равной 0 -vector> findZeroSumSubarrays(const vector& arr, int K) { // O(N^K) временная сложность - int N = arr.size(); - vector> result; // Хранение найденных комбинаций индексов - - // Рекурсивная функция для генерации комбинаций - function, int)> backtrack = [&](int start, int depth, vector current, int currentSum) { - if (depth == K) { // Базовый случай: комбинация размера K - if (currentSum == 0) { // Проверка, равна ли сумма нулю - result.push_back(current); // Добавление комбинации в результат, если сумма равна нулю - } - return; - } - for (int i = start; i < N; ++i) { // Итерация по элементам массива - current.push_back(i); // Выбор текущего индекса - backtrack(i + 1, depth + 1, current, currentSum + arr[i]); // Рекурсия с следующим индексом - current.pop_back(); // Откат (backtrack) - } - }; - - backtrack(0, 0, {}, 0); // Инициализация рекурсии - return result; -} - -int main() { // Главная функция - // Тест 1: Маленький массив - vector arr1 = {1, -1, 2, -2, 3}; - int K1 = 2; - vector> result1 = findZeroSumSubarrays(arr1, K1); - assert(result1.size() == 2); // Существует два подмассива размера 2 с суммой 0: {0, 1}, {2, 3} - - // Проверка - vector> expected1 = {{0, 1}, {2, 3}}; - assert(result1 == expected1); - - // Тест 2: Большой K, чтобы увидеть разницу во времени работы - vector arr2 = {1, -1, 2, -2, 3, -3}; - int K2 = 4; - vector> result2 = findZeroSumSubarrays(arr2, K2); - assert(result2.size() == 3); // Существует три подмассива размера 4 с суммой 0 - - // Проверка - vector> expected2 = {{0, 1, 2, 3}, {0, 1, 4, 5}, {2, 3, 4, 5}}; - assert(result2 == expected2); - - cout << "Все тесты пройдены успешно!" << endl; - - return 0; -} \ No newline at end of file