initial commit
This commit is contained in:
commit
c3fa5367c3
50
C++/.vscode/settings.json
vendored
Normal file
50
C++/.vscode/settings.json
vendored
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
{
|
||||||
|
"files.associations": {
|
||||||
|
"algorithm": "cpp",
|
||||||
|
"iostream": "cpp",
|
||||||
|
"numeric": "cpp",
|
||||||
|
"array": "cpp",
|
||||||
|
"atomic": "cpp",
|
||||||
|
"bit": "cpp",
|
||||||
|
"*.tcc": "cpp",
|
||||||
|
"cctype": "cpp",
|
||||||
|
"clocale": "cpp",
|
||||||
|
"cmath": "cpp",
|
||||||
|
"compare": "cpp",
|
||||||
|
"concepts": "cpp",
|
||||||
|
"cstdarg": "cpp",
|
||||||
|
"cstddef": "cpp",
|
||||||
|
"cstdint": "cpp",
|
||||||
|
"cstdio": "cpp",
|
||||||
|
"cstdlib": "cpp",
|
||||||
|
"cwchar": "cpp",
|
||||||
|
"cwctype": "cpp",
|
||||||
|
"deque": "cpp",
|
||||||
|
"string": "cpp",
|
||||||
|
"unordered_map": "cpp",
|
||||||
|
"vector": "cpp",
|
||||||
|
"exception": "cpp",
|
||||||
|
"functional": "cpp",
|
||||||
|
"iterator": "cpp",
|
||||||
|
"memory": "cpp",
|
||||||
|
"memory_resource": "cpp",
|
||||||
|
"random": "cpp",
|
||||||
|
"string_view": "cpp",
|
||||||
|
"system_error": "cpp",
|
||||||
|
"tuple": "cpp",
|
||||||
|
"type_traits": "cpp",
|
||||||
|
"utility": "cpp",
|
||||||
|
"initializer_list": "cpp",
|
||||||
|
"iosfwd": "cpp",
|
||||||
|
"istream": "cpp",
|
||||||
|
"limits": "cpp",
|
||||||
|
"new": "cpp",
|
||||||
|
"numbers": "cpp",
|
||||||
|
"ostream": "cpp",
|
||||||
|
"stdexcept": "cpp",
|
||||||
|
"streambuf": "cpp",
|
||||||
|
"typeinfo": "cpp",
|
||||||
|
"ctime": "cpp",
|
||||||
|
"cstring": "cpp"
|
||||||
|
}
|
||||||
|
}
|
547
C++/C++.md
Normal file
547
C++/C++.md
Normal file
@ -0,0 +1,547 @@
|
|||||||
|
# УДАЧИ НАМ
|
||||||
|
|
||||||
|
## Statement
|
||||||
|
|
||||||
|
> Наименьшая независимая еденица в языке C++
|
||||||
|
|
||||||
|
### Основные
|
||||||
|
|
||||||
|
* declaration:
|
||||||
|
|
||||||
|
```C++
|
||||||
|
int i;
|
||||||
|
```
|
||||||
|
|
||||||
|
* assigment :
|
||||||
|
|
||||||
|
```C++
|
||||||
|
i = 5;
|
||||||
|
```
|
||||||
|
|
||||||
|
* Output (хоть Коля и не согласен, что это основной)
|
||||||
|
|
||||||
|
```C++
|
||||||
|
std::cout << i;
|
||||||
|
```
|
||||||
|
|
||||||
|
declaration и assigment можно вместе
|
||||||
|
|
||||||
|
```C++
|
||||||
|
int i = 5;
|
||||||
|
```
|
||||||
|
|
||||||
|
## Expression
|
||||||
|
|
||||||
|
> Любое выражение: число, строка, вызов функции, мат(на английском). выражения
|
||||||
|
|
||||||
|
## Функции
|
||||||
|
|
||||||
|
> Последовательность statement'ов. Исполнение начинается с функции main()
|
||||||
|
|
||||||
|
## Библиотеки
|
||||||
|
|
||||||
|
> Набор скомпилированного кода, для использования в других программах
|
||||||
|
|
||||||
|
### Примеры библиотек
|
||||||
|
|
||||||
|
* iostream - для ввода / вывода
|
||||||
|
|
||||||
|
## Коментарии
|
||||||
|
|
||||||
|
* Однострочные
|
||||||
|
|
||||||
|
```C++
|
||||||
|
// Коментарий
|
||||||
|
```
|
||||||
|
|
||||||
|
* Многострочные
|
||||||
|
|
||||||
|
```C++
|
||||||
|
/* Длинный
|
||||||
|
Коментарий */
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пример простой программы
|
||||||
|
|
||||||
|
```C++
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
std::cout << "Hello, world!\n";
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Переменные
|
||||||
|
|
||||||
|
> В C++ есть переменные, они жрут оперативку
|
||||||
|
|
||||||
|
* Копирующая инициализация
|
||||||
|
|
||||||
|
```C++
|
||||||
|
int val = 5;
|
||||||
|
```
|
||||||
|
|
||||||
|
* Прямая инициализация
|
||||||
|
|
||||||
|
```C++
|
||||||
|
int val(5);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Неинициализированные переменные
|
||||||
|
|
||||||
|
> Неинициализированные переменные могут иметь в себе мусор, что может привести к ошибкам
|
||||||
|
|
||||||
|
### Инициализация и объявление нескольких переменных
|
||||||
|
|
||||||
|
```C++
|
||||||
|
int a, b;
|
||||||
|
```
|
||||||
|
|
||||||
|
```C++
|
||||||
|
int a = 5, b = 6;
|
||||||
|
```
|
||||||
|
|
||||||
|
## Типы данных
|
||||||
|
|
||||||
|
* void - ничего
|
||||||
|
|
||||||
|
### Числа
|
||||||
|
|
||||||
|
* short - число 16 бит
|
||||||
|
* int - число 16 или 32 бита
|
||||||
|
* long - число 32 бита
|
||||||
|
* long long - число 64 бита
|
||||||
|
* char - число или символ. 8 бит
|
||||||
|
|
||||||
|
#### Отрицательные числа
|
||||||
|
|
||||||
|
* signed - может быть отрицательным (по умолчанию, кроме char)
|
||||||
|
* unsigned - число не отрицательно
|
||||||
|
|
||||||
|
#### Переполнение
|
||||||
|
|
||||||
|
* Переполнение случается при потере бит из-за того, что значение после операции выходит за границу их значений
|
||||||
|
|
||||||
|
65635 как unsigned int + 1 выдаст 0
|
||||||
|
|
||||||
|
#### Целочисленное деление
|
||||||
|
|
||||||
|
Деление двух цилочисленных значений всегда выдаёт целое число (округление вниз)
|
||||||
|
|
||||||
|
### Символьные тип char
|
||||||
|
|
||||||
|
char представляет собой 1 символ (не всегда) и всегда весит 1 байт.
|
||||||
|
|
||||||
|
Для инициализации char символом используется *одинарные* ковычки
|
||||||
|
|
||||||
|
### Строки
|
||||||
|
|
||||||
|
Для строк используется библиотека string. Строки указываются в двойных ковычках
|
||||||
|
|
||||||
|
### Типы данных с плавающией точкой
|
||||||
|
|
||||||
|
Типы с плавающей могут показывать дробные числа
|
||||||
|
|
||||||
|
* float - 32 бита
|
||||||
|
* double - 64 бита (двойная точность по сравнению с float)
|
||||||
|
* long double - от 8 до 16 байт (зависит от компилятора)
|
||||||
|
|
||||||
|
### Логические значения
|
||||||
|
|
||||||
|
* true
|
||||||
|
* false
|
||||||
|
|
||||||
|
## Константы
|
||||||
|
|
||||||
|
> Величины, которые остаются неизменными. Они должны быть инициализированны при объявлении
|
||||||
|
|
||||||
|
## IOSTREAM
|
||||||
|
|
||||||
|
### Подключение IOSTREAM
|
||||||
|
|
||||||
|
```C++
|
||||||
|
#include <iostream>;
|
||||||
|
```
|
||||||
|
|
||||||
|
### *cout*
|
||||||
|
|
||||||
|
> *cout* - объект для вывода в терминал
|
||||||
|
|
||||||
|
```C++
|
||||||
|
#include <iostream>;
|
||||||
|
|
||||||
|
std::cout << 5 << '\n';
|
||||||
|
```
|
||||||
|
|
||||||
|
### *endl*
|
||||||
|
|
||||||
|
> endl можно использовать как '\n'
|
||||||
|
|
||||||
|
```C++
|
||||||
|
#include <iostream>;
|
||||||
|
|
||||||
|
std::cout << 5 << std::endl;
|
||||||
|
```
|
||||||
|
|
||||||
|
### *cin*
|
||||||
|
|
||||||
|
> cin используется для ввода значений из терминала
|
||||||
|
|
||||||
|
```C++
|
||||||
|
#include <iostream>;
|
||||||
|
|
||||||
|
int a = 0;
|
||||||
|
std::cin >> a;
|
||||||
|
```
|
||||||
|
|
||||||
|
## Ветвление
|
||||||
|
|
||||||
|
```C++
|
||||||
|
#include <iostream>;
|
||||||
|
|
||||||
|
int a = 5;
|
||||||
|
if (a == 5) {
|
||||||
|
std::cout << 5 << '\n';
|
||||||
|
} else if (a == 6) {
|
||||||
|
std::cout << 6 << '\n';
|
||||||
|
} else {
|
||||||
|
std::cout << "Neither\n";
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Логические операторы
|
||||||
|
|
||||||
|
* && - и
|
||||||
|
* || - или
|
||||||
|
* ! - не
|
||||||
|
|
||||||
|
## Циклы
|
||||||
|
|
||||||
|
### Цикл for
|
||||||
|
|
||||||
|
> for (инициализация; условие; изменение)
|
||||||
|
|
||||||
|
```C++
|
||||||
|
#include <iostream>;
|
||||||
|
|
||||||
|
// Выводит числа от 0 до 5 включительно
|
||||||
|
for (int i = 0; i <= 5; i++) {
|
||||||
|
std::cout << i << '\n';
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Цикл while (с пред условием)
|
||||||
|
|
||||||
|
```C++
|
||||||
|
#include <iostream>;
|
||||||
|
|
||||||
|
// Аналогичен коду сверху
|
||||||
|
int i = 0;
|
||||||
|
while (i <= 5) {
|
||||||
|
std::cout << i << '\n';
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Цикл do while
|
||||||
|
|
||||||
|
> Цикл do while выполнит тело хотя бы один раз, даже если условие изначально false
|
||||||
|
|
||||||
|
```C++
|
||||||
|
#include <iostream>;
|
||||||
|
|
||||||
|
|
||||||
|
// Выведет 0 (не смотря на то, что 0 чётное) и 1
|
||||||
|
int i = 0
|
||||||
|
do {
|
||||||
|
std::cout << i << '\n';
|
||||||
|
i++;
|
||||||
|
} while (i % 2 != 0)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Операторы прерывания
|
||||||
|
|
||||||
|
* *break*
|
||||||
|
* *continue*
|
||||||
|
|
||||||
|
Они аналогичны оным из Python
|
||||||
|
|
||||||
|
## switch
|
||||||
|
|
||||||
|
```C++
|
||||||
|
int a = 5;
|
||||||
|
switch(a){
|
||||||
|
case 1:
|
||||||
|
std::cout << "1" << '\n';
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
std::cout << "2" << '\n';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
std::cout << "Other" << '\n';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Goto
|
||||||
|
|
||||||
|
> Goto позволяет перейти к исполнению другого блока кода. Если будете его использовать, то придёт страшный Николай и даст по рукам книжкой о правильном написании кода
|
||||||
|
|
||||||
|
```C++
|
||||||
|
mark:
|
||||||
|
// do-something
|
||||||
|
|
||||||
|
// 1 eternity later (возможно даже в другой функции)
|
||||||
|
|
||||||
|
goto mark;
|
||||||
|
```
|
||||||
|
|
||||||
|
## Массивы
|
||||||
|
|
||||||
|
> Структура данных позволяющая хранить набор элементов одного типа. Объявление состоит из указания типа и размерности. Массивы в C++ имеют нумерацию элементов, начинающуюся с 0
|
||||||
|
|
||||||
|
### Объявление массива
|
||||||
|
|
||||||
|
```C++
|
||||||
|
int number[5]; // пять интов. Массив называется numbers
|
||||||
|
char chars[20];
|
||||||
|
bool flags[3];
|
||||||
|
```
|
||||||
|
|
||||||
|
### Инициализация массива
|
||||||
|
|
||||||
|
```C++
|
||||||
|
int numbers[3] = {10, 20, 30};
|
||||||
|
int foo[] = {10, 20, 30}; // Тоже будет на 3 элемента
|
||||||
|
int bar[10] = {10, 20, 30} // Оставшиеся 8 не инициализированны
|
||||||
|
```
|
||||||
|
|
||||||
|
### Обход массива
|
||||||
|
|
||||||
|
```C++
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int numbers[] = {10, 20, 30}
|
||||||
|
|
||||||
|
for (int i = 0; i < 3; i++) {
|
||||||
|
std::cout << i << '\n';
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Размер массива
|
||||||
|
|
||||||
|
```C++
|
||||||
|
int arr[5];
|
||||||
|
|
||||||
|
int n = sizeof(arr) / sizeof(int); // n - длинна массива
|
||||||
|
```
|
||||||
|
|
||||||
|
### Многомерные массивы
|
||||||
|
|
||||||
|
```C++
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int arr[2][2] = {{10, 20}, {30, 40}};
|
||||||
|
for (int i = 0; i < 2; i++) {
|
||||||
|
for (int j = 0; j < 2; j++) {
|
||||||
|
std::cout << arr[i][j] << '\n';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Динамический массив
|
||||||
|
|
||||||
|
> Массив, размер которого может быть указан в runtime. Ключевое слово *new* используется для создания, a *delete* для освобождения памяти.
|
||||||
|
|
||||||
|
```C++
|
||||||
|
int* dynamic_array = new int[5]; // dynamic_array - список из 5 чисел
|
||||||
|
delete[] dynamic_array;
|
||||||
|
```
|
||||||
|
|
||||||
|
```C++
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int n;
|
||||||
|
std::cin >> n;
|
||||||
|
int* nums = new int[n];
|
||||||
|
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
std::cin >> nums[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < n; i ++) {
|
||||||
|
std::cout << nums[i] << ' ';
|
||||||
|
}
|
||||||
|
std::cout << std::endl;
|
||||||
|
|
||||||
|
delete[] nums;
|
||||||
|
```
|
||||||
|
|
||||||
|
## Процедуры и функции
|
||||||
|
|
||||||
|
> Процедуры - функции, которые возвращают void
|
||||||
|
|
||||||
|
```C++
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
// Функция, возвращает int который получила
|
||||||
|
int foo(int n) {
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Процедура
|
||||||
|
void bar(int n) {
|
||||||
|
std::cout << n << '\n';
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Передача значений в функцию
|
||||||
|
|
||||||
|
> При передаче аргумента, как значения, создаётся его копия, а при передаче по ссылки, копия не создаётся и может менять его
|
||||||
|
|
||||||
|
```C++
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
void increment1(int i) {
|
||||||
|
i++;
|
||||||
|
std::cout << i << '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
void increment2(int& i) {
|
||||||
|
i++;
|
||||||
|
std::cout << i << '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int i = 5;
|
||||||
|
increment1(i) // Выведет 6, но i останется 5
|
||||||
|
increment2(i) // Выведет 6, и i станет 6
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Передача массивов в функцию
|
||||||
|
|
||||||
|
> При передаче массивов в функцию, нужно кинуть туда ещё и длину. Функция может менять оригинальный массив. Копия не создаётся
|
||||||
|
|
||||||
|
```C++
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
void foo(int bar[], int size) {
|
||||||
|
if (size >= 1) {
|
||||||
|
std::cout << bar[1] << '\n';
|
||||||
|
} else {
|
||||||
|
std::cout << "Not enough elements\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Ссылки и указатели
|
||||||
|
|
||||||
|
> *Ссылка* (*reference*) - псевдоним джя существующей переменной. Может иметь не валидный адрес или быть не инициализированной
|
||||||
|
|
||||||
|
```C++
|
||||||
|
int a = 5;
|
||||||
|
int& b = a; // При изменении b, будет меняться a
|
||||||
|
b++; // a и b станут 6
|
||||||
|
```
|
||||||
|
|
||||||
|
> Указатель (*pointer*) содержит адрес существующей переменной
|
||||||
|
|
||||||
|
```C++
|
||||||
|
int a = 5;
|
||||||
|
int* b = &a; // При изменении b, будет меняться a
|
||||||
|
(*b)++ // a станет равна 6
|
||||||
|
```
|
||||||
|
|
||||||
|
## Строки (углубление)
|
||||||
|
|
||||||
|
```C++
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
std::string a = "abc";
|
||||||
|
|
||||||
|
// b - копия a
|
||||||
|
std::string b = a;
|
||||||
|
|
||||||
|
// c содержит 'c'
|
||||||
|
сhar c = a[2];
|
||||||
|
|
||||||
|
// последний символ a стал z
|
||||||
|
a[2] = 'z'
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Перебор символов
|
||||||
|
|
||||||
|
```C++
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
std::string a = "abc"
|
||||||
|
for (char c: a) {
|
||||||
|
std::cout << c << '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < a.length(); i++) {
|
||||||
|
std::cout << a[i] << '\n';
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Ввод строки с клавиатуры
|
||||||
|
|
||||||
|
```C++
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
std::string str;
|
||||||
|
// Ввести 1 слово
|
||||||
|
std::cin >> str;
|
||||||
|
|
||||||
|
// Ввести строку
|
||||||
|
std::getLine(std::cin, str);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Полезные методы строк
|
||||||
|
|
||||||
|
* length(), size() - длина строки
|
||||||
|
* substr(start,length) - извлекает часть строки
|
||||||
|
* find(substring) - первое вхождение
|
||||||
|
* replace(oldString, NewString) - заменяет все вхождения из старой в новую строку (ничего не возвращает, изменения на месте)
|
||||||
|
* toupper(), tolower() - меняет регистр соответсвенно названию
|
||||||
|
* empty() - проверяет пустая ли строка
|
||||||
|
* compare() -сравнивает две строки. Возвращает 0, если строкми одинаковые.
|
||||||
|
* insert(index,string) - вставляет строку в указанную позицию.
|
||||||
|
* erase(start,length) - удалает часть строки
|
||||||
|
|
||||||
|
### Полезные функции для строк
|
||||||
|
|
||||||
|
* getLine(inputStream, string) - считывает строку из потока и тсохраняет в переменную str
|
||||||
|
|
||||||
|
## Способы передачи аргументов в функию
|
||||||
|
|
||||||
|
* по значению (pass by value) - создание копии
|
||||||
|
* Изначальное не меняется
|
||||||
|
* Создание копии может занимать много времени
|
||||||
|
* Используется для передачи примитивов
|
||||||
|
* по сслылке (pass by reference) - передача в функцию указатель на объект
|
||||||
|
* Изначальное значение может меняться
|
||||||
|
* Копия не создаётся
|
||||||
|
* Используется для составных типов и больших объектов
|
||||||
|
* Передача по указателю (pass by pointer) - pass by reference без кучки синтактического сахара
|
||||||
|
Разименование - операция, которая позволяет получить доступ к значению, на которое указывает pointer.(*)
|
||||||
|
|
||||||
|
```C++
|
||||||
|
void boo(int* ptr) {
|
||||||
|
(*ptr)++;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Возврат значений из функции
|
||||||
|
|
||||||
|
* Возврат по значению return
|
||||||
|
* Важно не вернуть ссылку или указатель на локальную переменную
|
||||||
|
|
||||||
|
## Структуры
|
||||||
|
|
||||||
|
> Структура - тип данных, позоляющий объединить несколько переменных в одной еденице.
|
11
C++/THE_HARDEST_TASK.CPP
Normal file
11
C++/THE_HARDEST_TASK.CPP
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int i = 2;
|
||||||
|
mark:
|
||||||
|
std::cout << i << '\n';
|
||||||
|
if (i < 50) {
|
||||||
|
i += 2;
|
||||||
|
goto mark;
|
||||||
|
}
|
||||||
|
}
|
5
C++/lesson1/task1.cpp
Normal file
5
C++/lesson1/task1.cpp
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
std::cout << "Hello, world!\n";
|
||||||
|
}
|
9
C++/lesson1/task2.cpp
Normal file
9
C++/lesson1/task2.cpp
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
std::string a = "Hello";
|
||||||
|
std::string b = "Привет";
|
||||||
|
std::cout << a.length() << '\n';
|
||||||
|
std::cout << b.length() << '\n';
|
||||||
|
}
|
17
C++/lesson1/task3.cpp
Normal file
17
C++/lesson1/task3.cpp
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int min = 6;
|
||||||
|
for (int i = 0; i < 5; i++) {
|
||||||
|
int value;
|
||||||
|
std::cin >> value;
|
||||||
|
if (value < min) {
|
||||||
|
min = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (min < 4) {
|
||||||
|
std::cout << "Could be better\n";
|
||||||
|
} else {
|
||||||
|
std::cout << "Great!\n";
|
||||||
|
}
|
||||||
|
}
|
21
C++/lesson1/task4.cpp
Normal file
21
C++/lesson1/task4.cpp
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int age1 = 1;
|
||||||
|
int age2 = 1;
|
||||||
|
int age3 = 1;
|
||||||
|
int weight1 = 4;
|
||||||
|
int weight2 = 4;
|
||||||
|
int weight3 = 1;
|
||||||
|
string color1 = "g";
|
||||||
|
string color2 = "r";
|
||||||
|
string color3 = "y";
|
||||||
|
if (age1 == age2 && age2 == age3 && weight1 == weight2 && weight2 == weight3 && !(color1 == color2 && color2 == color3)) {
|
||||||
|
cout << "YES\n";
|
||||||
|
} else {
|
||||||
|
cout << "NO\n";
|
||||||
|
}
|
||||||
|
}
|
13
C++/lesson1/task5.cpp
Normal file
13
C++/lesson1/task5.cpp
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
float age;
|
||||||
|
std::cin >> age;
|
||||||
|
if (age <= 1) {
|
||||||
|
std::cout << "Молодая\n";
|
||||||
|
} else if (age <= 5) {
|
||||||
|
std::cout << "Взрослая\n";
|
||||||
|
} else {
|
||||||
|
std::cout << "Старая\n";
|
||||||
|
}
|
||||||
|
}
|
20
C++/lesson1/task6.cpp
Normal file
20
C++/lesson1/task6.cpp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int a;
|
||||||
|
std::cin >> a;
|
||||||
|
switch (a) {
|
||||||
|
case 1:
|
||||||
|
std::cout << "Дизайн\n";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
std::cout << "Программирование\n";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
std::cout << "Веб\n";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
std::cout << "Сис-админ\n";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
13
C++/lesson2/task1.cpp
Normal file
13
C++/lesson2/task1.cpp
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int num;
|
||||||
|
|
||||||
|
std::cin >> num;
|
||||||
|
|
||||||
|
for (int i = num; i >= 1; i--) {
|
||||||
|
if (i % 3 == 0) {
|
||||||
|
std::cout << i << '\n';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
17
C++/lesson2/task10.cpp
Normal file
17
C++/lesson2/task10.cpp
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
std::string value = std::string();
|
||||||
|
std::cin >> value;
|
||||||
|
int offset;
|
||||||
|
std::cin >> offset;
|
||||||
|
offset = offset % 26 - 'A';
|
||||||
|
for (char& c : value) {
|
||||||
|
if (c > 'Z' || c < 'A') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
c = (c + offset) % 26 + 'A';
|
||||||
|
}
|
||||||
|
std::cout << value << '\n';
|
||||||
|
}
|
14
C++/lesson2/task2.cpp
Normal file
14
C++/lesson2/task2.cpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
unsigned sum = 0;
|
||||||
|
while (true) {
|
||||||
|
int i;
|
||||||
|
std::cin >> i;
|
||||||
|
if (i < 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
sum += i;
|
||||||
|
}
|
||||||
|
std::cout << sum << '\n';
|
||||||
|
}
|
12
C++/lesson2/task3.cpp
Normal file
12
C++/lesson2/task3.cpp
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
const int days[]{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
|
||||||
|
int month;
|
||||||
|
std::cin >> month;
|
||||||
|
if (month <= 0 || month > 12) {
|
||||||
|
std::cout << "You are a bad person!\n";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
std::cout << days[month - 1] << '\n';
|
||||||
|
}
|
17
C++/lesson2/task4.cpp
Normal file
17
C++/lesson2/task4.cpp
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int sum = 0;
|
||||||
|
int num;
|
||||||
|
std::cin >> num;
|
||||||
|
if (num < 0) {
|
||||||
|
std::cout << "You are a bad person!\n";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
while (num != 0) {
|
||||||
|
int digit = num % 10;
|
||||||
|
num /= 10;
|
||||||
|
sum += digit;
|
||||||
|
}
|
||||||
|
std::cout << sum << '\n';
|
||||||
|
}
|
21
C++/lesson2/task5.cpp
Normal file
21
C++/lesson2/task5.cpp
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <numeric>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int a, b;
|
||||||
|
std::cin >> a;
|
||||||
|
std::cin >> b;
|
||||||
|
std::cout << std::lcm(a, b) << '\n';
|
||||||
|
// int guess;
|
||||||
|
// if (a > b) {
|
||||||
|
// guess = a;
|
||||||
|
// } else {
|
||||||
|
// guess = b;
|
||||||
|
// }
|
||||||
|
// for (;; guess++) {
|
||||||
|
// if (guess % a == 0 && guess % b == 0) {
|
||||||
|
// std::cout << guess << '\n';
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
27
C++/lesson2/task6.cpp
Normal file
27
C++/lesson2/task6.cpp
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
#include <cmath>
|
||||||
|
#include <iostream>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int n;
|
||||||
|
std::cin >> n;
|
||||||
|
if (n < 0) {
|
||||||
|
std::cout << "You are a bad person!\n";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
std::vector<bool> values(n + 1, true);
|
||||||
|
int root = sqrt(n);
|
||||||
|
for (unsigned int i = 2; i <= root; i++) {
|
||||||
|
if (values[i]) {
|
||||||
|
std::cout << i << '\n';
|
||||||
|
for (int j = i * i; j <= n; j += i) {
|
||||||
|
values[j] = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (int i = root + 1; i <= n; i++) {
|
||||||
|
if (values[i]) {
|
||||||
|
std::cout << i << '\n';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
21
C++/lesson2/task7.cpp
Normal file
21
C++/lesson2/task7.cpp
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
std::string value = std::string();
|
||||||
|
value.reserve(9);
|
||||||
|
for (int count = 4; count >= 0; count--) {
|
||||||
|
value.clear();
|
||||||
|
for (int j = 0; j < count; j++) {
|
||||||
|
value.push_back(' ');
|
||||||
|
}
|
||||||
|
int limit = 9 - count * 2;
|
||||||
|
for (int j = 0; j < limit; j++) {
|
||||||
|
value.push_back('*');
|
||||||
|
}
|
||||||
|
for (int j = 0; j < count; j++) {
|
||||||
|
value.push_back(' ');
|
||||||
|
}
|
||||||
|
std::cout << value << '\n';
|
||||||
|
}
|
||||||
|
}
|
36
C++/lesson2/task8.cpp
Normal file
36
C++/lesson2/task8.cpp
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int height;
|
||||||
|
std::cin >> height;
|
||||||
|
std::string value = std::string();
|
||||||
|
for (int count = height - 1; count >= 0; count--) {
|
||||||
|
value.clear();
|
||||||
|
for (int j = 0; j < count; j++) {
|
||||||
|
value.push_back(' ');
|
||||||
|
}
|
||||||
|
int limit = height * 2 - 1 - count * 2;
|
||||||
|
for (int j = 0; j < limit; j++) {
|
||||||
|
value.push_back('*');
|
||||||
|
}
|
||||||
|
for (int j = 0; j < count; j++) {
|
||||||
|
value.push_back(' ');
|
||||||
|
}
|
||||||
|
std::cout << value << '\n';
|
||||||
|
}
|
||||||
|
for (int count = 1; count < height; count++) {
|
||||||
|
value.clear();
|
||||||
|
for (int j = 0; j < count; j++) {
|
||||||
|
value.push_back(' ');
|
||||||
|
}
|
||||||
|
int limit = height * 2 - 1 - count * 2;
|
||||||
|
for (int j = 0; j < limit; j++) {
|
||||||
|
value.push_back('*');
|
||||||
|
}
|
||||||
|
for (int j = 0; j < count; j++) {
|
||||||
|
value.push_back(' ');
|
||||||
|
}
|
||||||
|
std::cout << value << '\n';
|
||||||
|
}
|
||||||
|
}
|
23
C++/lesson2/task9.cpp
Normal file
23
C++/lesson2/task9.cpp
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
unsigned int sum = 0;
|
||||||
|
while (true) {
|
||||||
|
int num;
|
||||||
|
std::cin >> num;
|
||||||
|
if (num == 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (num < 0) {
|
||||||
|
std::cout << "You are a bad person!\n";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
sum += num;
|
||||||
|
}
|
||||||
|
if (sum > 1000) {
|
||||||
|
sum += sum * 2 / 10;
|
||||||
|
} else if (sum < 500) {
|
||||||
|
sum -= sum / 10;
|
||||||
|
}
|
||||||
|
std::cout << sum << '\n';
|
||||||
|
}
|
18
C++/lesson3/task0.cpp
Normal file
18
C++/lesson3/task0.cpp
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int n;
|
||||||
|
std::cin >> n;
|
||||||
|
int* nums = new int[n];
|
||||||
|
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
std::cin >> nums[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
std::cout << nums[i] << ' ';
|
||||||
|
}
|
||||||
|
std::cout << std::endl;
|
||||||
|
|
||||||
|
delete[] nums;
|
||||||
|
}
|
18
C++/lesson3/task1.cpp
Normal file
18
C++/lesson3/task1.cpp
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int a[10] = {11, 34, 32, 5, 86, 34, 123, 456, 148, 3456};
|
||||||
|
int min = a[0];
|
||||||
|
int max = a[0];
|
||||||
|
|
||||||
|
for (int i = 0; i < 10; i++) {
|
||||||
|
if (a[i] < min) {
|
||||||
|
min = a[i];
|
||||||
|
}
|
||||||
|
if (a[i] > max) {
|
||||||
|
max = a[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
std::cout << min << "\n";
|
||||||
|
std::cout << max << "\n";
|
||||||
|
}
|
19
C++/lesson3/task2.cpp
Normal file
19
C++/lesson3/task2.cpp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#include <cstdlib>
|
||||||
|
#include <ctime>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int nums[10];
|
||||||
|
std::srand(std::time(NULL));
|
||||||
|
for (int i = 0; i < 10; i++) {
|
||||||
|
nums[i] = rand() % 100 + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int sum = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < 10; i++) {
|
||||||
|
sum += nums[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
std::cout << sum / 10 << '\n';
|
||||||
|
}
|
20
C++/lesson3/task3.cpp
Normal file
20
C++/lesson3/task3.cpp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int n;
|
||||||
|
std::cin >> n;
|
||||||
|
|
||||||
|
int* nums = new int[n];
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
std::cin >> nums[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
int sum = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
sum += nums[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
std::cout << sum << '\n';
|
||||||
|
delete[] nums;
|
||||||
|
}
|
26
C++/lesson3/task4.cpp
Normal file
26
C++/lesson3/task4.cpp
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int n;
|
||||||
|
std::cin >> n;
|
||||||
|
int a[n][n];
|
||||||
|
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
for (int j = 0; j < n; j++) {
|
||||||
|
a[i][j] = i * j;
|
||||||
|
std::cout << a[i][j] << " ";
|
||||||
|
}
|
||||||
|
std::cout << "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
int s = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
for (int j = 0; j < n; j++) {
|
||||||
|
s += a[i][j];
|
||||||
|
}
|
||||||
|
int avg = s / n;
|
||||||
|
std::cout << avg << "\n";
|
||||||
|
s = 0;
|
||||||
|
}
|
||||||
|
}
|
23
C++/lesson3/task5.cpp
Normal file
23
C++/lesson3/task5.cpp
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
|
||||||
|
|
||||||
|
for (int i = 0; i < 3; i++) {
|
||||||
|
for (int j = 0; j < 3; j++) {
|
||||||
|
std::cout << a[i][j] << ' ';
|
||||||
|
}
|
||||||
|
std::cout << '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
std::cout << '\n';
|
||||||
|
|
||||||
|
std::swap(a[0], a[2]);
|
||||||
|
|
||||||
|
for (int i = 0; i < 3; i++) {
|
||||||
|
for (int j = 0; j < 3; j++) {
|
||||||
|
std::cout << a[i][j] << ' ';
|
||||||
|
}
|
||||||
|
std::cout << '\n';
|
||||||
|
}
|
||||||
|
}
|
22
C++/lesson3/task6.cpp
Normal file
22
C++/lesson3/task6.cpp
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
void bubbleSort(int data[], int lenD) {
|
||||||
|
int tmp = 0;
|
||||||
|
for (int i = 0; i < lenD; i++) {
|
||||||
|
for (int j = (lenD - 1); j >= (i + 1); j--) {
|
||||||
|
if (data[j] < data[j - 1]) {
|
||||||
|
tmp = data[j];
|
||||||
|
data[j] = data[j - 1];
|
||||||
|
data[j - 1] = tmp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int a[3] = {1, 3, 5};
|
||||||
|
int b[3] = {0, 2, 4};
|
||||||
|
|
||||||
|
int c[6];
|
||||||
|
for (int)
|
||||||
|
}
|
13
C++/lesson4/task1.cpp
Normal file
13
C++/lesson4/task1.cpp
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
void increment(int& num) {
|
||||||
|
num++;
|
||||||
|
std::cout << "Inside function: " << num << "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int x = 5;
|
||||||
|
increment(x);
|
||||||
|
std::cout << "Outside function: " << x << "\n";
|
||||||
|
return 0;
|
||||||
|
}
|
11
C++/lesson4/task2.cpp
Normal file
11
C++/lesson4/task2.cpp
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
void foo(int* bar) {
|
||||||
|
(*bar)++;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int a[3] = {10, 20, 300};
|
||||||
|
foo(a);
|
||||||
|
std::cout << a[0];
|
||||||
|
}
|
14
C++/lesson4/task3.cpp
Normal file
14
C++/lesson4/task3.cpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
std::string s;
|
||||||
|
std::getline(std::cin, s);
|
||||||
|
unsigned count = 1;
|
||||||
|
for (char c : s) {
|
||||||
|
if (c == ' ') {
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
std::cout << count << '\n';
|
||||||
|
}
|
17
C++/lesson4/task4.cpp
Normal file
17
C++/lesson4/task4.cpp
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
const std::string vovels = "aeiouAEIOU";
|
||||||
|
std::string s;
|
||||||
|
std::getline(std::cin, s);
|
||||||
|
unsigned count = 0;
|
||||||
|
|
||||||
|
for (char c : s) {
|
||||||
|
if (vovels.find(c) != std::string::npos) {
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
std::cout << count << '\n';
|
||||||
|
}
|
11
C++/lesson4/task5.cpp
Normal file
11
C++/lesson4/task5.cpp
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
std::string s;
|
||||||
|
std::string sf;
|
||||||
|
std::string sr;
|
||||||
|
std::getline(std::cin, s);
|
||||||
|
std::getline(std::cin, sf);
|
||||||
|
std::getline(std::cin, sr);
|
||||||
|
}
|
16
C++/lesson4/task6.cpp
Normal file
16
C++/lesson4/task6.cpp
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
std::string s;
|
||||||
|
std::string r;
|
||||||
|
|
||||||
|
std::getline(std::cin, s);
|
||||||
|
r.reserve(s.length());
|
||||||
|
|
||||||
|
for (int i = s.length() - 1; i >= 0; i--) {
|
||||||
|
r.push_back(s[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::cout << r << '\n';
|
||||||
|
}
|
20
C++/lesson4/task7.cpp
Normal file
20
C++/lesson4/task7.cpp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
std::string s;
|
||||||
|
std::string f;
|
||||||
|
std::string r;
|
||||||
|
|
||||||
|
std::getline(std::cin, s);
|
||||||
|
std::getline(std::cin, f);
|
||||||
|
std::getline(std::cin, r);
|
||||||
|
|
||||||
|
size_t pos = s.find(f);
|
||||||
|
while (pos != std::string::npos) {
|
||||||
|
s.replace(pos, f.length(), r);
|
||||||
|
pos = s.find(f);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::cout << s << '\n';
|
||||||
|
}
|
14
C++/lesson5/task1.cpp
Normal file
14
C++/lesson5/task1.cpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
void addOne(int &x) {
|
||||||
|
x = x + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int a = 7;
|
||||||
|
std::cout << "a = " << a << '\n';
|
||||||
|
addOne(a);
|
||||||
|
std::cout << "a = " << a << '\n';
|
||||||
|
return 0;
|
||||||
|
}
|
16
C++/lesson5/task2.cpp
Normal file
16
C++/lesson5/task2.cpp
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
void boo(int *ptr) {
|
||||||
|
*ptr = 7;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
|
||||||
|
int value = 4;
|
||||||
|
|
||||||
|
std::cout << "value = " << value << '\n';
|
||||||
|
boo(&value);
|
||||||
|
std::cout << "value = " << value << '\n';
|
||||||
|
return 0;
|
||||||
|
}
|
30
C++/lesson7/task1.cpp
Normal file
30
C++/lesson7/task1.cpp
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
struct Good {
|
||||||
|
std::string name;
|
||||||
|
unsigned cost;
|
||||||
|
unsigned amount;
|
||||||
|
|
||||||
|
Good(std::string name, unsigned cost, unsigned amount) {
|
||||||
|
this->name = name;
|
||||||
|
this->cost = cost;
|
||||||
|
this->amount = amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
void information() {
|
||||||
|
std::cout << '(' << name << ',' << cost << ',' << amount
|
||||||
|
<< ")\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
void changeCost(unsigned cost) {
|
||||||
|
this->cost = cost;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
Good apple("Apple", 10, 20);
|
||||||
|
apple.information();
|
||||||
|
apple.changeCost(20);
|
||||||
|
apple.information();
|
||||||
|
}
|
43
C++/lesson7/task8.cpp
Normal file
43
C++/lesson7/task8.cpp
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
enum EventKind {
|
||||||
|
Lesson,
|
||||||
|
Meeting,
|
||||||
|
Celebration
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Event {
|
||||||
|
std::string name;
|
||||||
|
std::string time;
|
||||||
|
std::string date;
|
||||||
|
EventKind kind;
|
||||||
|
|
||||||
|
Event(std::string name, std::string time, std::string date, EventKind kind) {
|
||||||
|
this->name = name;
|
||||||
|
this->time = time;
|
||||||
|
this->date = date;
|
||||||
|
this->kind = kind;
|
||||||
|
}
|
||||||
|
|
||||||
|
void information() {
|
||||||
|
std::cout
|
||||||
|
<< '(' << name << ',' << time << ',' << date << ',' << kind << ')' << '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
~Event() {
|
||||||
|
std::cout
|
||||||
|
<< '(' << name << ',' << time << ',' << date << ',' << kind << ')' << " was deleted\n";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
void display_events(Event events[], size_t length) {
|
||||||
|
for (size_t i = 0; i < length; i++) {
|
||||||
|
events[i].information();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
Event m[3] = {Event("NewYear", "00:00", "31:12:2023", Celebration), Event("Breefing", "17:00", "15:06:2023", Meeting), Event("AI", "10:00", "03:07:2023", Lesson)};
|
||||||
|
display_events(m, 3);
|
||||||
|
}
|
160
C++/lesson7/task9.cpp
Normal file
160
C++/lesson7/task9.cpp
Normal file
@ -0,0 +1,160 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
class Book {
|
||||||
|
int id;
|
||||||
|
std::string name;
|
||||||
|
std::string writer;
|
||||||
|
std::string year;
|
||||||
|
|
||||||
|
public:
|
||||||
|
Book() {}
|
||||||
|
|
||||||
|
Book(unsigned id, std::string name, std::string writer, std::string year) {
|
||||||
|
this->id = id;
|
||||||
|
this->name = name;
|
||||||
|
this->writer = writer;
|
||||||
|
this->year = year;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string& get_name() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
std::string& get_writer() {
|
||||||
|
return writer;
|
||||||
|
}
|
||||||
|
std::string& get_year() {
|
||||||
|
return year;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setname(std::string name) {
|
||||||
|
this->name = name;
|
||||||
|
}
|
||||||
|
void setwriter(std::string writer) {
|
||||||
|
this->name = name;
|
||||||
|
}
|
||||||
|
void setyear(std::string year) {
|
||||||
|
this->name = name;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class Reader {
|
||||||
|
std::string name;
|
||||||
|
unsigned number;
|
||||||
|
|
||||||
|
public:
|
||||||
|
Reader() {}
|
||||||
|
|
||||||
|
Reader(std::string name, unsigned number) {
|
||||||
|
this->name = name;
|
||||||
|
this->number = number;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string& getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned getNumber() {
|
||||||
|
return number;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setName(std::string name) {
|
||||||
|
this->name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setNumber(unsigned number) {
|
||||||
|
this->number = number;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class Library {
|
||||||
|
public:
|
||||||
|
Reader* readers;
|
||||||
|
size_t amount_readers;
|
||||||
|
Book* books;
|
||||||
|
size_t amount_books;
|
||||||
|
|
||||||
|
Library() {
|
||||||
|
readers = new Reader[0];
|
||||||
|
amount_readers = 0;
|
||||||
|
books = new Book[0];
|
||||||
|
amount_books = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void addReader(Reader reader) {
|
||||||
|
Reader* new_readers = new Reader[amount_readers + 1];
|
||||||
|
for (size_t i = 0; i < amount_readers; i++) {
|
||||||
|
new_readers[i] = readers[i];
|
||||||
|
}
|
||||||
|
new_readers[amount_readers] = reader;
|
||||||
|
delete[] readers;
|
||||||
|
readers = new_readers;
|
||||||
|
amount_readers++;
|
||||||
|
}
|
||||||
|
|
||||||
|
void addBook(Book book) {
|
||||||
|
Book* new_books = new Book[amount_books + 1];
|
||||||
|
for (size_t i = 0; i < amount_books; i++) {
|
||||||
|
new_books[i] = books[i];
|
||||||
|
}
|
||||||
|
new_books[amount_books] = book;
|
||||||
|
delete[] books;
|
||||||
|
books = new_books;
|
||||||
|
amount_books++;
|
||||||
|
}
|
||||||
|
|
||||||
|
Book deleteBook(size_t n) {
|
||||||
|
Book* new_books = new Book[amount_books - 1];
|
||||||
|
|
||||||
|
for (size_t i = 0; i < n; i++) {
|
||||||
|
new_books[i] = books[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t j = n + 1; j < amount_books; j++) {
|
||||||
|
new_books[j - 1] = books[j];
|
||||||
|
}
|
||||||
|
Book deleted = books[n];
|
||||||
|
delete[] books;
|
||||||
|
books = new_books;
|
||||||
|
amount_books -= 1;
|
||||||
|
return deleted;
|
||||||
|
}
|
||||||
|
|
||||||
|
Book takeBook(size_t n) {
|
||||||
|
Book taken = this->deleteBook(n);
|
||||||
|
std::cout << "Book" << taken.get_name() << "is taken\n";
|
||||||
|
return taken;
|
||||||
|
}
|
||||||
|
|
||||||
|
void returnBook(Book book) {
|
||||||
|
std::cout << "Book" << book.get_name() << "is returned\n";
|
||||||
|
this->addBook(book);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
Book WarAndPeace(0, "WarAndPeace", "Tolstoy", "1867");
|
||||||
|
Book EugeneOnegin(1, "EugeneOnegin", "Pushkin", "1832");
|
||||||
|
Book HeroOfOurTime(2, "HeroOfOurTime", "Lemontov", "1840");
|
||||||
|
Book PortraitOfDorianGray(3, "PortraitOfDorianGray", "Wilde", "1890");
|
||||||
|
|
||||||
|
Library library;
|
||||||
|
library.addBook(WarAndPeace);
|
||||||
|
library.addBook(EugeneOnegin);
|
||||||
|
library.addBook(HeroOfOurTime);
|
||||||
|
library.addBook(PortraitOfDorianGray);
|
||||||
|
|
||||||
|
Reader petya("Petya", 0);
|
||||||
|
Reader vasya("Vasya", 1);
|
||||||
|
library.addReader(petya);
|
||||||
|
library.addReader(vasya);
|
||||||
|
|
||||||
|
Book book1 = library.takeBook(0);
|
||||||
|
Book book2 = library.takeBook(0);
|
||||||
|
|
||||||
|
library.returnBook(book1);
|
||||||
|
library.returnBook(book2);
|
||||||
|
|
||||||
|
library.takeBook(3);
|
||||||
|
}
|
105
C++/lesson8/ex5.cpp
Normal file
105
C++/lesson8/ex5.cpp
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class Character {
|
||||||
|
public:
|
||||||
|
std::string name;
|
||||||
|
int level;
|
||||||
|
int exp;
|
||||||
|
int health;
|
||||||
|
int attack;
|
||||||
|
int protection;
|
||||||
|
|
||||||
|
Character(std::string name) {
|
||||||
|
this->name = name;
|
||||||
|
level = 0;
|
||||||
|
exp = 0;
|
||||||
|
health = 10;
|
||||||
|
attack = 2;
|
||||||
|
protection = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
void levelUp() {
|
||||||
|
level++;
|
||||||
|
health += 5;
|
||||||
|
attack++;
|
||||||
|
protection++;
|
||||||
|
}
|
||||||
|
|
||||||
|
void gainExp(int amount) {
|
||||||
|
exp += amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
int getHelth() {
|
||||||
|
return health;
|
||||||
|
}
|
||||||
|
|
||||||
|
int getLevel() {
|
||||||
|
return level;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool isAlive() {
|
||||||
|
return health > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void attack_character(Character& target) {
|
||||||
|
if (target.protection == 0) {
|
||||||
|
target.health -= attack;
|
||||||
|
std::cout << target.name << " was attacked\n";
|
||||||
|
} else {
|
||||||
|
target.protection--;
|
||||||
|
std::cout << target.name << " has protection\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
Character vasiya("Вася");
|
||||||
|
Character petyia("Петя");
|
||||||
|
|
||||||
|
vasiya.levelUp();
|
||||||
|
vasiya.levelUp();
|
||||||
|
vasiya.levelUp();
|
||||||
|
|
||||||
|
petyia.levelUp();
|
||||||
|
petyia.levelUp();
|
||||||
|
|
||||||
|
vasiya.attack_character(petyia);
|
||||||
|
vasiya.attack_character(petyia);
|
||||||
|
|
||||||
|
petyia.attack_character(vasiya);
|
||||||
|
petyia.attack_character(vasiya);
|
||||||
|
|
||||||
|
vasiya.attack_character(vasiya); // Вася не умный
|
||||||
|
vasiya.attack_character(vasiya); // Вася не умный
|
||||||
|
vasiya.attack_character(vasiya); // Вася не умный
|
||||||
|
vasiya.attack_character(vasiya); // Вася не умный
|
||||||
|
vasiya.attack_character(vasiya); // Вася не умный
|
||||||
|
vasiya.attack_character(vasiya); // Вася не умный
|
||||||
|
vasiya.attack_character(vasiya); // Вася не умный
|
||||||
|
vasiya.attack_character(vasiya); // Вася не умный
|
||||||
|
vasiya.attack_character(vasiya); // Вася не умный
|
||||||
|
vasiya.attack_character(vasiya); // Вася не умный
|
||||||
|
vasiya.attack_character(vasiya); // Вася не умный
|
||||||
|
vasiya.attack_character(vasiya); // Вася не умный
|
||||||
|
vasiya.attack_character(vasiya); // Вася не умный
|
||||||
|
vasiya.attack_character(vasiya); // Вася не умный
|
||||||
|
vasiya.attack_character(vasiya); // Вася не умный
|
||||||
|
vasiya.attack_character(vasiya); // Вася не умный
|
||||||
|
vasiya.attack_character(vasiya); // Вася не умный
|
||||||
|
vasiya.attack_character(vasiya); // Вася не умный
|
||||||
|
vasiya.attack_character(vasiya); // Вася не умный
|
||||||
|
vasiya.attack_character(vasiya); // Вася не умный
|
||||||
|
|
||||||
|
if (vasiya.isAlive()) {
|
||||||
|
std::cout << "Вася как-то выжил\n";
|
||||||
|
} else {
|
||||||
|
std::cout << "Вася умер\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (petyia.isAlive()) {
|
||||||
|
std::cout << "Петя как-то выжил\n";
|
||||||
|
} else {
|
||||||
|
std::cout << "Петя умер\n";
|
||||||
|
}
|
||||||
|
}
|
162
C++/lesson8/ex7.cpp
Normal file
162
C++/lesson8/ex7.cpp
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class Passenger {
|
||||||
|
std::string firstName;
|
||||||
|
std::string lastName;
|
||||||
|
int passportNamber;
|
||||||
|
|
||||||
|
public:
|
||||||
|
Passenger() = default;
|
||||||
|
|
||||||
|
Passenger(std::string firstName, std::string lastName, int passportNamber) {
|
||||||
|
this->firstName = firstName;
|
||||||
|
this->lastName = lastName;
|
||||||
|
this->passportNamber = passportNamber;
|
||||||
|
}
|
||||||
|
|
||||||
|
void info() {
|
||||||
|
std::cout << firstName << ", " << lastName << ", " << passportNamber << "\n";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class Plane {
|
||||||
|
std::string model;
|
||||||
|
int year;
|
||||||
|
size_t seat_count;
|
||||||
|
|
||||||
|
public:
|
||||||
|
Passenger* passengers;
|
||||||
|
size_t passengerAmount;
|
||||||
|
|
||||||
|
Plane() = default;
|
||||||
|
|
||||||
|
Plane(std::string model, int year, size_t seat_count) {
|
||||||
|
passengerAmount = 0;
|
||||||
|
passengers = new Passenger[0];
|
||||||
|
this->model = model;
|
||||||
|
this->year = year;
|
||||||
|
this->seat_count = seat_count;
|
||||||
|
}
|
||||||
|
|
||||||
|
void info() {
|
||||||
|
std::cout << model << ", " << year << ", " << seat_count << '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
void PassengerInformation() {
|
||||||
|
for (size_t i = 0; i < passengerAmount; i++) {
|
||||||
|
passengers[i].info();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void addPassager(Passenger passenger) {
|
||||||
|
Passenger* new_passengers = new Passenger[passengerAmount + 1];
|
||||||
|
for (size_t i = 0; i < passengerAmount; i++) {
|
||||||
|
new_passengers[i] = passengers[i];
|
||||||
|
}
|
||||||
|
new_passengers[passengerAmount] = passenger;
|
||||||
|
delete[] passengers;
|
||||||
|
passengers = new_passengers;
|
||||||
|
passengerAmount++;
|
||||||
|
}
|
||||||
|
|
||||||
|
void removePassenger(size_t n) {
|
||||||
|
Passenger* new_passengers = new Passenger[passengerAmount - 1];
|
||||||
|
|
||||||
|
for (size_t i = 0; i < n; i++) {
|
||||||
|
new_passengers[i] = passengers[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t j = n + 1; j < passengerAmount; j++) {
|
||||||
|
new_passengers[j - 1] = passengers[j];
|
||||||
|
}
|
||||||
|
delete[] passengers;
|
||||||
|
passengers = new_passengers;
|
||||||
|
passengerAmount -= 1;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class FlyCompany {
|
||||||
|
Plane* planes;
|
||||||
|
size_t planeAmount;
|
||||||
|
|
||||||
|
public:
|
||||||
|
FlyCompany() {
|
||||||
|
planes = new Plane[0];
|
||||||
|
planeAmount = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void addPlane(Plane plane) {
|
||||||
|
Plane* new_planes = new Plane[planeAmount + 1];
|
||||||
|
for (size_t i = 0; i < planeAmount; i++) {
|
||||||
|
new_planes[i] = planes[i];
|
||||||
|
}
|
||||||
|
new_planes[planeAmount] = plane;
|
||||||
|
delete[] planes;
|
||||||
|
planes = new_planes;
|
||||||
|
planeAmount++;
|
||||||
|
}
|
||||||
|
|
||||||
|
void deletePlane(size_t n) {
|
||||||
|
Plane* new_planes = new Plane[planeAmount - 1];
|
||||||
|
|
||||||
|
for (size_t i = 0; i < n; i++) {
|
||||||
|
new_planes[i] = planes[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t j = n + 1; j < planeAmount; j++) {
|
||||||
|
new_planes[j - 1] = planes[j];
|
||||||
|
}
|
||||||
|
delete[] planes;
|
||||||
|
planes = new_planes;
|
||||||
|
planeAmount--;
|
||||||
|
}
|
||||||
|
|
||||||
|
void register_passenger(Passenger passanger, size_t plane_index) {
|
||||||
|
planes[plane_index].addPassager(passanger);
|
||||||
|
}
|
||||||
|
|
||||||
|
void unregister_passenger(size_t passenger_id, size_t plane_index) {
|
||||||
|
planes[plane_index].removePassenger(passenger_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
void plane_info() {
|
||||||
|
for (size_t i = 0; i < planeAmount; i++) {
|
||||||
|
planes[i].info();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void passenger_info() {
|
||||||
|
for (size_t i = 0; i < planeAmount; i++) {
|
||||||
|
planes[i].PassengerInformation();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
FlyCompany company;
|
||||||
|
|
||||||
|
Plane boing("Boing", 2000, 10);
|
||||||
|
Plane plane2("Plane2", -5, 3);
|
||||||
|
|
||||||
|
Passenger petiya("Петя", "Васильев", 112245326);
|
||||||
|
Passenger pasha("Паша", "Александров", 531930186);
|
||||||
|
Passenger vova("Вова", "Клепцов", 913573127);
|
||||||
|
|
||||||
|
company.addPlane(boing);
|
||||||
|
company.addPlane(plane2);
|
||||||
|
|
||||||
|
company.register_passenger(petiya, 0);
|
||||||
|
company.register_passenger(pasha, 1);
|
||||||
|
company.register_passenger(vova, 1);
|
||||||
|
|
||||||
|
company.passenger_info();
|
||||||
|
company.plane_info();
|
||||||
|
std::cout << '\n';
|
||||||
|
|
||||||
|
company.deletePlane(0);
|
||||||
|
company.unregister_passenger(0, 0);
|
||||||
|
|
||||||
|
company.passenger_info();
|
||||||
|
company.plane_info();
|
||||||
|
}
|
24
Python/OOP2/task1.py
Normal file
24
Python/OOP2/task1.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
from dataclasses import dataclass, field
|
||||||
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(order=True)
|
||||||
|
class Train:
|
||||||
|
id: int = field(compare=False)
|
||||||
|
to: str
|
||||||
|
leaves_at: datetime = field(default_factory=datetime.now)
|
||||||
|
|
||||||
|
|
||||||
|
now = datetime.now()
|
||||||
|
trains = [Train(i, f"somewhere{i}", now + timedelta(hours=i)) for i in range(1, 6)]
|
||||||
|
print(*trains, sep="\n", end="\n\n")
|
||||||
|
print(*sorted(trains), sep="\n")
|
||||||
|
|
||||||
|
|
||||||
|
def sort_by_id(trains: list[Train]) -> list[Train]:
|
||||||
|
return sorted(trains, key=lambda train: train.id)
|
||||||
|
|
||||||
|
|
||||||
|
def get_from_user() -> None:
|
||||||
|
id = int(input())
|
||||||
|
print(trains[id])
|
10
Python/OOP2/task10.py
Normal file
10
Python/OOP2/task10.py
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
from dataclasses import dataclass
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Foo1:
|
||||||
|
text: str
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Foo2(Foo1):
|
||||||
|
num:int
|
||||||
|
|
14
Python/OOP2/task2.py
Normal file
14
Python/OOP2/task2.py
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
from dataclasses import dataclass
|
||||||
|
from typing import Self
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Foo:
|
||||||
|
a: int
|
||||||
|
b: int
|
||||||
|
|
||||||
|
def sum(self: Self) -> int:
|
||||||
|
return self.a + self.b
|
||||||
|
|
||||||
|
def greater(self: Self) -> int:
|
||||||
|
return max(self.a, self.b)
|
21
Python/OOP2/task3.py
Normal file
21
Python/OOP2/task3.py
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
from typing import Self
|
||||||
|
|
||||||
|
from attrs import define, field, validators
|
||||||
|
|
||||||
|
|
||||||
|
@define
|
||||||
|
class time:
|
||||||
|
hours: int = field(validator=validators.in_(range(24)))
|
||||||
|
minutes: int = field(validator=validators.in_(range(60)))
|
||||||
|
seconds: int = field(validator=validators.in_(range(60)))
|
||||||
|
|
||||||
|
def change(
|
||||||
|
self: Self, hours: int | None, minutes: int | None, seconds: int | None
|
||||||
|
) -> Self:
|
||||||
|
if hours is not None:
|
||||||
|
self.hours += hours
|
||||||
|
if minutes is not None:
|
||||||
|
self.minutes += minutes
|
||||||
|
if seconds is not None:
|
||||||
|
self.seconds += seconds
|
||||||
|
return self
|
45
Python/OOP2/task4.py
Normal file
45
Python/OOP2/task4.py
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
import random
|
||||||
|
from dataclasses import dataclass, field
|
||||||
|
from typing import Self
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class _Base:
|
||||||
|
id: int
|
||||||
|
level: int = 1
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Hero(_Base):
|
||||||
|
soliders: list["Solider"] = field(default_factory=list)
|
||||||
|
|
||||||
|
def level_up(self: Self) -> Self:
|
||||||
|
self.level += 1
|
||||||
|
return self
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Solider(_Base):
|
||||||
|
def follow(self: Self, hero: Hero) -> None:
|
||||||
|
print(f"Иду за героем {hero.id}")
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
amount_of_players = 2
|
||||||
|
heroes = [Hero(i) for i in range(2)]
|
||||||
|
for i in range(amount_of_players, amount_of_players * 3 + 1):
|
||||||
|
solider = Solider(i)
|
||||||
|
random.choice(heroes).soliders.append(solider)
|
||||||
|
|
||||||
|
amount_of_soliders = [len(hero.soliders) for hero in heroes]
|
||||||
|
winner_id = amount_of_soliders.index(max(amount_of_soliders))
|
||||||
|
winner = heroes[winner_id]
|
||||||
|
loser_id = amount_of_soliders.index(max(amount_of_soliders))
|
||||||
|
loser = heroes[loser_id]
|
||||||
|
winner.level_up()
|
||||||
|
print(winner)
|
||||||
|
random.choice(loser.soliders).follow(winner)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
14
Python/OOP2/task5.py
Normal file
14
Python/OOP2/task5.py
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
from dataclasses import dataclass
|
||||||
|
from typing import Self
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Person:
|
||||||
|
name: str
|
||||||
|
age: int
|
||||||
|
|
||||||
|
def move(self: Self) -> None:
|
||||||
|
print(f"{self.name} говорит")
|
||||||
|
|
||||||
|
def talk(self: Self) -> None:
|
||||||
|
print(f"{self.name} идёт")
|
12
Python/OOP2/task6.py
Normal file
12
Python/OOP2/task6.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
from dataclasses import dataclass
|
||||||
|
from typing import Self
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Game:
|
||||||
|
name: str
|
||||||
|
year: int
|
||||||
|
|
||||||
|
# НАХ?
|
||||||
|
def get_name(self: Self):
|
||||||
|
return self.name
|
0
Python/OOP2/task7.py
Normal file
0
Python/OOP2/task7.py
Normal file
26
Python/OOP2/task8.py
Normal file
26
Python/OOP2/task8.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
from dataclasses import dataclass
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Game:
|
||||||
|
year: int
|
||||||
|
name: str
|
||||||
|
|
||||||
|
def get_name(self) -> str:
|
||||||
|
return self.name
|
||||||
|
|
||||||
|
|
||||||
|
class PCGame(Game):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class PS4Game(Game):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class XboxGame(Game):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class Mobiles(Game):
|
||||||
|
pass
|
19
Python/OOP2/task9.py
Normal file
19
Python/OOP2/task9.py
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
from dataclasses import dataclass
|
||||||
|
|
||||||
|
|
||||||
|
class Figure:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Triangle:
|
||||||
|
sides: tuple[int, int, int]
|
||||||
|
height: int
|
||||||
|
|
||||||
|
def area(self) -> int:
|
||||||
|
return self.sides[0] * self.height
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Circle:
|
||||||
|
pass
|
13
Python/OOP2/test.py
Normal file
13
Python/OOP2/test.py
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
import asyncio
|
||||||
|
|
||||||
|
|
||||||
|
async def sleep_print(i: str) -> None:
|
||||||
|
print(i)
|
||||||
|
await asyncio.sleep(5)
|
||||||
|
|
||||||
|
|
||||||
|
async def main() -> int:
|
||||||
|
await asyncio.gather(*[sleep_print(i) for i in range(5)])
|
||||||
|
|
||||||
|
|
||||||
|
asyncio.run(main())
|
999
Python/OOP3/run1
Normal file
999
Python/OOP3/run1
Normal file
@ -0,0 +1,999 @@
|
|||||||
|
1 false
|
||||||
|
2 true
|
||||||
|
3 true
|
||||||
|
4 false
|
||||||
|
5 true
|
||||||
|
6 false
|
||||||
|
7 true
|
||||||
|
8 false
|
||||||
|
9 true
|
||||||
|
10 false
|
||||||
|
11 true
|
||||||
|
12 false
|
||||||
|
13 true
|
||||||
|
14 false
|
||||||
|
15 true
|
||||||
|
16 false
|
||||||
|
17 true
|
||||||
|
18 false
|
||||||
|
19 true
|
||||||
|
20 false
|
||||||
|
21 false
|
||||||
|
22 false
|
||||||
|
23 true
|
||||||
|
24 false
|
||||||
|
25 true
|
||||||
|
26 false
|
||||||
|
27 false
|
||||||
|
28 false
|
||||||
|
29 true
|
||||||
|
30 false
|
||||||
|
31 true
|
||||||
|
32 false
|
||||||
|
33 false
|
||||||
|
34 false
|
||||||
|
35 true
|
||||||
|
36 false
|
||||||
|
37 true
|
||||||
|
38 false
|
||||||
|
39 false
|
||||||
|
40 false
|
||||||
|
41 true
|
||||||
|
42 false
|
||||||
|
43 true
|
||||||
|
44 false
|
||||||
|
45 false
|
||||||
|
46 false
|
||||||
|
47 true
|
||||||
|
48 false
|
||||||
|
49 true
|
||||||
|
50 false
|
||||||
|
51 false
|
||||||
|
52 false
|
||||||
|
53 true
|
||||||
|
54 false
|
||||||
|
55 false
|
||||||
|
56 false
|
||||||
|
57 false
|
||||||
|
58 false
|
||||||
|
59 true
|
||||||
|
60 false
|
||||||
|
61 true
|
||||||
|
62 false
|
||||||
|
63 false
|
||||||
|
64 false
|
||||||
|
65 false
|
||||||
|
66 false
|
||||||
|
67 true
|
||||||
|
68 false
|
||||||
|
69 false
|
||||||
|
70 false
|
||||||
|
71 true
|
||||||
|
72 false
|
||||||
|
73 true
|
||||||
|
74 false
|
||||||
|
75 false
|
||||||
|
76 false
|
||||||
|
77 false
|
||||||
|
78 false
|
||||||
|
79 true
|
||||||
|
80 false
|
||||||
|
81 false
|
||||||
|
82 false
|
||||||
|
83 true
|
||||||
|
84 false
|
||||||
|
85 false
|
||||||
|
86 false
|
||||||
|
87 false
|
||||||
|
88 false
|
||||||
|
89 true
|
||||||
|
90 false
|
||||||
|
91 false
|
||||||
|
92 false
|
||||||
|
93 false
|
||||||
|
94 false
|
||||||
|
95 false
|
||||||
|
96 false
|
||||||
|
97 true
|
||||||
|
98 false
|
||||||
|
99 false
|
||||||
|
100 false
|
||||||
|
101 true
|
||||||
|
102 false
|
||||||
|
103 true
|
||||||
|
104 false
|
||||||
|
105 false
|
||||||
|
106 false
|
||||||
|
107 true
|
||||||
|
108 false
|
||||||
|
109 true
|
||||||
|
110 false
|
||||||
|
111 false
|
||||||
|
112 false
|
||||||
|
113 true
|
||||||
|
114 false
|
||||||
|
115 false
|
||||||
|
116 false
|
||||||
|
117 false
|
||||||
|
118 false
|
||||||
|
119 false
|
||||||
|
120 false
|
||||||
|
121 true
|
||||||
|
122 false
|
||||||
|
123 false
|
||||||
|
124 false
|
||||||
|
125 false
|
||||||
|
126 false
|
||||||
|
127 true
|
||||||
|
128 false
|
||||||
|
129 false
|
||||||
|
130 false
|
||||||
|
131 true
|
||||||
|
132 false
|
||||||
|
133 false
|
||||||
|
134 false
|
||||||
|
135 false
|
||||||
|
136 false
|
||||||
|
137 true
|
||||||
|
138 false
|
||||||
|
139 true
|
||||||
|
140 false
|
||||||
|
141 false
|
||||||
|
142 false
|
||||||
|
143 true
|
||||||
|
144 false
|
||||||
|
145 false
|
||||||
|
146 false
|
||||||
|
147 false
|
||||||
|
148 false
|
||||||
|
149 true
|
||||||
|
150 false
|
||||||
|
151 true
|
||||||
|
152 false
|
||||||
|
153 false
|
||||||
|
154 false
|
||||||
|
155 false
|
||||||
|
156 false
|
||||||
|
157 true
|
||||||
|
158 false
|
||||||
|
159 false
|
||||||
|
160 false
|
||||||
|
161 false
|
||||||
|
162 false
|
||||||
|
163 true
|
||||||
|
164 false
|
||||||
|
165 false
|
||||||
|
166 false
|
||||||
|
167 true
|
||||||
|
168 false
|
||||||
|
169 true
|
||||||
|
170 false
|
||||||
|
171 false
|
||||||
|
172 false
|
||||||
|
173 true
|
||||||
|
174 false
|
||||||
|
175 false
|
||||||
|
176 false
|
||||||
|
177 false
|
||||||
|
178 false
|
||||||
|
179 true
|
||||||
|
180 false
|
||||||
|
181 true
|
||||||
|
182 false
|
||||||
|
183 false
|
||||||
|
184 false
|
||||||
|
185 false
|
||||||
|
186 false
|
||||||
|
187 false
|
||||||
|
188 false
|
||||||
|
189 false
|
||||||
|
190 false
|
||||||
|
191 true
|
||||||
|
192 false
|
||||||
|
193 true
|
||||||
|
194 false
|
||||||
|
195 false
|
||||||
|
196 false
|
||||||
|
197 true
|
||||||
|
198 false
|
||||||
|
199 true
|
||||||
|
200 false
|
||||||
|
201 false
|
||||||
|
202 false
|
||||||
|
203 false
|
||||||
|
204 false
|
||||||
|
205 false
|
||||||
|
206 false
|
||||||
|
207 false
|
||||||
|
208 false
|
||||||
|
209 false
|
||||||
|
210 false
|
||||||
|
211 true
|
||||||
|
212 false
|
||||||
|
213 false
|
||||||
|
214 false
|
||||||
|
215 false
|
||||||
|
216 false
|
||||||
|
217 false
|
||||||
|
218 false
|
||||||
|
219 false
|
||||||
|
220 false
|
||||||
|
221 false
|
||||||
|
222 false
|
||||||
|
223 true
|
||||||
|
224 false
|
||||||
|
225 false
|
||||||
|
226 false
|
||||||
|
227 true
|
||||||
|
228 false
|
||||||
|
229 true
|
||||||
|
230 false
|
||||||
|
231 false
|
||||||
|
232 false
|
||||||
|
233 true
|
||||||
|
234 false
|
||||||
|
235 false
|
||||||
|
236 false
|
||||||
|
237 false
|
||||||
|
238 false
|
||||||
|
239 true
|
||||||
|
240 false
|
||||||
|
241 true
|
||||||
|
242 false
|
||||||
|
243 false
|
||||||
|
244 false
|
||||||
|
245 false
|
||||||
|
246 false
|
||||||
|
247 false
|
||||||
|
248 false
|
||||||
|
249 false
|
||||||
|
250 false
|
||||||
|
251 true
|
||||||
|
252 false
|
||||||
|
253 false
|
||||||
|
254 false
|
||||||
|
255 false
|
||||||
|
256 false
|
||||||
|
257 true
|
||||||
|
258 false
|
||||||
|
259 false
|
||||||
|
260 false
|
||||||
|
261 false
|
||||||
|
262 false
|
||||||
|
263 true
|
||||||
|
264 false
|
||||||
|
265 false
|
||||||
|
266 false
|
||||||
|
267 false
|
||||||
|
268 false
|
||||||
|
269 true
|
||||||
|
270 false
|
||||||
|
271 true
|
||||||
|
272 false
|
||||||
|
273 false
|
||||||
|
274 false
|
||||||
|
275 false
|
||||||
|
276 false
|
||||||
|
277 true
|
||||||
|
278 false
|
||||||
|
279 false
|
||||||
|
280 false
|
||||||
|
281 true
|
||||||
|
282 false
|
||||||
|
283 true
|
||||||
|
284 false
|
||||||
|
285 false
|
||||||
|
286 false
|
||||||
|
287 false
|
||||||
|
288 false
|
||||||
|
289 true
|
||||||
|
290 false
|
||||||
|
291 false
|
||||||
|
292 false
|
||||||
|
293 true
|
||||||
|
294 false
|
||||||
|
295 false
|
||||||
|
296 false
|
||||||
|
297 false
|
||||||
|
298 false
|
||||||
|
299 false
|
||||||
|
300 false
|
||||||
|
301 false
|
||||||
|
302 false
|
||||||
|
303 false
|
||||||
|
304 false
|
||||||
|
305 false
|
||||||
|
306 false
|
||||||
|
307 true
|
||||||
|
308 false
|
||||||
|
309 false
|
||||||
|
310 false
|
||||||
|
311 true
|
||||||
|
312 false
|
||||||
|
313 true
|
||||||
|
314 false
|
||||||
|
315 false
|
||||||
|
316 false
|
||||||
|
317 true
|
||||||
|
318 false
|
||||||
|
319 false
|
||||||
|
320 false
|
||||||
|
321 false
|
||||||
|
322 false
|
||||||
|
323 true
|
||||||
|
324 false
|
||||||
|
325 false
|
||||||
|
326 false
|
||||||
|
327 false
|
||||||
|
328 false
|
||||||
|
329 false
|
||||||
|
330 false
|
||||||
|
331 true
|
||||||
|
332 false
|
||||||
|
333 false
|
||||||
|
334 false
|
||||||
|
335 false
|
||||||
|
336 false
|
||||||
|
337 true
|
||||||
|
338 false
|
||||||
|
339 false
|
||||||
|
340 false
|
||||||
|
341 false
|
||||||
|
342 false
|
||||||
|
343 false
|
||||||
|
344 false
|
||||||
|
345 false
|
||||||
|
346 false
|
||||||
|
347 true
|
||||||
|
348 false
|
||||||
|
349 true
|
||||||
|
350 false
|
||||||
|
351 false
|
||||||
|
352 false
|
||||||
|
353 true
|
||||||
|
354 false
|
||||||
|
355 false
|
||||||
|
356 false
|
||||||
|
357 false
|
||||||
|
358 false
|
||||||
|
359 true
|
||||||
|
360 false
|
||||||
|
361 true
|
||||||
|
362 false
|
||||||
|
363 false
|
||||||
|
364 false
|
||||||
|
365 false
|
||||||
|
366 false
|
||||||
|
367 true
|
||||||
|
368 false
|
||||||
|
369 false
|
||||||
|
370 false
|
||||||
|
371 false
|
||||||
|
372 false
|
||||||
|
373 true
|
||||||
|
374 false
|
||||||
|
375 false
|
||||||
|
376 false
|
||||||
|
377 false
|
||||||
|
378 false
|
||||||
|
379 true
|
||||||
|
380 false
|
||||||
|
381 false
|
||||||
|
382 false
|
||||||
|
383 true
|
||||||
|
384 false
|
||||||
|
385 false
|
||||||
|
386 false
|
||||||
|
387 false
|
||||||
|
388 false
|
||||||
|
389 true
|
||||||
|
390 false
|
||||||
|
391 false
|
||||||
|
392 false
|
||||||
|
393 false
|
||||||
|
394 false
|
||||||
|
395 false
|
||||||
|
396 false
|
||||||
|
397 true
|
||||||
|
398 false
|
||||||
|
399 false
|
||||||
|
400 false
|
||||||
|
401 true
|
||||||
|
402 false
|
||||||
|
403 false
|
||||||
|
404 false
|
||||||
|
405 false
|
||||||
|
406 false
|
||||||
|
407 false
|
||||||
|
408 false
|
||||||
|
409 true
|
||||||
|
410 false
|
||||||
|
411 false
|
||||||
|
412 false
|
||||||
|
413 false
|
||||||
|
414 false
|
||||||
|
415 false
|
||||||
|
416 false
|
||||||
|
417 false
|
||||||
|
418 false
|
||||||
|
419 true
|
||||||
|
420 false
|
||||||
|
421 true
|
||||||
|
422 false
|
||||||
|
423 false
|
||||||
|
424 false
|
||||||
|
425 false
|
||||||
|
426 false
|
||||||
|
427 false
|
||||||
|
428 false
|
||||||
|
429 false
|
||||||
|
430 false
|
||||||
|
431 true
|
||||||
|
432 false
|
||||||
|
433 true
|
||||||
|
434 false
|
||||||
|
435 false
|
||||||
|
436 false
|
||||||
|
437 false
|
||||||
|
438 false
|
||||||
|
439 true
|
||||||
|
440 false
|
||||||
|
441 false
|
||||||
|
442 false
|
||||||
|
443 true
|
||||||
|
444 false
|
||||||
|
445 false
|
||||||
|
446 false
|
||||||
|
447 false
|
||||||
|
448 false
|
||||||
|
449 true
|
||||||
|
450 false
|
||||||
|
451 false
|
||||||
|
452 false
|
||||||
|
453 false
|
||||||
|
454 false
|
||||||
|
455 false
|
||||||
|
456 false
|
||||||
|
457 true
|
||||||
|
458 false
|
||||||
|
459 false
|
||||||
|
460 false
|
||||||
|
461 true
|
||||||
|
462 false
|
||||||
|
463 true
|
||||||
|
464 false
|
||||||
|
465 false
|
||||||
|
466 false
|
||||||
|
467 true
|
||||||
|
468 false
|
||||||
|
469 false
|
||||||
|
470 false
|
||||||
|
471 false
|
||||||
|
472 false
|
||||||
|
473 false
|
||||||
|
474 false
|
||||||
|
475 false
|
||||||
|
476 false
|
||||||
|
477 false
|
||||||
|
478 false
|
||||||
|
479 true
|
||||||
|
480 false
|
||||||
|
481 false
|
||||||
|
482 false
|
||||||
|
483 false
|
||||||
|
484 false
|
||||||
|
485 false
|
||||||
|
486 false
|
||||||
|
487 true
|
||||||
|
488 false
|
||||||
|
489 false
|
||||||
|
490 false
|
||||||
|
491 true
|
||||||
|
492 false
|
||||||
|
493 false
|
||||||
|
494 false
|
||||||
|
495 false
|
||||||
|
496 false
|
||||||
|
497 false
|
||||||
|
498 false
|
||||||
|
499 true
|
||||||
|
500 false
|
||||||
|
501 false
|
||||||
|
502 false
|
||||||
|
503 true
|
||||||
|
504 false
|
||||||
|
505 false
|
||||||
|
506 false
|
||||||
|
507 false
|
||||||
|
508 false
|
||||||
|
509 true
|
||||||
|
510 false
|
||||||
|
511 false
|
||||||
|
512 false
|
||||||
|
513 false
|
||||||
|
514 false
|
||||||
|
515 false
|
||||||
|
516 false
|
||||||
|
517 false
|
||||||
|
518 false
|
||||||
|
519 false
|
||||||
|
520 false
|
||||||
|
521 true
|
||||||
|
522 false
|
||||||
|
523 true
|
||||||
|
524 false
|
||||||
|
525 false
|
||||||
|
526 false
|
||||||
|
527 false
|
||||||
|
528 false
|
||||||
|
529 true
|
||||||
|
530 false
|
||||||
|
531 false
|
||||||
|
532 false
|
||||||
|
533 false
|
||||||
|
534 false
|
||||||
|
535 false
|
||||||
|
536 false
|
||||||
|
537 false
|
||||||
|
538 false
|
||||||
|
539 false
|
||||||
|
540 false
|
||||||
|
541 true
|
||||||
|
542 false
|
||||||
|
543 false
|
||||||
|
544 false
|
||||||
|
545 false
|
||||||
|
546 false
|
||||||
|
547 true
|
||||||
|
548 false
|
||||||
|
549 false
|
||||||
|
550 false
|
||||||
|
551 false
|
||||||
|
552 false
|
||||||
|
553 false
|
||||||
|
554 false
|
||||||
|
555 false
|
||||||
|
556 false
|
||||||
|
557 true
|
||||||
|
558 false
|
||||||
|
559 false
|
||||||
|
560 false
|
||||||
|
561 false
|
||||||
|
562 false
|
||||||
|
563 true
|
||||||
|
564 false
|
||||||
|
565 false
|
||||||
|
566 false
|
||||||
|
567 false
|
||||||
|
568 false
|
||||||
|
569 true
|
||||||
|
570 false
|
||||||
|
571 true
|
||||||
|
572 false
|
||||||
|
573 false
|
||||||
|
574 false
|
||||||
|
575 false
|
||||||
|
576 false
|
||||||
|
577 true
|
||||||
|
578 false
|
||||||
|
579 false
|
||||||
|
580 false
|
||||||
|
581 false
|
||||||
|
582 false
|
||||||
|
583 false
|
||||||
|
584 false
|
||||||
|
585 false
|
||||||
|
586 false
|
||||||
|
587 true
|
||||||
|
588 false
|
||||||
|
589 false
|
||||||
|
590 false
|
||||||
|
591 false
|
||||||
|
592 false
|
||||||
|
593 true
|
||||||
|
594 false
|
||||||
|
595 false
|
||||||
|
596 false
|
||||||
|
597 false
|
||||||
|
598 false
|
||||||
|
599 true
|
||||||
|
600 false
|
||||||
|
601 true
|
||||||
|
602 false
|
||||||
|
603 false
|
||||||
|
604 false
|
||||||
|
605 false
|
||||||
|
606 false
|
||||||
|
607 true
|
||||||
|
608 false
|
||||||
|
609 false
|
||||||
|
610 false
|
||||||
|
611 false
|
||||||
|
612 false
|
||||||
|
613 true
|
||||||
|
614 false
|
||||||
|
615 false
|
||||||
|
616 false
|
||||||
|
617 true
|
||||||
|
618 false
|
||||||
|
619 true
|
||||||
|
620 false
|
||||||
|
621 false
|
||||||
|
622 false
|
||||||
|
623 false
|
||||||
|
624 false
|
||||||
|
625 false
|
||||||
|
626 false
|
||||||
|
627 false
|
||||||
|
628 false
|
||||||
|
629 false
|
||||||
|
630 false
|
||||||
|
631 true
|
||||||
|
632 false
|
||||||
|
633 false
|
||||||
|
634 false
|
||||||
|
635 false
|
||||||
|
636 false
|
||||||
|
637 false
|
||||||
|
638 false
|
||||||
|
639 false
|
||||||
|
640 false
|
||||||
|
641 true
|
||||||
|
642 false
|
||||||
|
643 true
|
||||||
|
644 false
|
||||||
|
645 false
|
||||||
|
646 false
|
||||||
|
647 true
|
||||||
|
648 false
|
||||||
|
649 false
|
||||||
|
650 false
|
||||||
|
651 false
|
||||||
|
652 false
|
||||||
|
653 true
|
||||||
|
654 false
|
||||||
|
655 false
|
||||||
|
656 false
|
||||||
|
657 false
|
||||||
|
658 false
|
||||||
|
659 true
|
||||||
|
660 false
|
||||||
|
661 true
|
||||||
|
662 false
|
||||||
|
663 false
|
||||||
|
664 false
|
||||||
|
665 false
|
||||||
|
666 false
|
||||||
|
667 false
|
||||||
|
668 false
|
||||||
|
669 false
|
||||||
|
670 false
|
||||||
|
671 false
|
||||||
|
672 false
|
||||||
|
673 true
|
||||||
|
674 false
|
||||||
|
675 false
|
||||||
|
676 false
|
||||||
|
677 true
|
||||||
|
678 false
|
||||||
|
679 false
|
||||||
|
680 false
|
||||||
|
681 false
|
||||||
|
682 false
|
||||||
|
683 true
|
||||||
|
684 false
|
||||||
|
685 false
|
||||||
|
686 false
|
||||||
|
687 false
|
||||||
|
688 false
|
||||||
|
689 false
|
||||||
|
690 false
|
||||||
|
691 true
|
||||||
|
692 false
|
||||||
|
693 false
|
||||||
|
694 false
|
||||||
|
695 false
|
||||||
|
696 false
|
||||||
|
697 false
|
||||||
|
698 false
|
||||||
|
699 false
|
||||||
|
700 false
|
||||||
|
701 true
|
||||||
|
702 false
|
||||||
|
703 false
|
||||||
|
704 false
|
||||||
|
705 false
|
||||||
|
706 false
|
||||||
|
707 false
|
||||||
|
708 false
|
||||||
|
709 true
|
||||||
|
710 false
|
||||||
|
711 false
|
||||||
|
712 false
|
||||||
|
713 false
|
||||||
|
714 false
|
||||||
|
715 false
|
||||||
|
716 false
|
||||||
|
717 false
|
||||||
|
718 false
|
||||||
|
719 true
|
||||||
|
720 false
|
||||||
|
721 false
|
||||||
|
722 false
|
||||||
|
723 false
|
||||||
|
724 false
|
||||||
|
725 false
|
||||||
|
726 false
|
||||||
|
727 true
|
||||||
|
728 false
|
||||||
|
729 false
|
||||||
|
730 false
|
||||||
|
731 false
|
||||||
|
732 false
|
||||||
|
733 true
|
||||||
|
734 false
|
||||||
|
735 false
|
||||||
|
736 false
|
||||||
|
737 false
|
||||||
|
738 false
|
||||||
|
739 true
|
||||||
|
740 false
|
||||||
|
741 false
|
||||||
|
742 false
|
||||||
|
743 true
|
||||||
|
744 false
|
||||||
|
745 false
|
||||||
|
746 false
|
||||||
|
747 false
|
||||||
|
748 false
|
||||||
|
749 false
|
||||||
|
750 false
|
||||||
|
751 true
|
||||||
|
752 false
|
||||||
|
753 false
|
||||||
|
754 false
|
||||||
|
755 false
|
||||||
|
756 false
|
||||||
|
757 true
|
||||||
|
758 false
|
||||||
|
759 false
|
||||||
|
760 false
|
||||||
|
761 true
|
||||||
|
762 false
|
||||||
|
763 false
|
||||||
|
764 false
|
||||||
|
765 false
|
||||||
|
766 false
|
||||||
|
767 false
|
||||||
|
768 false
|
||||||
|
769 true
|
||||||
|
770 false
|
||||||
|
771 false
|
||||||
|
772 false
|
||||||
|
773 true
|
||||||
|
774 false
|
||||||
|
775 false
|
||||||
|
776 false
|
||||||
|
777 false
|
||||||
|
778 false
|
||||||
|
779 false
|
||||||
|
780 false
|
||||||
|
781 false
|
||||||
|
782 false
|
||||||
|
783 false
|
||||||
|
784 false
|
||||||
|
785 false
|
||||||
|
786 false
|
||||||
|
787 true
|
||||||
|
788 false
|
||||||
|
789 false
|
||||||
|
790 false
|
||||||
|
791 false
|
||||||
|
792 false
|
||||||
|
793 false
|
||||||
|
794 false
|
||||||
|
795 false
|
||||||
|
796 false
|
||||||
|
797 true
|
||||||
|
798 false
|
||||||
|
799 false
|
||||||
|
800 false
|
||||||
|
801 false
|
||||||
|
802 false
|
||||||
|
803 false
|
||||||
|
804 false
|
||||||
|
805 false
|
||||||
|
806 false
|
||||||
|
807 false
|
||||||
|
808 false
|
||||||
|
809 true
|
||||||
|
810 false
|
||||||
|
811 true
|
||||||
|
812 false
|
||||||
|
813 false
|
||||||
|
814 false
|
||||||
|
815 false
|
||||||
|
816 false
|
||||||
|
817 false
|
||||||
|
818 false
|
||||||
|
819 false
|
||||||
|
820 false
|
||||||
|
821 true
|
||||||
|
822 false
|
||||||
|
823 true
|
||||||
|
824 false
|
||||||
|
825 false
|
||||||
|
826 false
|
||||||
|
827 true
|
||||||
|
828 false
|
||||||
|
829 true
|
||||||
|
830 false
|
||||||
|
831 false
|
||||||
|
832 false
|
||||||
|
833 false
|
||||||
|
834 false
|
||||||
|
835 false
|
||||||
|
836 false
|
||||||
|
837 false
|
||||||
|
838 false
|
||||||
|
839 true
|
||||||
|
840 false
|
||||||
|
841 true
|
||||||
|
842 false
|
||||||
|
843 false
|
||||||
|
844 false
|
||||||
|
845 false
|
||||||
|
846 false
|
||||||
|
847 false
|
||||||
|
848 false
|
||||||
|
849 false
|
||||||
|
850 false
|
||||||
|
851 false
|
||||||
|
852 false
|
||||||
|
853 true
|
||||||
|
854 false
|
||||||
|
855 false
|
||||||
|
856 false
|
||||||
|
857 true
|
||||||
|
858 false
|
||||||
|
859 true
|
||||||
|
860 false
|
||||||
|
861 false
|
||||||
|
862 false
|
||||||
|
863 true
|
||||||
|
864 false
|
||||||
|
865 false
|
||||||
|
866 false
|
||||||
|
867 false
|
||||||
|
868 false
|
||||||
|
869 false
|
||||||
|
870 false
|
||||||
|
871 false
|
||||||
|
872 false
|
||||||
|
873 false
|
||||||
|
874 false
|
||||||
|
875 false
|
||||||
|
876 false
|
||||||
|
877 true
|
||||||
|
878 false
|
||||||
|
879 false
|
||||||
|
880 false
|
||||||
|
881 true
|
||||||
|
882 false
|
||||||
|
883 true
|
||||||
|
884 false
|
||||||
|
885 false
|
||||||
|
886 false
|
||||||
|
887 true
|
||||||
|
888 false
|
||||||
|
889 false
|
||||||
|
890 false
|
||||||
|
891 false
|
||||||
|
892 false
|
||||||
|
893 false
|
||||||
|
894 false
|
||||||
|
895 false
|
||||||
|
896 false
|
||||||
|
897 false
|
||||||
|
898 false
|
||||||
|
899 true
|
||||||
|
900 false
|
||||||
|
901 false
|
||||||
|
902 false
|
||||||
|
903 false
|
||||||
|
904 false
|
||||||
|
905 false
|
||||||
|
906 false
|
||||||
|
907 true
|
||||||
|
908 false
|
||||||
|
909 false
|
||||||
|
910 false
|
||||||
|
911 true
|
||||||
|
912 false
|
||||||
|
913 false
|
||||||
|
914 false
|
||||||
|
915 false
|
||||||
|
916 false
|
||||||
|
917 false
|
||||||
|
918 false
|
||||||
|
919 true
|
||||||
|
920 false
|
||||||
|
921 false
|
||||||
|
922 false
|
||||||
|
923 false
|
||||||
|
924 false
|
||||||
|
925 false
|
||||||
|
926 false
|
||||||
|
927 false
|
||||||
|
928 false
|
||||||
|
929 true
|
||||||
|
930 false
|
||||||
|
931 false
|
||||||
|
932 false
|
||||||
|
933 false
|
||||||
|
934 false
|
||||||
|
935 false
|
||||||
|
936 false
|
||||||
|
937 true
|
||||||
|
938 false
|
||||||
|
939 false
|
||||||
|
940 false
|
||||||
|
941 true
|
||||||
|
942 false
|
||||||
|
943 false
|
||||||
|
944 false
|
||||||
|
945 false
|
||||||
|
946 false
|
||||||
|
947 true
|
||||||
|
948 false
|
||||||
|
949 false
|
||||||
|
950 false
|
||||||
|
951 false
|
||||||
|
952 false
|
||||||
|
953 true
|
||||||
|
954 false
|
||||||
|
955 false
|
||||||
|
956 false
|
||||||
|
957 false
|
||||||
|
958 false
|
||||||
|
959 false
|
||||||
|
960 false
|
||||||
|
961 true
|
||||||
|
962 false
|
||||||
|
963 false
|
||||||
|
964 false
|
||||||
|
965 false
|
||||||
|
966 false
|
||||||
|
967 true
|
||||||
|
968 false
|
||||||
|
969 false
|
||||||
|
970 false
|
||||||
|
971 true
|
||||||
|
972 false
|
||||||
|
973 false
|
||||||
|
974 false
|
||||||
|
975 false
|
||||||
|
976 false
|
||||||
|
977 true
|
||||||
|
978 false
|
||||||
|
979 false
|
||||||
|
980 false
|
||||||
|
981 false
|
||||||
|
982 false
|
||||||
|
983 true
|
||||||
|
984 false
|
||||||
|
985 false
|
||||||
|
986 false
|
||||||
|
987 false
|
||||||
|
988 false
|
||||||
|
989 false
|
||||||
|
990 false
|
||||||
|
991 true
|
||||||
|
992 false
|
||||||
|
993 false
|
||||||
|
994 false
|
||||||
|
995 false
|
||||||
|
996 false
|
||||||
|
997 true
|
||||||
|
998 false
|
||||||
|
999 false
|
999
Python/OOP3/run2
Normal file
999
Python/OOP3/run2
Normal file
@ -0,0 +1,999 @@
|
|||||||
|
1 false
|
||||||
|
2 true
|
||||||
|
3 true
|
||||||
|
4 false
|
||||||
|
5 true
|
||||||
|
6 false
|
||||||
|
7 true
|
||||||
|
8 false
|
||||||
|
9 false
|
||||||
|
10 false
|
||||||
|
11 true
|
||||||
|
12 false
|
||||||
|
13 true
|
||||||
|
14 false
|
||||||
|
15 false
|
||||||
|
16 false
|
||||||
|
17 true
|
||||||
|
18 false
|
||||||
|
19 true
|
||||||
|
20 false
|
||||||
|
21 false
|
||||||
|
22 false
|
||||||
|
23 true
|
||||||
|
24 false
|
||||||
|
25 false
|
||||||
|
26 false
|
||||||
|
27 false
|
||||||
|
28 false
|
||||||
|
29 true
|
||||||
|
30 false
|
||||||
|
31 true
|
||||||
|
32 false
|
||||||
|
33 false
|
||||||
|
34 false
|
||||||
|
35 false
|
||||||
|
36 false
|
||||||
|
37 true
|
||||||
|
38 false
|
||||||
|
39 false
|
||||||
|
40 false
|
||||||
|
41 true
|
||||||
|
42 false
|
||||||
|
43 true
|
||||||
|
44 false
|
||||||
|
45 false
|
||||||
|
46 false
|
||||||
|
47 true
|
||||||
|
48 false
|
||||||
|
49 false
|
||||||
|
50 false
|
||||||
|
51 false
|
||||||
|
52 false
|
||||||
|
53 true
|
||||||
|
54 false
|
||||||
|
55 false
|
||||||
|
56 false
|
||||||
|
57 false
|
||||||
|
58 false
|
||||||
|
59 true
|
||||||
|
60 false
|
||||||
|
61 true
|
||||||
|
62 false
|
||||||
|
63 false
|
||||||
|
64 false
|
||||||
|
65 false
|
||||||
|
66 false
|
||||||
|
67 true
|
||||||
|
68 false
|
||||||
|
69 false
|
||||||
|
70 false
|
||||||
|
71 true
|
||||||
|
72 false
|
||||||
|
73 true
|
||||||
|
74 false
|
||||||
|
75 false
|
||||||
|
76 false
|
||||||
|
77 false
|
||||||
|
78 false
|
||||||
|
79 true
|
||||||
|
80 false
|
||||||
|
81 false
|
||||||
|
82 false
|
||||||
|
83 true
|
||||||
|
84 false
|
||||||
|
85 false
|
||||||
|
86 false
|
||||||
|
87 false
|
||||||
|
88 false
|
||||||
|
89 true
|
||||||
|
90 false
|
||||||
|
91 false
|
||||||
|
92 false
|
||||||
|
93 false
|
||||||
|
94 false
|
||||||
|
95 false
|
||||||
|
96 false
|
||||||
|
97 true
|
||||||
|
98 false
|
||||||
|
99 false
|
||||||
|
100 false
|
||||||
|
101 true
|
||||||
|
102 false
|
||||||
|
103 true
|
||||||
|
104 false
|
||||||
|
105 false
|
||||||
|
106 false
|
||||||
|
107 true
|
||||||
|
108 false
|
||||||
|
109 true
|
||||||
|
110 false
|
||||||
|
111 false
|
||||||
|
112 false
|
||||||
|
113 true
|
||||||
|
114 false
|
||||||
|
115 false
|
||||||
|
116 false
|
||||||
|
117 false
|
||||||
|
118 false
|
||||||
|
119 false
|
||||||
|
120 false
|
||||||
|
121 false
|
||||||
|
122 false
|
||||||
|
123 false
|
||||||
|
124 false
|
||||||
|
125 false
|
||||||
|
126 false
|
||||||
|
127 true
|
||||||
|
128 false
|
||||||
|
129 false
|
||||||
|
130 false
|
||||||
|
131 true
|
||||||
|
132 false
|
||||||
|
133 false
|
||||||
|
134 false
|
||||||
|
135 false
|
||||||
|
136 false
|
||||||
|
137 true
|
||||||
|
138 false
|
||||||
|
139 true
|
||||||
|
140 false
|
||||||
|
141 false
|
||||||
|
142 false
|
||||||
|
143 false
|
||||||
|
144 false
|
||||||
|
145 false
|
||||||
|
146 false
|
||||||
|
147 false
|
||||||
|
148 false
|
||||||
|
149 true
|
||||||
|
150 false
|
||||||
|
151 true
|
||||||
|
152 false
|
||||||
|
153 false
|
||||||
|
154 false
|
||||||
|
155 false
|
||||||
|
156 false
|
||||||
|
157 true
|
||||||
|
158 false
|
||||||
|
159 false
|
||||||
|
160 false
|
||||||
|
161 false
|
||||||
|
162 false
|
||||||
|
163 true
|
||||||
|
164 false
|
||||||
|
165 false
|
||||||
|
166 false
|
||||||
|
167 true
|
||||||
|
168 false
|
||||||
|
169 false
|
||||||
|
170 false
|
||||||
|
171 false
|
||||||
|
172 false
|
||||||
|
173 true
|
||||||
|
174 false
|
||||||
|
175 false
|
||||||
|
176 false
|
||||||
|
177 false
|
||||||
|
178 false
|
||||||
|
179 true
|
||||||
|
180 false
|
||||||
|
181 true
|
||||||
|
182 false
|
||||||
|
183 false
|
||||||
|
184 false
|
||||||
|
185 false
|
||||||
|
186 false
|
||||||
|
187 false
|
||||||
|
188 false
|
||||||
|
189 false
|
||||||
|
190 false
|
||||||
|
191 true
|
||||||
|
192 false
|
||||||
|
193 true
|
||||||
|
194 false
|
||||||
|
195 false
|
||||||
|
196 false
|
||||||
|
197 true
|
||||||
|
198 false
|
||||||
|
199 true
|
||||||
|
200 false
|
||||||
|
201 false
|
||||||
|
202 false
|
||||||
|
203 false
|
||||||
|
204 false
|
||||||
|
205 false
|
||||||
|
206 false
|
||||||
|
207 false
|
||||||
|
208 false
|
||||||
|
209 false
|
||||||
|
210 false
|
||||||
|
211 true
|
||||||
|
212 false
|
||||||
|
213 false
|
||||||
|
214 false
|
||||||
|
215 false
|
||||||
|
216 false
|
||||||
|
217 false
|
||||||
|
218 false
|
||||||
|
219 false
|
||||||
|
220 false
|
||||||
|
221 false
|
||||||
|
222 false
|
||||||
|
223 true
|
||||||
|
224 false
|
||||||
|
225 false
|
||||||
|
226 false
|
||||||
|
227 true
|
||||||
|
228 false
|
||||||
|
229 true
|
||||||
|
230 false
|
||||||
|
231 false
|
||||||
|
232 false
|
||||||
|
233 true
|
||||||
|
234 false
|
||||||
|
235 false
|
||||||
|
236 false
|
||||||
|
237 false
|
||||||
|
238 false
|
||||||
|
239 true
|
||||||
|
240 false
|
||||||
|
241 true
|
||||||
|
242 false
|
||||||
|
243 false
|
||||||
|
244 false
|
||||||
|
245 false
|
||||||
|
246 false
|
||||||
|
247 false
|
||||||
|
248 false
|
||||||
|
249 false
|
||||||
|
250 false
|
||||||
|
251 true
|
||||||
|
252 false
|
||||||
|
253 false
|
||||||
|
254 false
|
||||||
|
255 false
|
||||||
|
256 false
|
||||||
|
257 true
|
||||||
|
258 false
|
||||||
|
259 false
|
||||||
|
260 false
|
||||||
|
261 false
|
||||||
|
262 false
|
||||||
|
263 true
|
||||||
|
264 false
|
||||||
|
265 false
|
||||||
|
266 false
|
||||||
|
267 false
|
||||||
|
268 false
|
||||||
|
269 true
|
||||||
|
270 false
|
||||||
|
271 true
|
||||||
|
272 false
|
||||||
|
273 false
|
||||||
|
274 false
|
||||||
|
275 false
|
||||||
|
276 false
|
||||||
|
277 true
|
||||||
|
278 false
|
||||||
|
279 false
|
||||||
|
280 false
|
||||||
|
281 true
|
||||||
|
282 false
|
||||||
|
283 true
|
||||||
|
284 false
|
||||||
|
285 false
|
||||||
|
286 false
|
||||||
|
287 false
|
||||||
|
288 false
|
||||||
|
289 false
|
||||||
|
290 false
|
||||||
|
291 false
|
||||||
|
292 false
|
||||||
|
293 true
|
||||||
|
294 false
|
||||||
|
295 false
|
||||||
|
296 false
|
||||||
|
297 false
|
||||||
|
298 false
|
||||||
|
299 false
|
||||||
|
300 false
|
||||||
|
301 false
|
||||||
|
302 false
|
||||||
|
303 false
|
||||||
|
304 false
|
||||||
|
305 false
|
||||||
|
306 false
|
||||||
|
307 true
|
||||||
|
308 false
|
||||||
|
309 false
|
||||||
|
310 false
|
||||||
|
311 true
|
||||||
|
312 false
|
||||||
|
313 true
|
||||||
|
314 false
|
||||||
|
315 false
|
||||||
|
316 false
|
||||||
|
317 true
|
||||||
|
318 false
|
||||||
|
319 false
|
||||||
|
320 false
|
||||||
|
321 false
|
||||||
|
322 false
|
||||||
|
323 false
|
||||||
|
324 false
|
||||||
|
325 false
|
||||||
|
326 false
|
||||||
|
327 false
|
||||||
|
328 false
|
||||||
|
329 false
|
||||||
|
330 false
|
||||||
|
331 true
|
||||||
|
332 false
|
||||||
|
333 false
|
||||||
|
334 false
|
||||||
|
335 false
|
||||||
|
336 false
|
||||||
|
337 true
|
||||||
|
338 false
|
||||||
|
339 false
|
||||||
|
340 false
|
||||||
|
341 false
|
||||||
|
342 false
|
||||||
|
343 false
|
||||||
|
344 false
|
||||||
|
345 false
|
||||||
|
346 false
|
||||||
|
347 true
|
||||||
|
348 false
|
||||||
|
349 true
|
||||||
|
350 false
|
||||||
|
351 false
|
||||||
|
352 false
|
||||||
|
353 true
|
||||||
|
354 false
|
||||||
|
355 false
|
||||||
|
356 false
|
||||||
|
357 false
|
||||||
|
358 false
|
||||||
|
359 true
|
||||||
|
360 false
|
||||||
|
361 false
|
||||||
|
362 false
|
||||||
|
363 false
|
||||||
|
364 false
|
||||||
|
365 false
|
||||||
|
366 false
|
||||||
|
367 true
|
||||||
|
368 false
|
||||||
|
369 false
|
||||||
|
370 false
|
||||||
|
371 false
|
||||||
|
372 false
|
||||||
|
373 true
|
||||||
|
374 false
|
||||||
|
375 false
|
||||||
|
376 false
|
||||||
|
377 false
|
||||||
|
378 false
|
||||||
|
379 true
|
||||||
|
380 false
|
||||||
|
381 false
|
||||||
|
382 false
|
||||||
|
383 true
|
||||||
|
384 false
|
||||||
|
385 false
|
||||||
|
386 false
|
||||||
|
387 false
|
||||||
|
388 false
|
||||||
|
389 true
|
||||||
|
390 false
|
||||||
|
391 false
|
||||||
|
392 false
|
||||||
|
393 false
|
||||||
|
394 false
|
||||||
|
395 false
|
||||||
|
396 false
|
||||||
|
397 true
|
||||||
|
398 false
|
||||||
|
399 false
|
||||||
|
400 false
|
||||||
|
401 true
|
||||||
|
402 false
|
||||||
|
403 false
|
||||||
|
404 false
|
||||||
|
405 false
|
||||||
|
406 false
|
||||||
|
407 false
|
||||||
|
408 false
|
||||||
|
409 true
|
||||||
|
410 false
|
||||||
|
411 false
|
||||||
|
412 false
|
||||||
|
413 false
|
||||||
|
414 false
|
||||||
|
415 false
|
||||||
|
416 false
|
||||||
|
417 false
|
||||||
|
418 false
|
||||||
|
419 true
|
||||||
|
420 false
|
||||||
|
421 true
|
||||||
|
422 false
|
||||||
|
423 false
|
||||||
|
424 false
|
||||||
|
425 false
|
||||||
|
426 false
|
||||||
|
427 false
|
||||||
|
428 false
|
||||||
|
429 false
|
||||||
|
430 false
|
||||||
|
431 true
|
||||||
|
432 false
|
||||||
|
433 true
|
||||||
|
434 false
|
||||||
|
435 false
|
||||||
|
436 false
|
||||||
|
437 false
|
||||||
|
438 false
|
||||||
|
439 true
|
||||||
|
440 false
|
||||||
|
441 false
|
||||||
|
442 false
|
||||||
|
443 true
|
||||||
|
444 false
|
||||||
|
445 false
|
||||||
|
446 false
|
||||||
|
447 false
|
||||||
|
448 false
|
||||||
|
449 true
|
||||||
|
450 false
|
||||||
|
451 false
|
||||||
|
452 false
|
||||||
|
453 false
|
||||||
|
454 false
|
||||||
|
455 false
|
||||||
|
456 false
|
||||||
|
457 true
|
||||||
|
458 false
|
||||||
|
459 false
|
||||||
|
460 false
|
||||||
|
461 true
|
||||||
|
462 false
|
||||||
|
463 true
|
||||||
|
464 false
|
||||||
|
465 false
|
||||||
|
466 false
|
||||||
|
467 true
|
||||||
|
468 false
|
||||||
|
469 false
|
||||||
|
470 false
|
||||||
|
471 false
|
||||||
|
472 false
|
||||||
|
473 false
|
||||||
|
474 false
|
||||||
|
475 false
|
||||||
|
476 false
|
||||||
|
477 false
|
||||||
|
478 false
|
||||||
|
479 true
|
||||||
|
480 false
|
||||||
|
481 false
|
||||||
|
482 false
|
||||||
|
483 false
|
||||||
|
484 false
|
||||||
|
485 false
|
||||||
|
486 false
|
||||||
|
487 true
|
||||||
|
488 false
|
||||||
|
489 false
|
||||||
|
490 false
|
||||||
|
491 true
|
||||||
|
492 false
|
||||||
|
493 false
|
||||||
|
494 false
|
||||||
|
495 false
|
||||||
|
496 false
|
||||||
|
497 false
|
||||||
|
498 false
|
||||||
|
499 true
|
||||||
|
500 false
|
||||||
|
501 false
|
||||||
|
502 false
|
||||||
|
503 true
|
||||||
|
504 false
|
||||||
|
505 false
|
||||||
|
506 false
|
||||||
|
507 false
|
||||||
|
508 false
|
||||||
|
509 true
|
||||||
|
510 false
|
||||||
|
511 false
|
||||||
|
512 false
|
||||||
|
513 false
|
||||||
|
514 false
|
||||||
|
515 false
|
||||||
|
516 false
|
||||||
|
517 false
|
||||||
|
518 false
|
||||||
|
519 false
|
||||||
|
520 false
|
||||||
|
521 true
|
||||||
|
522 false
|
||||||
|
523 true
|
||||||
|
524 false
|
||||||
|
525 false
|
||||||
|
526 false
|
||||||
|
527 false
|
||||||
|
528 false
|
||||||
|
529 false
|
||||||
|
530 false
|
||||||
|
531 false
|
||||||
|
532 false
|
||||||
|
533 false
|
||||||
|
534 false
|
||||||
|
535 false
|
||||||
|
536 false
|
||||||
|
537 false
|
||||||
|
538 false
|
||||||
|
539 false
|
||||||
|
540 false
|
||||||
|
541 true
|
||||||
|
542 false
|
||||||
|
543 false
|
||||||
|
544 false
|
||||||
|
545 false
|
||||||
|
546 false
|
||||||
|
547 true
|
||||||
|
548 false
|
||||||
|
549 false
|
||||||
|
550 false
|
||||||
|
551 false
|
||||||
|
552 false
|
||||||
|
553 false
|
||||||
|
554 false
|
||||||
|
555 false
|
||||||
|
556 false
|
||||||
|
557 true
|
||||||
|
558 false
|
||||||
|
559 false
|
||||||
|
560 false
|
||||||
|
561 false
|
||||||
|
562 false
|
||||||
|
563 true
|
||||||
|
564 false
|
||||||
|
565 false
|
||||||
|
566 false
|
||||||
|
567 false
|
||||||
|
568 false
|
||||||
|
569 true
|
||||||
|
570 false
|
||||||
|
571 true
|
||||||
|
572 false
|
||||||
|
573 false
|
||||||
|
574 false
|
||||||
|
575 false
|
||||||
|
576 false
|
||||||
|
577 true
|
||||||
|
578 false
|
||||||
|
579 false
|
||||||
|
580 false
|
||||||
|
581 false
|
||||||
|
582 false
|
||||||
|
583 false
|
||||||
|
584 false
|
||||||
|
585 false
|
||||||
|
586 false
|
||||||
|
587 true
|
||||||
|
588 false
|
||||||
|
589 false
|
||||||
|
590 false
|
||||||
|
591 false
|
||||||
|
592 false
|
||||||
|
593 true
|
||||||
|
594 false
|
||||||
|
595 false
|
||||||
|
596 false
|
||||||
|
597 false
|
||||||
|
598 false
|
||||||
|
599 true
|
||||||
|
600 false
|
||||||
|
601 true
|
||||||
|
602 false
|
||||||
|
603 false
|
||||||
|
604 false
|
||||||
|
605 false
|
||||||
|
606 false
|
||||||
|
607 true
|
||||||
|
608 false
|
||||||
|
609 false
|
||||||
|
610 false
|
||||||
|
611 false
|
||||||
|
612 false
|
||||||
|
613 true
|
||||||
|
614 false
|
||||||
|
615 false
|
||||||
|
616 false
|
||||||
|
617 true
|
||||||
|
618 false
|
||||||
|
619 true
|
||||||
|
620 false
|
||||||
|
621 false
|
||||||
|
622 false
|
||||||
|
623 false
|
||||||
|
624 false
|
||||||
|
625 false
|
||||||
|
626 false
|
||||||
|
627 false
|
||||||
|
628 false
|
||||||
|
629 false
|
||||||
|
630 false
|
||||||
|
631 true
|
||||||
|
632 false
|
||||||
|
633 false
|
||||||
|
634 false
|
||||||
|
635 false
|
||||||
|
636 false
|
||||||
|
637 false
|
||||||
|
638 false
|
||||||
|
639 false
|
||||||
|
640 false
|
||||||
|
641 true
|
||||||
|
642 false
|
||||||
|
643 true
|
||||||
|
644 false
|
||||||
|
645 false
|
||||||
|
646 false
|
||||||
|
647 true
|
||||||
|
648 false
|
||||||
|
649 false
|
||||||
|
650 false
|
||||||
|
651 false
|
||||||
|
652 false
|
||||||
|
653 true
|
||||||
|
654 false
|
||||||
|
655 false
|
||||||
|
656 false
|
||||||
|
657 false
|
||||||
|
658 false
|
||||||
|
659 true
|
||||||
|
660 false
|
||||||
|
661 true
|
||||||
|
662 false
|
||||||
|
663 false
|
||||||
|
664 false
|
||||||
|
665 false
|
||||||
|
666 false
|
||||||
|
667 false
|
||||||
|
668 false
|
||||||
|
669 false
|
||||||
|
670 false
|
||||||
|
671 false
|
||||||
|
672 false
|
||||||
|
673 true
|
||||||
|
674 false
|
||||||
|
675 false
|
||||||
|
676 false
|
||||||
|
677 true
|
||||||
|
678 false
|
||||||
|
679 false
|
||||||
|
680 false
|
||||||
|
681 false
|
||||||
|
682 false
|
||||||
|
683 true
|
||||||
|
684 false
|
||||||
|
685 false
|
||||||
|
686 false
|
||||||
|
687 false
|
||||||
|
688 false
|
||||||
|
689 false
|
||||||
|
690 false
|
||||||
|
691 true
|
||||||
|
692 false
|
||||||
|
693 false
|
||||||
|
694 false
|
||||||
|
695 false
|
||||||
|
696 false
|
||||||
|
697 false
|
||||||
|
698 false
|
||||||
|
699 false
|
||||||
|
700 false
|
||||||
|
701 true
|
||||||
|
702 false
|
||||||
|
703 false
|
||||||
|
704 false
|
||||||
|
705 false
|
||||||
|
706 false
|
||||||
|
707 false
|
||||||
|
708 false
|
||||||
|
709 true
|
||||||
|
710 false
|
||||||
|
711 false
|
||||||
|
712 false
|
||||||
|
713 false
|
||||||
|
714 false
|
||||||
|
715 false
|
||||||
|
716 false
|
||||||
|
717 false
|
||||||
|
718 false
|
||||||
|
719 true
|
||||||
|
720 false
|
||||||
|
721 false
|
||||||
|
722 false
|
||||||
|
723 false
|
||||||
|
724 false
|
||||||
|
725 false
|
||||||
|
726 false
|
||||||
|
727 true
|
||||||
|
728 false
|
||||||
|
729 false
|
||||||
|
730 false
|
||||||
|
731 false
|
||||||
|
732 false
|
||||||
|
733 true
|
||||||
|
734 false
|
||||||
|
735 false
|
||||||
|
736 false
|
||||||
|
737 false
|
||||||
|
738 false
|
||||||
|
739 true
|
||||||
|
740 false
|
||||||
|
741 false
|
||||||
|
742 false
|
||||||
|
743 true
|
||||||
|
744 false
|
||||||
|
745 false
|
||||||
|
746 false
|
||||||
|
747 false
|
||||||
|
748 false
|
||||||
|
749 false
|
||||||
|
750 false
|
||||||
|
751 true
|
||||||
|
752 false
|
||||||
|
753 false
|
||||||
|
754 false
|
||||||
|
755 false
|
||||||
|
756 false
|
||||||
|
757 true
|
||||||
|
758 false
|
||||||
|
759 false
|
||||||
|
760 false
|
||||||
|
761 true
|
||||||
|
762 false
|
||||||
|
763 false
|
||||||
|
764 false
|
||||||
|
765 false
|
||||||
|
766 false
|
||||||
|
767 false
|
||||||
|
768 false
|
||||||
|
769 true
|
||||||
|
770 false
|
||||||
|
771 false
|
||||||
|
772 false
|
||||||
|
773 true
|
||||||
|
774 false
|
||||||
|
775 false
|
||||||
|
776 false
|
||||||
|
777 false
|
||||||
|
778 false
|
||||||
|
779 false
|
||||||
|
780 false
|
||||||
|
781 false
|
||||||
|
782 false
|
||||||
|
783 false
|
||||||
|
784 false
|
||||||
|
785 false
|
||||||
|
786 false
|
||||||
|
787 true
|
||||||
|
788 false
|
||||||
|
789 false
|
||||||
|
790 false
|
||||||
|
791 false
|
||||||
|
792 false
|
||||||
|
793 false
|
||||||
|
794 false
|
||||||
|
795 false
|
||||||
|
796 false
|
||||||
|
797 true
|
||||||
|
798 false
|
||||||
|
799 false
|
||||||
|
800 false
|
||||||
|
801 false
|
||||||
|
802 false
|
||||||
|
803 false
|
||||||
|
804 false
|
||||||
|
805 false
|
||||||
|
806 false
|
||||||
|
807 false
|
||||||
|
808 false
|
||||||
|
809 true
|
||||||
|
810 false
|
||||||
|
811 true
|
||||||
|
812 false
|
||||||
|
813 false
|
||||||
|
814 false
|
||||||
|
815 false
|
||||||
|
816 false
|
||||||
|
817 false
|
||||||
|
818 false
|
||||||
|
819 false
|
||||||
|
820 false
|
||||||
|
821 true
|
||||||
|
822 false
|
||||||
|
823 true
|
||||||
|
824 false
|
||||||
|
825 false
|
||||||
|
826 false
|
||||||
|
827 true
|
||||||
|
828 false
|
||||||
|
829 true
|
||||||
|
830 false
|
||||||
|
831 false
|
||||||
|
832 false
|
||||||
|
833 false
|
||||||
|
834 false
|
||||||
|
835 false
|
||||||
|
836 false
|
||||||
|
837 false
|
||||||
|
838 false
|
||||||
|
839 true
|
||||||
|
840 false
|
||||||
|
841 false
|
||||||
|
842 false
|
||||||
|
843 false
|
||||||
|
844 false
|
||||||
|
845 false
|
||||||
|
846 false
|
||||||
|
847 false
|
||||||
|
848 false
|
||||||
|
849 false
|
||||||
|
850 false
|
||||||
|
851 false
|
||||||
|
852 false
|
||||||
|
853 true
|
||||||
|
854 false
|
||||||
|
855 false
|
||||||
|
856 false
|
||||||
|
857 true
|
||||||
|
858 false
|
||||||
|
859 true
|
||||||
|
860 false
|
||||||
|
861 false
|
||||||
|
862 false
|
||||||
|
863 true
|
||||||
|
864 false
|
||||||
|
865 false
|
||||||
|
866 false
|
||||||
|
867 false
|
||||||
|
868 false
|
||||||
|
869 false
|
||||||
|
870 false
|
||||||
|
871 false
|
||||||
|
872 false
|
||||||
|
873 false
|
||||||
|
874 false
|
||||||
|
875 false
|
||||||
|
876 false
|
||||||
|
877 true
|
||||||
|
878 false
|
||||||
|
879 false
|
||||||
|
880 false
|
||||||
|
881 true
|
||||||
|
882 false
|
||||||
|
883 true
|
||||||
|
884 false
|
||||||
|
885 false
|
||||||
|
886 false
|
||||||
|
887 true
|
||||||
|
888 false
|
||||||
|
889 false
|
||||||
|
890 false
|
||||||
|
891 false
|
||||||
|
892 false
|
||||||
|
893 false
|
||||||
|
894 false
|
||||||
|
895 false
|
||||||
|
896 false
|
||||||
|
897 false
|
||||||
|
898 false
|
||||||
|
899 false
|
||||||
|
900 false
|
||||||
|
901 false
|
||||||
|
902 false
|
||||||
|
903 false
|
||||||
|
904 false
|
||||||
|
905 false
|
||||||
|
906 false
|
||||||
|
907 true
|
||||||
|
908 false
|
||||||
|
909 false
|
||||||
|
910 false
|
||||||
|
911 true
|
||||||
|
912 false
|
||||||
|
913 false
|
||||||
|
914 false
|
||||||
|
915 false
|
||||||
|
916 false
|
||||||
|
917 false
|
||||||
|
918 false
|
||||||
|
919 true
|
||||||
|
920 false
|
||||||
|
921 false
|
||||||
|
922 false
|
||||||
|
923 false
|
||||||
|
924 false
|
||||||
|
925 false
|
||||||
|
926 false
|
||||||
|
927 false
|
||||||
|
928 false
|
||||||
|
929 true
|
||||||
|
930 false
|
||||||
|
931 false
|
||||||
|
932 false
|
||||||
|
933 false
|
||||||
|
934 false
|
||||||
|
935 false
|
||||||
|
936 false
|
||||||
|
937 true
|
||||||
|
938 false
|
||||||
|
939 false
|
||||||
|
940 false
|
||||||
|
941 true
|
||||||
|
942 false
|
||||||
|
943 false
|
||||||
|
944 false
|
||||||
|
945 false
|
||||||
|
946 false
|
||||||
|
947 true
|
||||||
|
948 false
|
||||||
|
949 false
|
||||||
|
950 false
|
||||||
|
951 false
|
||||||
|
952 false
|
||||||
|
953 true
|
||||||
|
954 false
|
||||||
|
955 false
|
||||||
|
956 false
|
||||||
|
957 false
|
||||||
|
958 false
|
||||||
|
959 false
|
||||||
|
960 false
|
||||||
|
961 false
|
||||||
|
962 false
|
||||||
|
963 false
|
||||||
|
964 false
|
||||||
|
965 false
|
||||||
|
966 false
|
||||||
|
967 true
|
||||||
|
968 false
|
||||||
|
969 false
|
||||||
|
970 false
|
||||||
|
971 true
|
||||||
|
972 false
|
||||||
|
973 false
|
||||||
|
974 false
|
||||||
|
975 false
|
||||||
|
976 false
|
||||||
|
977 true
|
||||||
|
978 false
|
||||||
|
979 false
|
||||||
|
980 false
|
||||||
|
981 false
|
||||||
|
982 false
|
||||||
|
983 true
|
||||||
|
984 false
|
||||||
|
985 false
|
||||||
|
986 false
|
||||||
|
987 false
|
||||||
|
988 false
|
||||||
|
989 false
|
||||||
|
990 false
|
||||||
|
991 true
|
||||||
|
992 false
|
||||||
|
993 false
|
||||||
|
994 false
|
||||||
|
995 false
|
||||||
|
996 false
|
||||||
|
997 true
|
||||||
|
998 false
|
||||||
|
999 false
|
22
Python/OOP3/task1.py
Normal file
22
Python/OOP3/task1.py
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
from abc import ABC, abstractmethod
|
||||||
|
|
||||||
|
|
||||||
|
class Animal(ABC):
|
||||||
|
@abstractmethod
|
||||||
|
def move(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class Cat(Animal):
|
||||||
|
def move(self):
|
||||||
|
print("No. Cat doesn't want to move his furry arse")
|
||||||
|
|
||||||
|
|
||||||
|
class Dog(Animal):
|
||||||
|
def move(self) -> None:
|
||||||
|
print("Dog's running towards you")
|
||||||
|
|
||||||
|
|
||||||
|
animals: list[Animal] = [Cat(), Dog()]
|
||||||
|
for animal in animals:
|
||||||
|
animal.move()
|
7
Python/OOP3/task2py
Normal file
7
Python/OOP3/task2py
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
class SomeClass(object):
|
||||||
|
@classmethod
|
||||||
|
def hello(cls):
|
||||||
|
print("It's", cls.__name__)
|
||||||
|
|
||||||
|
|
||||||
|
SomeClass.hello()
|
9
Python/OOP3/task3.py
Normal file
9
Python/OOP3/task3.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
class SomeClass(object):
|
||||||
|
@staticmethod
|
||||||
|
def hello():
|
||||||
|
print("Hello world")
|
||||||
|
|
||||||
|
|
||||||
|
SomeClass.hello()
|
||||||
|
obj = SomeClass()
|
||||||
|
obj.hello()
|
17
Python/OOP3/task4.py
Normal file
17
Python/OOP3/task4.py
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
class Person:
|
||||||
|
def __init__(self, name: str):
|
||||||
|
self._name = name
|
||||||
|
|
||||||
|
@property
|
||||||
|
def name(self) -> str:
|
||||||
|
return self._name
|
||||||
|
|
||||||
|
@name.setter
|
||||||
|
def name(self, new_name) -> None:
|
||||||
|
self._name = new_name
|
||||||
|
|
||||||
|
|
||||||
|
p = Person("abc")
|
||||||
|
print(p.name)
|
||||||
|
p.name = "10"
|
||||||
|
print(p.name)
|
14
Python/OOP3/task5.py
Normal file
14
Python/OOP3/task5.py
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
from typing import Self
|
||||||
|
|
||||||
|
|
||||||
|
class CrazyNumber:
|
||||||
|
def __init__(self, number):
|
||||||
|
self.number = number
|
||||||
|
|
||||||
|
def __sub__(self, other: Self) -> float:
|
||||||
|
return self.number // other.number
|
||||||
|
|
||||||
|
|
||||||
|
n1 = CrazyNumber(1243)
|
||||||
|
n2 = CrazyNumber(2)
|
||||||
|
print(n1 - n2)
|
13
Python/OOP3/task6.py
Normal file
13
Python/OOP3/task6.py
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
class Singleton(object):
|
||||||
|
obj = None
|
||||||
|
|
||||||
|
def __new__(cls, *args, **kwards):
|
||||||
|
if cls.obj is None:
|
||||||
|
cls.obj = object.__new__(cls)
|
||||||
|
return cls.obj
|
||||||
|
|
||||||
|
|
||||||
|
sing1 = Singleton()
|
||||||
|
sing2 = Singleton()
|
||||||
|
print(id(sing1))
|
||||||
|
print(id(sing2))
|
27
Python/OOP3/test.cpp
Normal file
27
Python/OOP3/test.cpp
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
#include <cmath>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
bool isPrime(const int number) {
|
||||||
|
if (number == 1) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (number == 2 || number == 3) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (number % 2 == 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
int border = sqrt(number) + 1;
|
||||||
|
for (int i = 3; i < border; i += 2) {
|
||||||
|
if (number % i == 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
for (int i = 1; i < 1000; i++) {
|
||||||
|
std::cout << i << ' ' << (isPrime(i) ? "true" : "false") << '\n';
|
||||||
|
}
|
||||||
|
}
|
10
Python/Python-test/task1.py
Normal file
10
Python/Python-test/task1.py
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
a = [12, 34, 542, 12, 63653, 635, 635]
|
||||||
|
|
||||||
|
|
||||||
|
def foo(i):
|
||||||
|
print(i)
|
||||||
|
return i
|
||||||
|
|
||||||
|
|
||||||
|
seen = set()
|
||||||
|
print(not any(i in seen or seen.add(i) for i in a))
|
11
Python/Python-test/task10.py
Normal file
11
Python/Python-test/task10.py
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
from random import randint
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
SIZE = 10
|
||||||
|
|
||||||
|
a = [randint(0, 100_000) for _ in range(SIZE**2)]
|
||||||
|
a = np.array(a)
|
||||||
|
a = a.reshape((SIZE, SIZE))
|
||||||
|
print(a)
|
||||||
|
print(np.min(a), np.max(a))
|
6
Python/Python-test/task2.py
Normal file
6
Python/Python-test/task2.py
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
a = [12, 34, 542, 63653, 635, 635, 20]
|
||||||
|
|
||||||
|
for id, i in enumerate(a):
|
||||||
|
if i == 20:
|
||||||
|
a[id] = 200
|
||||||
|
break
|
16
Python/Python-test/task3.py
Normal file
16
Python/Python-test/task3.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
a = {
|
||||||
|
12: 30,
|
||||||
|
30: 40,
|
||||||
|
50: 60,
|
||||||
|
70: 80,
|
||||||
|
}
|
||||||
|
# Вар 1
|
||||||
|
for key, value in a.items():
|
||||||
|
print(a)
|
||||||
|
|
||||||
|
# Вар 2
|
||||||
|
for key in a:
|
||||||
|
print(key)
|
||||||
|
|
||||||
|
for value in a.values():
|
||||||
|
print(value)
|
2
Python/Python-test/task4.py
Normal file
2
Python/Python-test/task4.py
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
a = {i: i**2 for i in range(1, 16)}
|
||||||
|
print(a)
|
4
Python/Python-test/task5.py
Normal file
4
Python/Python-test/task5.py
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
with open("task5.txt") as f:
|
||||||
|
nums = map(int, f.read().split())
|
||||||
|
|
||||||
|
print(sum(nums))
|
1
Python/Python-test/task5.txt
Normal file
1
Python/Python-test/task5.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
10 20 30
|
21
Python/Python-test/task6.py
Normal file
21
Python/Python-test/task6.py
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
from dataclasses import dataclass
|
||||||
|
from typing import Self
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Foo:
|
||||||
|
a: int
|
||||||
|
b: int
|
||||||
|
|
||||||
|
def print(self: Self) -> None:
|
||||||
|
print(self.a, self.b)
|
||||||
|
|
||||||
|
def max(self: Self) -> int:
|
||||||
|
return max(self.a, self.b)
|
||||||
|
|
||||||
|
def sum(self: Self) -> int:
|
||||||
|
return self.a + self.b
|
||||||
|
|
||||||
|
def change_vals(self: Self, a: int, b: int) -> None:
|
||||||
|
self.a = a
|
||||||
|
self.b = b
|
3
Python/Python-test/task7.py
Normal file
3
Python/Python-test/task7.py
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
a = [10, 12, 34, 542, 63653, 635, 635]
|
||||||
|
b = [21, 5165, 623, 542, 10]
|
||||||
|
print(sorted(set(a).intersection(b)))
|
4
Python/Python-test/task8.py
Normal file
4
Python/Python-test/task8.py
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
def sum_range(a: int, b: int, /) -> int:
|
||||||
|
if a > b:
|
||||||
|
a, b = b, a
|
||||||
|
return sum(range(a, b))
|
4
Python/Python-test/task9.py
Normal file
4
Python/Python-test/task9.py
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
from collections import Counter
|
||||||
|
|
||||||
|
a = [12, 34, 542, 63653, 635, 635]
|
||||||
|
print(Counter(a))
|
4
Python/requirements.txt
Normal file
4
Python/requirements.txt
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
attrs
|
||||||
|
black
|
||||||
|
flake8
|
||||||
|
isort
|
1
Python/telegram/.env
Normal file
1
Python/telegram/.env
Normal file
@ -0,0 +1 @@
|
|||||||
|
TG_TOKEN=5684427592:AAEwHcoWyLCaGi7uaT7Eso_BDzpFusWE6jY
|
39
Python/telegram/main.py
Normal file
39
Python/telegram/main.py
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
from io import BytesIO
|
||||||
|
from os import environ
|
||||||
|
|
||||||
|
import dotenv
|
||||||
|
from aiogram import Bot, Dispatcher, executor, types
|
||||||
|
from httpx import AsyncClient
|
||||||
|
|
||||||
|
dotenv.load_dotenv()
|
||||||
|
bot = Bot(token=environ["TG_TOKEN"])
|
||||||
|
dp = Dispatcher(bot)
|
||||||
|
|
||||||
|
|
||||||
|
@dp.message_handler(commands=["start"])
|
||||||
|
async def start(mes: types.Message) -> None:
|
||||||
|
await mes.reply(
|
||||||
|
f"Привет {mes.from_user.get_mention()}",
|
||||||
|
parse_mode="MarkdownV2",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@dp.message_handler(commands=["send_pic"])
|
||||||
|
async def send_pic(mes: types.Message) -> None:
|
||||||
|
async with AsyncClient() as client:
|
||||||
|
response = await client.get(
|
||||||
|
"https://loremflickr.com/320/240/dog",
|
||||||
|
follow_redirects=True,
|
||||||
|
)
|
||||||
|
photo = BytesIO(response.content)
|
||||||
|
photo.name = "dog.jpg"
|
||||||
|
await mes.reply_photo(photo, "Here you go")
|
||||||
|
|
||||||
|
|
||||||
|
@dp.message_handler(content_types=types.ContentTypes.TEXT)
|
||||||
|
async def message_handler(mes: types.Message) -> None:
|
||||||
|
await bot.send_message(mes.chat.id, mes.text)
|
||||||
|
print(mes.text)
|
||||||
|
|
||||||
|
|
||||||
|
executor.start_polling(dp)
|
27
Python/telegram/task1.py
Normal file
27
Python/telegram/task1.py
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
import asyncio
|
||||||
|
from typing import Never
|
||||||
|
|
||||||
|
|
||||||
|
async def print_nums() -> Never:
|
||||||
|
num = 1
|
||||||
|
while True:
|
||||||
|
num += 1
|
||||||
|
print(num)
|
||||||
|
await asyncio.sleep(0.1)
|
||||||
|
|
||||||
|
|
||||||
|
async def print_time() -> Never:
|
||||||
|
count = 0
|
||||||
|
while True:
|
||||||
|
if not count % 3:
|
||||||
|
print(f"Time {count}")
|
||||||
|
count += 1
|
||||||
|
await asyncio.sleep(1)
|
||||||
|
|
||||||
|
|
||||||
|
async def main() -> Never:
|
||||||
|
await asyncio.gather(print_nums(), print_time())
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
asyncio.run(main())
|
37
Python/telegram/task2.py
Normal file
37
Python/telegram/task2.py
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
import asyncio
|
||||||
|
import pathlib
|
||||||
|
from time import perf_counter
|
||||||
|
|
||||||
|
import aiofiles
|
||||||
|
from httpx import AsyncClient, Response
|
||||||
|
|
||||||
|
|
||||||
|
async def get_file(client: AsyncClient, url: str) -> Response:
|
||||||
|
return await client.get(url, follow_redirects=True)
|
||||||
|
|
||||||
|
|
||||||
|
async def write_file(response: Response) -> None:
|
||||||
|
file_name = response.url.path.rsplit("/", 1)[1]
|
||||||
|
print(file_name)
|
||||||
|
async with aiofiles.open(f"photos/{file_name}", "wb") as f:
|
||||||
|
await f.write(response.content)
|
||||||
|
|
||||||
|
|
||||||
|
async def download_file(client: AsyncClient, url: str) -> None:
|
||||||
|
await write_file(await get_file(client, url))
|
||||||
|
|
||||||
|
|
||||||
|
async def main():
|
||||||
|
pathlib.Path("photos").mkdir(exist_ok=True)
|
||||||
|
async with AsyncClient() as client:
|
||||||
|
await asyncio.gather(
|
||||||
|
*(
|
||||||
|
download_file(client, "https://loremflickr.com/320/240")
|
||||||
|
for _ in range(10)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
start = perf_counter()
|
||||||
|
asyncio.run(main())
|
||||||
|
print(perf_counter() - start)
|
83
Unreal/Unreal.md
Normal file
83
Unreal/Unreal.md
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
# Unreal (may the force be with us) Engine
|
||||||
|
|
||||||
|
* Unreal engine был создан Epic Games
|
||||||
|
* Первая игра - Unreal
|
||||||
|
* На нём делают много всего
|
||||||
|
|
||||||
|
## Ассет
|
||||||
|
|
||||||
|
Любой ресурс для создания аудио-визуального контента
|
||||||
|
|
||||||
|
## Меш
|
||||||
|
|
||||||
|
Геометрическая структура из вершин (vertices) и полигонов. Представляют собой сетку из этих самых полигонов
|
||||||
|
|
||||||
|
## Материалы
|
||||||
|
|
||||||
|
Материалы определяют цвет, прозрачность, блеск объектов. Могут быть наложены на Меши и частицы
|
||||||
|
|
||||||
|
**Параметры:**
|
||||||
|
|
||||||
|
* Base color
|
||||||
|
* Metallic
|
||||||
|
* Specular
|
||||||
|
* Roughness
|
||||||
|
|
||||||
|
## Ноды (узлы)
|
||||||
|
|
||||||
|
События, вызовы функции, управление потоками и переменные. Определяют функцианал графика и схемы, которые его содержат
|
||||||
|
|
||||||
|
## Текстурирование
|
||||||
|
|
||||||
|
Для текстурирования используется цветовая модель RGB (Red Green Blue)
|
||||||
|
|
||||||
|
## Частицы
|
||||||
|
|
||||||
|
Используются для взрывов, дождя, дыма. В unreal Engine используется Cascade
|
||||||
|
|
||||||
|
## Blueprints
|
||||||
|
|
||||||
|
### Типы данных
|
||||||
|
|
||||||
|
* boolean
|
||||||
|
* byte
|
||||||
|
* integer
|
||||||
|
* float
|
||||||
|
* name (название объекта)
|
||||||
|
* string
|
||||||
|
* text (произвольная длина)
|
||||||
|
* vector (кординаты)
|
||||||
|
* rotator (поворот)
|
||||||
|
* transform (положение, поворот, маштаб)
|
||||||
|
|
||||||
|
### Массив
|
||||||
|
|
||||||
|
Операции:
|
||||||
|
|
||||||
|
* get ref
|
||||||
|
* get copy
|
||||||
|
* set
|
||||||
|
* add
|
||||||
|
* insert
|
||||||
|
* remove
|
||||||
|
* clear
|
||||||
|
* P.S. тоже, что и в питоне
|
||||||
|
|
||||||
|
### Циклы
|
||||||
|
|
||||||
|
аналогично:
|
||||||
|
|
||||||
|
* for
|
||||||
|
* while
|
||||||
|
|
||||||
|
### Условный оператор
|
||||||
|
|
||||||
|
Они есть
|
||||||
|
|
||||||
|
* branch
|
||||||
|
* switch
|
||||||
|
* select
|
||||||
|
|
||||||
|
### Логические операторы
|
||||||
|
|
||||||
|
Классический набор
|
12
Unreal/foo.py
Normal file
12
Unreal/foo.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
def prettify(val: str) -> str:
|
||||||
|
return val.removeprefix("<!--").removesuffix("-->").strip()
|
||||||
|
|
||||||
|
lines = []
|
||||||
|
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
lines.append(prettify(input()))
|
||||||
|
except EOFError:
|
||||||
|
break
|
||||||
|
|
||||||
|
print("\n".join(lines))
|
377
sql/Databases.md
Normal file
377
sql/Databases.md
Normal file
@ -0,0 +1,377 @@
|
|||||||
|
# Базы данных
|
||||||
|
|
||||||
|
## Основы
|
||||||
|
|
||||||
|
### Основные определения
|
||||||
|
|
||||||
|
*База данных* - набор структурированной информации или данных, которые хранятся в компьютерной системе
|
||||||
|
|
||||||
|
*СУБД* - система управления БД
|
||||||
|
|
||||||
|
*SQL* - основной интерфейс работы с реляционными базами данных
|
||||||
|
|
||||||
|
*Транзакция* - Последовательность операция над БД, рассматриваемых СУБД, как одно целое
|
||||||
|
|
||||||
|
### Классификация
|
||||||
|
|
||||||
|
* Простейшие базы двнных
|
||||||
|
* SQL базы данных (реляционные)
|
||||||
|
* NoSQL базы данных (нереляционные)
|
||||||
|
* Комбинированные типы
|
||||||
|
|
||||||
|
### Реляционные базы данных
|
||||||
|
|
||||||
|
> Набор данных с предопределенными связями между ними. Эти данные организованны в виде набора таблиц, состоящих из столбцов и строк. В таблицах хранится информация об объектах, представленных в виде данных
|
||||||
|
|
||||||
|
### NoSQL базы данных
|
||||||
|
|
||||||
|
> База данных, в которой не используется табличная система строк и столбцов
|
||||||
|
|
||||||
|
### Основные функции
|
||||||
|
|
||||||
|
* Управление данными во внешней памяти
|
||||||
|
* Управление данными в оперативной памяти
|
||||||
|
* Управление транзакциями
|
||||||
|
* Ведение журнала выполнения операций в базе данных
|
||||||
|
* поддержка языков баз данных
|
||||||
|
|
||||||
|
### Основные БД
|
||||||
|
|
||||||
|
* SQL
|
||||||
|
* Oracle (Вы любите деньги больше, чем надо)
|
||||||
|
* Microsoft SQL Server (Вы любите деньги больше, чем надо)
|
||||||
|
* PostgreSQL (Халява)
|
||||||
|
* NoSQL
|
||||||
|
* MongoDB
|
||||||
|
* DB2
|
||||||
|
* Cassandra
|
||||||
|
|
||||||
|
### Первичный и внеший ключ
|
||||||
|
|
||||||
|
* *Ключ* - это колонка или колонки,не имеющие дублирующих значений.
|
||||||
|
|
||||||
|
* *Первичный ключ* - это поле или набор полей со значением, которые являются уникальными для всей таблицы.
|
||||||
|
|
||||||
|
* *Естественные* являются свойствами моделируемого объекта интересными сами по себе, даже если никто не стремится сделать из них ключ
|
||||||
|
|
||||||
|
* *Искусственные (суррогатные)* - придуманные коды для ссылки на данные или объекты
|
||||||
|
|
||||||
|
* *Внешний ключ* - столбец или группа столбцов, используемых в SQL БД для связи данных между таблицами
|
||||||
|
|
||||||
|
### Типы связи в SQL БД
|
||||||
|
|
||||||
|
1. "Один к одному"
|
||||||
|
|
||||||
|
Образуется когда ключевой столбец присутствует в другой таблице, в которой тоже является ключом либо свойствами столбца задана его уникальность. Используется, когда нужно разделить данные одной таблицы на несколько отдельных таблиц.
|
||||||
|
|
||||||
|
2. "Один к многим"
|
||||||
|
|
||||||
|
Одной записи первой таблицы соответсвует неколько записей в другой таблие. Символ ключа связи указывает, что таблица,к которой этот конец прилегает, находится на стороне "один", а символ бесконечности находится на стороне "многие".
|
||||||
|
3. "Многие к многим"
|
||||||
|
|
||||||
|
Если нескольким записям одно таблицы соответсвует несколько запясей из другой таблицы. Связь организовывается посредством связывающей таблицы.
|
||||||
|
|
||||||
|
### Реляционная алгебра. Операции
|
||||||
|
|
||||||
|
* *Проекция* - это столбец фильтра. Получаем содержимое только части столбцов.
|
||||||
|
* *Выборка* - это фильтрование строки. Включает в себя выбор строк.
|
||||||
|
* *Декартово произведение* - Каждому элементу из множества R сопоставлен в соответсвие определенный элемент из множества S, то возникает множество, сопоставленное из пар элементов множества R и S.
|
||||||
|
* *Объединение* - это отношение, которое включает в себя все кортежи обоих отношений без повторов.
|
||||||
|
* *Вычитание* - это разность односхемных отношений R и S назывется множество кортежей R, не входящих в S.
|
||||||
|
* *Пересечение* - это пересечение двух односхемных отношений R и S есть подмножество кортежей, принадлежащих обоим отношениям. Это можно выразить через разность: R-(R-S).
|
||||||
|
* *Соединение* - эта операция определяет подмножество декартова произведения двух разносхемных отношений. Предназначена для обеспечения выборки данных из двух таблиц и включение этих данных в один результативный набор.
|
||||||
|
|
||||||
|
### Нормализация и Денормализация
|
||||||
|
|
||||||
|
*Нормальная форма* - Свойство отношения, характеризующее его с точки зрения избыточности
|
||||||
|
|
||||||
|
*Нормализация* - процесс минимизации избыточности отношения(приведение к НФ)
|
||||||
|
|
||||||
|
*Денормализация* - намеренное приведение структуры базы данных в состояние, не соотвествующее критериям нормализации
|
||||||
|
|
||||||
|
## Основы синтаксиса
|
||||||
|
|
||||||
|
### Идентификаторы и ключевые слова
|
||||||
|
|
||||||
|
* *SELECT*, *UPDATE* и *VALUES* являются примерами ключевых слов, то есть слов, имеющих фиксированное значение в языке SQL
|
||||||
|
|
||||||
|
* Ключевые слова и идентификаторы без кавычек воспринимаются системой без учета регистра.
|
||||||
|
|
||||||
|
* Есть и другой тип идентификаторов: отделённые идентификаторы, или идентификаторы в ковычках
|
||||||
|
|
||||||
|
```sql
|
||||||
|
UPDATE my_table SET a = 5;
|
||||||
|
UPDATE "my_table" SET "a" = 5;
|
||||||
|
```
|
||||||
|
|
||||||
|
### Константы
|
||||||
|
|
||||||
|
* *Строковая константа в SQL* - обычная последовательность символов, заключённая в одинарные ковычки
|
||||||
|
|
||||||
|
```sql
|
||||||
|
SELECT 'foobar'
|
||||||
|
```
|
||||||
|
|
||||||
|
* Ещё один способ записи строковых констант - "заключение строк в доллары".
|
||||||
|
|
||||||
|
```sql
|
||||||
|
$$Жанна д Арк$$
|
||||||
|
```
|
||||||
|
|
||||||
|
* Числовые константы
|
||||||
|
|
||||||
|
* 42
|
||||||
|
* 3.5
|
||||||
|
* 5e2
|
||||||
|
* 1.925e-3
|
||||||
|
|
||||||
|
* Битовые константы похожи на обычные с дополнительной буквой перед опострофом, показывающих систему счисления
|
||||||
|
|
||||||
|
* B'1001'
|
||||||
|
* X'1FF'
|
||||||
|
|
||||||
|
* Константы: Со спецпоследовательностями (начинается с буквы E перед апострофом)
|
||||||
|
|
||||||
|
* \b - "забой" (BackSpace)
|
||||||
|
* \f - подача формы
|
||||||
|
* \n - новая строка
|
||||||
|
* \r - возврат каретки
|
||||||
|
* \t - табуляция
|
||||||
|
|
||||||
|
### Операторы
|
||||||
|
|
||||||
|
* ^ - возведение в степень
|
||||||
|
* IS TRUE, IS FALSE
|
||||||
|
* ISNULL
|
||||||
|
|
||||||
|
### Специальные знаки (Вот вооще не операторы)
|
||||||
|
|
||||||
|
**Вот с#ка не забудь про ;**
|
||||||
|
|
||||||
|
### Коментарии
|
||||||
|
|
||||||
|
```sql
|
||||||
|
-- Коментарий
|
||||||
|
```
|
||||||
|
|
||||||
|
```sql
|
||||||
|
/* многострочный
|
||||||
|
коментарий */
|
||||||
|
```
|
||||||
|
|
||||||
|
## Типы данных
|
||||||
|
|
||||||
|
### Числовые типы
|
||||||
|
|
||||||
|
* *smallint* (2 байта) - целое в небольшом диапозоне
|
||||||
|
* *integer* (4 байта) - типичный выбор для целых чисел
|
||||||
|
* *bigint* (8 байт) - целое в большом диапозоне
|
||||||
|
* *numeric* / *decimal* (переменный) - десятичное с указанной точностью
|
||||||
|
* *real* (4 байта) - десятичное с переменной точностью
|
||||||
|
* *double precision* (8 байт) - вещественное число с переменной точностью
|
||||||
|
* *smallserial* (2 байта) - небольшое целое с автоувелечением
|
||||||
|
* *serial* (4 байта) - целое с автоувеличением
|
||||||
|
* *bigserial* (8 байт) - большое целое с автоувеличением
|
||||||
|
* *money* - два знака после запятой, денежный тип
|
||||||
|
|
||||||
|
### Символьные типы данных
|
||||||
|
|
||||||
|
* *character varing(n)* / *varchar(n)* - строка ограниченной переменной длины
|
||||||
|
* *character(n)* / *char(n)* - строка фиксированной длины с пробелами
|
||||||
|
* *text* - строка неограничсенной переменной длины
|
||||||
|
|
||||||
|
### Логический тип данных
|
||||||
|
|
||||||
|
* *boolean* (1 байт) - TRUE / FALSE / NULL
|
||||||
|
|
||||||
|
### Типы данных даты и времени
|
||||||
|
|
||||||
|
* *date* - дата без времени YYYY-MM-DD
|
||||||
|
* *timestamp* - дата и время с точностью до микросекунды
|
||||||
|
* *interval* - интервал между датами
|
||||||
|
* *time* - время без даты. Удобный тип данных чем-то похожий на interval, который работает по модулю 24 (часа), то есть интервал, в котором отстутствуют дни
|
||||||
|
|
||||||
|
## DDL - Data Defintion Language
|
||||||
|
|
||||||
|
* CREATE - создание таблиц
|
||||||
|
* ALTER - используется для изменения объектов БД
|
||||||
|
* DROP - оспользуется для удаления БД
|
||||||
|
|
||||||
|
### Примеры
|
||||||
|
|
||||||
|
* Создать базу данных:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
CREATE DATABASE test;
|
||||||
|
```
|
||||||
|
|
||||||
|
* Создать таблицу
|
||||||
|
|
||||||
|
```sql
|
||||||
|
CREATE TABLE films(
|
||||||
|
code char(5) CONSTRAINT firstkey PRIMARY KEY,
|
||||||
|
title varchar(40) NOT NULL,
|
||||||
|
did integer NOT NULL,
|
||||||
|
date_prod date,
|
||||||
|
kind varchar(10),
|
||||||
|
len interval hour to minute
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
* Добавить столбец
|
||||||
|
|
||||||
|
```sql
|
||||||
|
ALTER TABLE distributors ADD COLUMN adress varchar(30);
|
||||||
|
```
|
||||||
|
|
||||||
|
* Удалить столбец
|
||||||
|
|
||||||
|
```sql
|
||||||
|
ALTER TABLE distributors DROP COLUMN adress RESTRICT;
|
||||||
|
```
|
||||||
|
|
||||||
|
* Изменить тип данных
|
||||||
|
|
||||||
|
```sql
|
||||||
|
ALTER TABLE distributors
|
||||||
|
ALTER COLUMN address TYPE varchar(80),
|
||||||
|
ALTER COLUMN name TYPE varchar(100);
|
||||||
|
```
|
||||||
|
|
||||||
|
* Создать таблицу, если нет с таким же названием:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
CREATE TABLE IF NOT EXISTS ... ;
|
||||||
|
```
|
||||||
|
|
||||||
|
* Получить всё из таблицы:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
SELECT * FROM authors;
|
||||||
|
```
|
||||||
|
|
||||||
|
* Вставить что-то в таблицу:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
INSERT INTO authors VALUES (1, 'Лёва Толстый');
|
||||||
|
```
|
||||||
|
|
||||||
|
## Фильтрация и компоновка данных
|
||||||
|
|
||||||
|
### Where
|
||||||
|
|
||||||
|
> Для осуществления фильтрации в SQL есть специальный оператор *WHERE*
|
||||||
|
|
||||||
|
```sql
|
||||||
|
SELECT * FROM stores WHERE amount > 10
|
||||||
|
```
|
||||||
|
|
||||||
|
### Агрегатные функции
|
||||||
|
|
||||||
|
> Агрегатные функции выполняют вычисления над набром значений и возвращает 1 значение. Агрегатные функции игранируют NULL значения (кроме COUNT)
|
||||||
|
|
||||||
|
* *СOUNT(\*)* - находит количество строк в запросе
|
||||||
|
* *COUNT(**expression**)* - находит количество строк в запросе, для которых **expression** не содержит значение NULL;
|
||||||
|
* *SUM* - сумма значений выьранных столбцов
|
||||||
|
* *MAX* - максимальное значение определённого столбца
|
||||||
|
* *MIN* - минимальное значение определённого столбца
|
||||||
|
* *AVG* - вычисление среднее значение столбца
|
||||||
|
|
||||||
|
### Группировка данных (*GROUP BY*)
|
||||||
|
|
||||||
|
> *GROUP BY* определяет, как строки будут группироваться, чтобы разделить их на логические наборы, благодаря чему становится возможном выполнение статических вычеслений отдельно в каждой группе
|
||||||
|
|
||||||
|
```sql
|
||||||
|
SELECT age, SUM(salary) as sum FROM workers GROUP BY age;
|
||||||
|
-- Сумма зарплат для каждого возраста
|
||||||
|
-- *as sum* меняет название столбца на нужное нам (было бы так, как написанно (SUM(salary)))
|
||||||
|
```
|
||||||
|
|
||||||
|
### Оператор *HAVING*
|
||||||
|
|
||||||
|
> Оператор *HAVING* позволяет определять условия выборки уже сгрупированных данных. *HAVING* применяется строго после GROUP_BY и может использовать результаты агрегатных функций
|
||||||
|
|
||||||
|
```sql
|
||||||
|
SELECT model, COUNT(model) as Qty_model, AVG(price) as Avg_price
|
||||||
|
FROM PC
|
||||||
|
GROUP BY model
|
||||||
|
HAVING AVG(price) < 800;
|
||||||
|
-- Фильтрует столбцы, которые были бы выданы после GROUP BY
|
||||||
|
```
|
||||||
|
|
||||||
|
### Оператор *SORT BY*
|
||||||
|
|
||||||
|
> *ORDER BY* используется для сортировки записей в наборе результатов запроса *SELECT*. Сортирует по возрастанию, но, если нужно сделать по убыванию, то используем *DESC* (от английского descending)
|
||||||
|
|
||||||
|
```sql
|
||||||
|
SELECT * FROM Sumproduct ORDER BY Amount DESC, City
|
||||||
|
-- Значала сортирует по Amount по убыванию, потом по городу по возростанию
|
||||||
|
```
|
||||||
|
|
||||||
|
### *LIMIT* и *OFFSET*
|
||||||
|
|
||||||
|
* *LIMIT* - макс количество выданных строк
|
||||||
|
* *OFFSET* - пропустить первые N строк
|
||||||
|
|
||||||
|
### Общий вид
|
||||||
|
|
||||||
|
```sql
|
||||||
|
SELECT столбцы
|
||||||
|
FROM ТАБЛИЦА
|
||||||
|
WHERE условие-фильтра
|
||||||
|
GROUP BY столбцы-для-группировки
|
||||||
|
HAVING фильтр-груп
|
||||||
|
ORDER BY столбцы для сортировки
|
||||||
|
LIMIT N
|
||||||
|
OFFSET K
|
||||||
|
```
|
||||||
|
|
||||||
|
```sql
|
||||||
|
SELECT name, AVG(salary) as avg_salary
|
||||||
|
FROM workers
|
||||||
|
GROUP BY name
|
||||||
|
HAVING name != 'JOHN'
|
||||||
|
ORDER BY avg_salary DESC
|
||||||
|
LIMIT 5
|
||||||
|
OFFSET 3
|
||||||
|
```
|
||||||
|
|
||||||
|
## Соединение и объединение таблиц
|
||||||
|
|
||||||
|
### *JOIN*
|
||||||
|
|
||||||
|
> *JOIN* позволяет соединения двух или более таблиц
|
||||||
|
|
||||||
|
#### Виды
|
||||||
|
|
||||||
|
* *JOIN* (только пересечение)
|
||||||
|
* *LEFT JOIN* (всё из первой и пересечение)
|
||||||
|
* *RIGHT JOIN* (всё из второй таблицы и пересечение)
|
||||||
|
* *FULL JOIN* (всё из обоих таблиц)
|
||||||
|
|
||||||
|
#### Пример
|
||||||
|
|
||||||
|
```sql
|
||||||
|
SELECT * FROM AUTHORS [LEFT/RIGHT/FULL/""] JOIN BOOKS
|
||||||
|
ON Author.id = Books.author_id
|
||||||
|
```
|
||||||
|
|
||||||
|
### *UNION*
|
||||||
|
|
||||||
|
> Выводит результаты двух *SELECT*. Удаляет дубликаты, если не *UNION ALL*. Кол-во и названия строк должны быть одинаковыми
|
||||||
|
|
||||||
|
#### Пример *UNION*
|
||||||
|
|
||||||
|
```sql
|
||||||
|
SELECT val1 FROM table1
|
||||||
|
UNION
|
||||||
|
SELECT val1 FROM table2
|
||||||
|
```
|
||||||
|
|
||||||
|
### *INTERSECT*
|
||||||
|
|
||||||
|
> Возвращает значения, которые выводят оба *SELECT*. Кол-во и названия строк должны быть одинаковыми. Синтаксис как у UNION
|
||||||
|
|
||||||
|
### *EXCEPT*
|
||||||
|
|
||||||
|
> Возвращает значения, которые выдал первый *SELECT*, но не второй. Кол-во и названия строк должны быть одинаковыми. Синтаксис как у UNION
|
12
sql/compose.yaml
Normal file
12
sql/compose.yaml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
services:
|
||||||
|
db:
|
||||||
|
image: postgres
|
||||||
|
environment:
|
||||||
|
- POSTGRES_USER=tester
|
||||||
|
- POSTGRES_PASSWORD=example123!
|
||||||
|
- POSTGRES_DB=testing
|
||||||
|
ports:
|
||||||
|
- 5432:5432/tcp
|
||||||
|
volumes:
|
||||||
|
- ./data:/var/lib/postgresql/data
|
||||||
|
restart: always
|
44
sql/task1.sql
Normal file
44
sql/task1.sql
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
/* CREATE TABLE IF NOT EXISTS stations(
|
||||||
|
id INT CONSTRAINT firstkey PRIMARY KEY,
|
||||||
|
city VARCHAR(21),
|
||||||
|
state VARCHAR(21),
|
||||||
|
lat_n INT,
|
||||||
|
long_w int
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO stations VALUES (794, 'Kissee Mills', 'MO', 140, 73),
|
||||||
|
(824, 'Loma Mar', 'CA', 49, 131),
|
||||||
|
(603, 'Sandy Hook', 'CT', 72, 148),
|
||||||
|
(478, 'Tipton', 'IN', 34, 98),
|
||||||
|
(619, 'Arlington', 'CO', 75, 93),
|
||||||
|
(711, 'Turner', 'AR', 50, 101),
|
||||||
|
(839, 'Slidell', 'LA', 85, 152),
|
||||||
|
(411, 'Negreet', 'LA', 99, 105),
|
||||||
|
(588, 'Glencoe', 'KY', 46, 136),
|
||||||
|
(665, 'Chelsea', 'IA', 99, 60),
|
||||||
|
(342, 'Chignik Lagoon', 'AK', 103, 153),
|
||||||
|
(733, 'Pelahatchie', 'MS', 39, 28),
|
||||||
|
(441, 'Hanna City', 'IL', 51, 137),
|
||||||
|
(811, 'Dorrance', 'KS', 102, 122),
|
||||||
|
(698, 'Albany', 'CA', 50, 80),
|
||||||
|
(325, 'Monument', 'KS', 71, 142),
|
||||||
|
(414, 'Manchester', 'MD', 74, 37),
|
||||||
|
(113, 'Prescott', 'IA', 40, 66),
|
||||||
|
(971, 'Graettinger', 'IA', 95, 150),
|
||||||
|
(266, 'Cahone', 'CO', 116, 127),
|
||||||
|
(617, 'Sturgis', 'MS', 36, 126),
|
||||||
|
(495, 'Upperco', 'MD', 114, 30),
|
||||||
|
(473, 'Highwood', 'IL', 27, 151),
|
||||||
|
(756, 'Garden City', 'AL', 96, 105),
|
||||||
|
(225, 'Garden City', 'IA', 54, 119);
|
||||||
|
*/;
|
||||||
|
SELECT city, state FROM stations;
|
||||||
|
SELECT SUM(lat_n), SUM(long_W) FROM stations;
|
||||||
|
SELECT city FROM stations WHERE id % 2 = 0;
|
||||||
|
SELECT COUNT(city) - COUNT(DISTINCT(city)) FROM stations;
|
||||||
|
SELECT lat_n FROM stations WHERE lat_n BETWEEN 39 AND 137;
|
||||||
|
SELECT max(lat_n) FROM stations WHERE lat_n <= 137;
|
||||||
|
SELECT min(lat_n) FROM stations WHERE lat_n >= 39;
|
||||||
|
SELECT DISTINCT(city) FROM stations WHERE LOWER(RIGHT(city, 1)) in ('a', 'e', 'i', 'o', 'u', 'y');
|
||||||
|
SELECT DISTINCT(city) FROM stations WHERE LOWER(RIGHT(city, 1)) IN ('a', 'e', 'i', 'o', 'u', 'y') AND LOWER(LEFT(city, 1)) IN ('a', 'e', 'i', 'o', 'u', 'y');
|
||||||
|
SELECT DISTINCT(city) FROM stations WHERE LOWER(LEFT(city, 1)) NOT IN ('a', 'e', 'i', 'o', 'u', 'y');
|
47
sql/task2.sql
Normal file
47
sql/task2.sql
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
DROP TABLE IF EXISTS Salary CASCADE;
|
||||||
|
CREATE TABLE Salary(
|
||||||
|
id INT PRIMARY KEY,
|
||||||
|
salary INT
|
||||||
|
);
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS Positions CASCADE;
|
||||||
|
CREATE TABLE Positions(
|
||||||
|
id INT PRIMARY KEY,
|
||||||
|
title VARCHAR(255)
|
||||||
|
);
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS People;
|
||||||
|
CREATE TABLE People(
|
||||||
|
id INT PRIMARY KEY,
|
||||||
|
name VARCHAR(255),
|
||||||
|
position_id INT REFERENCES Positions(id),
|
||||||
|
salary_id INT REFERENCES Salary(id)
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO Salary VALUES (1, 10000), (2, 20000), (3, 3000);
|
||||||
|
INSERT INTO Positions VALUES (1, 'Дизайнер'), (2, 'Редактор'), (3, 'Программист');
|
||||||
|
INSERT INTO PEOPLE VALUES (1, 'Владмир', 1, 1), (2, 'Татьяна', 2, 2), (3, 'Александр', NULL, 2), (4, 'Борис', 2, NULL);
|
||||||
|
|
||||||
|
SELECT People.id, People.name, Positions.id as pos_id, Positions.title FROM People JOIN Positions on People.position_id = Positions.id;
|
||||||
|
|
||||||
|
SELECT People.id, People.name, Positions.id as pos_id, Positions.title FROM People RIGHT JOIN Positions on People.position_id = Positions.id;
|
||||||
|
|
||||||
|
SELECT People.id, People.name, Positions.id as pos_id, Positions.title FROM People LEFT JOIN Positions on People.position_id = Positions.id
|
||||||
|
EXCEPT
|
||||||
|
SELECT People.id, People.name, Positions.id as pos_id, Positions.title FROM People JOIN Positions on People.position_id = Positions.id;
|
||||||
|
|
||||||
|
SELECT People.id, People.name, Positions.id as pos_id, Positions.title FROM People LEFT JOIN Positions on People.position_id = Positions.id
|
||||||
|
WHERE People.position_id ISNULL;
|
||||||
|
|
||||||
|
SELECT People.id, People.name, Positions.id as pos_id, Positions.title FROM People FULL JOIN Positions on People.position_id = Positions.id
|
||||||
|
WHERE Positions.id ISNULL OR People.id ISNULL;
|
||||||
|
|
||||||
|
SELECT People.id, People.name, Positions.id as pos_id, Positions.title FROM People LEFT JOIN Positions on People.position_id = Positions.id
|
||||||
|
UNION
|
||||||
|
SELECT People.id, People.name, Positions.id as pos_id, Positions.title FROM People RIGHT JOIN Positions on People.position_id = Positions.id
|
||||||
|
EXCEPT
|
||||||
|
SELECT People.id, People.name, Positions.id as pos_id, Positions.title FROM People JOIN Positions on People.position_id = Positions.id;
|
||||||
|
|
||||||
|
SELECT People.id, name, position_id, title, salary_id, salary FROM People
|
||||||
|
JOIN Positions on People.position_id = Positions.id
|
||||||
|
JOIN Salary ON People.salary_id = Salary.id;
|
154
sql/task3.sql
Normal file
154
sql/task3.sql
Normal file
@ -0,0 +1,154 @@
|
|||||||
|
DROP TABLE IF EXISTS product;
|
||||||
|
CREATE TABLE product(
|
||||||
|
maker varchar(10),
|
||||||
|
model varchar(50) PRIMARY KEY,
|
||||||
|
type varchar(50)
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO product VALUES
|
||||||
|
('A', '1001', 'pc'),
|
||||||
|
('A', '1002', 'pc'),
|
||||||
|
('A', '1003', 'pc'),
|
||||||
|
('A', '2004', 'laptop'),
|
||||||
|
('A', '2005', 'laptop'),
|
||||||
|
('A', '2006', 'laptop'),
|
||||||
|
('B', '1004', 'pc'),
|
||||||
|
('B', '1005', 'pc'),
|
||||||
|
('B', '1006', 'pc'),
|
||||||
|
('B', '2007', 'laptop'),
|
||||||
|
('C', '1007', 'pc'),
|
||||||
|
('D', '1008', 'pc'),
|
||||||
|
('D', '1009', 'pc'),
|
||||||
|
('D', '1010', 'pc'),
|
||||||
|
('D', '3004', 'printer'),
|
||||||
|
('D', '3005', 'printer'),
|
||||||
|
('E', '1011', 'pc'),
|
||||||
|
('E', '1012', 'pc'),
|
||||||
|
('E', '1013', 'pc'),
|
||||||
|
('E', '2001', 'laptop'),
|
||||||
|
('E', '2002', 'laptop'),
|
||||||
|
('E', '2003', 'laptop'),
|
||||||
|
('E', '3001', 'printer'),
|
||||||
|
('E', '3002', 'printer'),
|
||||||
|
('E', '3003', 'printer'),
|
||||||
|
('F', '2008', 'laptop'),
|
||||||
|
('F', '2009', 'laptop'),
|
||||||
|
('G', '2010', 'laptop'),
|
||||||
|
('H', '3006', 'printer'),
|
||||||
|
('H', '3007', 'printer');
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS pc;
|
||||||
|
CREATE TABLE pc(
|
||||||
|
code INT PRIMARY KEY,
|
||||||
|
model varchar(50),
|
||||||
|
speed real,
|
||||||
|
ram smallint,
|
||||||
|
hd real,
|
||||||
|
price real
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO pc VALUES
|
||||||
|
(1, '1001',2.66,1024,250,2114),
|
||||||
|
(2, '1002',2.10,512,250,995),
|
||||||
|
(3, '1003',1.42,512,80,478),
|
||||||
|
(4, '1004',2.80,1024,250,649),
|
||||||
|
(5, '1005',3.20,512,250,630),
|
||||||
|
(6, '1006',3.20,1024,320,1049),
|
||||||
|
(7, '1007',2.20,1024,200,510),
|
||||||
|
(8, '1008',2.20,2048,250,770),
|
||||||
|
(9, '1009',2.00,1024,250,650),
|
||||||
|
(10, '1010',2.80,2048,300,770),
|
||||||
|
(11, '1011',1.86,2048,160,959),
|
||||||
|
(12, '1012',2.80,1024,160,649),
|
||||||
|
(13, '1013',3.06,512,80,529);
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS laptop;
|
||||||
|
CREATE TABLE laptop(
|
||||||
|
code int PRIMARY KEY,
|
||||||
|
model varchar(50),
|
||||||
|
speed real,
|
||||||
|
ram smallint,
|
||||||
|
hd real,
|
||||||
|
screen real,
|
||||||
|
price real
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO laptop VALUES
|
||||||
|
(1, '2001', 2.00, 2048, 240, 20.1, 3673),
|
||||||
|
(2, '2002', 1.73, 1024, 80, 17.0, 949),
|
||||||
|
(3, '2003', 1.80, 512, 60, 15.4, 549),
|
||||||
|
(4, '2004', 2.00, 512, 60, 13.3, 1150),
|
||||||
|
(5, '2005', 2.16, 1024, 120, 17.0, 2500),
|
||||||
|
(6, '2006', 2.0, 2048, 80, 15.4, 1700),
|
||||||
|
(7, '2007', 1.83, 1024, 120, 13.3, 1429),
|
||||||
|
(8, '2008', 1.60, 1024, 100, 15.4, 900),
|
||||||
|
(9, '2009', 1.60, 512, 80, 14.1, 680),
|
||||||
|
(10, '2010', 2.00, 2048, 160, 15.4, 2300);
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS printer;
|
||||||
|
CREATE TABLE printer(
|
||||||
|
code int PRIMARY KEY,
|
||||||
|
model varchar(50),
|
||||||
|
color boolean,
|
||||||
|
type varchar(10),
|
||||||
|
price real
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO printer VALUES
|
||||||
|
(1, '3001', true, 'ink-jet', 99),
|
||||||
|
(2, '3002', false, 'laser', 239),
|
||||||
|
(3, '3003', true, 'laser', 899),
|
||||||
|
(4, '3004', true, 'ink-jet', 120),
|
||||||
|
(5, '3005', false, 'laser', 120),
|
||||||
|
(6, '3006', true, 'ink-jet', 100),
|
||||||
|
(7, '3007', true, 'laser', 200);
|
||||||
|
|
||||||
|
|
||||||
|
SELECT model, speed, hd FROM pc WHERE price < 700;
|
||||||
|
SELECT DISTINCT maker FROM product WHERE type = 'printer';
|
||||||
|
SELECT model, hd, screen FROM laptop WHERE price > 1000;
|
||||||
|
SELECT * FROM printer WHERE color;
|
||||||
|
|
||||||
|
SELECT maker, speed FROM product JOIN laptop ON product.model = laptop.model
|
||||||
|
WHERE hd >= 10;
|
||||||
|
(SELECT product.model, price FROM product JOIN pc ON product.model = pc.model WHERE maker = 'B'
|
||||||
|
UNION
|
||||||
|
SELECT product.model, price FROM product JOIN laptop ON product.model = laptop.model WHERE maker = 'B'
|
||||||
|
UNION
|
||||||
|
SELECT product.model, price FROM product JOIN printer ON product.model = printer.model WHERE maker = 'B') ORDER BY model;
|
||||||
|
SELECT DISTINCT maker FROM product WHERE type = 'pc'
|
||||||
|
EXCEPT
|
||||||
|
SELECT DISTINCT maker FROM product WHERE type = 'laptop';
|
||||||
|
|
||||||
|
SELECT model FROM printer WHERE price = (SELECT MAX(price) FROM printer);
|
||||||
|
SELECT AVG(speed) FROM pc;
|
||||||
|
SELECT AVG(speed) FROM laptop WHERE price > 100;
|
||||||
|
SELECT AVG(speed) FROM product JOIN pc ON product.model = pc.model WHERE maker = 'A';
|
||||||
|
SELECT DISTINCT maker, type FROM product WHERE maker in
|
||||||
|
(SELECT maker FROM product GROUP BY maker HAVING COUNT(DISTINCT type) = 1);
|
||||||
|
|
||||||
|
SELECT hd FROM pc GROUP BY hd HAVING COUNT(hd) >= 2 ORDER BY hd;
|
||||||
|
SELECT model, speed FROM laptop WHERE speed < (SELECT MIN(speed) FROM pc);
|
||||||
|
SELECT maker, price FROM printer JOIN product ON printer.model = product.model WHERE price = (SELECT MIN(price) FROM printer WHERE color) AND color;
|
||||||
|
SELECT maker, AVG(screen) FROM laptop JOIN product ON laptop.model = product.model GROUP BY maker ORDER BY maker;
|
||||||
|
SELECT maker FROM product WHERE type = 'pc' GROUP BY maker HAVING COUNT(type) >= 3;
|
||||||
|
|
||||||
|
SELECT maker, MAX(price) FROM product JOIN pc ON pc.model = product.model GROUP BY maker ORDER BY maker;
|
||||||
|
WITH MAX_PRICES as (
|
||||||
|
SELECT MAX(price) as price FROM laptop UNION SELECT MAX(price) as price FROM pc UNION SELECT MAX(price) as price FROM printer
|
||||||
|
)
|
||||||
|
SELECT model FROM laptop WHERE price = (SELECT MAX(price) FROM MAX_PRICES)
|
||||||
|
UNION
|
||||||
|
SELECT model FROM PC WHERE price = (SELECT MAX(price) FROM MAX_PRICES)
|
||||||
|
UNION
|
||||||
|
SELECT model FROM printer WHERE price = (SELECT MAX(price) FROM MAX_PRICES);
|
||||||
|
WITH LEAST_RAM as (
|
||||||
|
SELECT MIN(ram) as ram FROM pc
|
||||||
|
)
|
||||||
|
SELECT DISTINCT maker FROM product JOIN pc on product.model = pc.model WHERE
|
||||||
|
ram = (SELECT ram FROM LEAST_RAM) AND speed = (SELECT MAX(speed) FROM pc WHERE ram = (SELECT ram FROM LEAST_RAM))
|
||||||
|
INTERSECT
|
||||||
|
SELECT DISTINCT maker FROM product WHERE type='printer';
|
||||||
|
SELECT AVG(price) FROM (SELECT price FROM pc JOIN product ON pc.model = product.model WHERE maker = 'A'
|
||||||
|
UNION
|
||||||
|
SELECT price FROM laptop JOIN product ON laptop.model = product.model WHERE maker = 'A') as foo;
|
25
sql/values.py
Normal file
25
sql/values.py
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
(794, 'Kissee Mills', 'MO', 140, 73),
|
||||||
|
(824, 'Loma Mar', 'CA', 49, 131),
|
||||||
|
(603, 'Sandy Hook', 'CT', 72, 148),
|
||||||
|
(478, 'Tipton', 'IN', 34, 98),
|
||||||
|
(619, 'Arlington', 'CO', 75, 93),
|
||||||
|
(711, 'Turner', 'AR', 50, 101),
|
||||||
|
(839, 'Slidell', 'LA', 85, 152),
|
||||||
|
(411, 'Negreet', 'LA', 99, 105),
|
||||||
|
(588, 'Glencoe', 'KY', 46, 136),
|
||||||
|
(665, 'Chelsea', 'IA', 99, 60),
|
||||||
|
(342, 'Chignik Lagoon', 'AK', 103, 153),
|
||||||
|
(733, 'Pelahatchie', 'MS', 39, 28),
|
||||||
|
(441, 'Hanna City', 'IL', 51, 137),
|
||||||
|
(811, 'Dorrance', 'KS', 102, 122),
|
||||||
|
(698, 'Albany', 'CA', 50, 80),
|
||||||
|
(325, 'Monument', 'KS', 71, 142),
|
||||||
|
(414, 'Manchester', 'MD', 74, 37),
|
||||||
|
(113, 'Prescott', 'IA', 40, 66),
|
||||||
|
(971, 'Graettinger', 'IA', 95, 150),
|
||||||
|
(266, 'Cahone', 'CO', 116, 127),
|
||||||
|
(617, 'Sturgis', 'MS', 36, 126),
|
||||||
|
(495, 'Upperco', 'MD', 114, 30),
|
||||||
|
(473, 'Highwood', 'IL', 27, 151),
|
||||||
|
(756, 'Garden City', 'AL', 96, 105),
|
||||||
|
(225, 'Garden City', 'IA', 54, 119)
|
Reference in New Issue
Block a user