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