<commit_before>## Проекти/Домашни за ООП практикум ИС 2013/2014 ##
---
### Проект 1: Command Line Utilities - *нечетни номера*

Този проект представлява серия от инструменти с които ще се обработват текстови и бинарни файлове. Обработката на текстовите файловете ще включва филтриране на съдържанието по дадени критерии, търсене и сортиране. Ще има включени инструменти за четене и писане във файлове по зададени параметри. Инструментите ще са подходящо направени, така че да позволяват използването на няколко от тях едновременно върху едни данни (файл). Например прочитане на текстов файл и извеждане на всички редове от него, които съдържат определен низ, след което записване на получения резултат в друг файл или извеждане на конзолата.


**Домашно 1.** Напишете клас представящ филтър, който предоставя възможността да се чете вход от конзолата до край на файл ([ctrl] + D/Z). След това може да изведе последователно тези от прочетените редове, в които се съдържа избрана дума. Преценете какви член функции и член данни трябва да има този клас. Демонстрирайте използването му в кратка main функция.

---

### Проект 2: Игра с карти - *четни номера*

Целта на проектa ви е да реализирате походова игра с карти. Играта се играе от двама играчи, всеки от които притежава предварително зададено тесте. В тестето участват до 10 карти. Всяка карта притежава четири свойства - Атака, Живот, Необходима енергия, Умения (от 1 до 3 на брой). Победител се излъчва когато единия играч остане без карти. За изваждането на карта на "бойното поле" е необходима енергия. Играчите започват с опередена енергия и след всеки ход получават допълнителна такава. 

**Домашно 1.** Първата ви задача около този проект е да създадете клас карта. Той трябва да притежава горепосочените свойства като на този етап ще игнорираме уменията.
Необходимата енергия се пресмята по формулата Е = Ж/100 + А/20 (Е - необходима енергия, Ж - живот, А - атака). Класът трябва да притежава конструктор, копиращ конструктор
и деструктор. Останалите методи и член-данни трябва да бъдат избрани от вас. Демонстрирайте използването на този клас в кратка main функция.<commit_msg>Add project 1, homework 2 task - FilterChain<commit_after>## Проекти/Домашни за ООП практикум ИС 2013/2014 ##
---
### Проект 1: Command Line Utilities - *нечетни номера*

Този проект представлява серия от инструменти с които ще се обработват текстови и бинарни файлове. Обработката на текстовите файловете ще включва филтриране на съдържанието по дадени критерии, търсене и сортиране. Ще има включени инструменти за четене и писане във файлове по зададени параметри. Инструментите ще са подходящо направени, така че да позволяват използването на няколко от тях едновременно върху едни данни (файл). Например прочитане на текстов файл и извеждане на всички редове от него, които съдържат определен низ, след което записване на получения резултат в друг файл или извеждане на конзолата.


**Домашно 1.** Напишете клас представящ филтър, който предоставя възможността да се чете вход от конзолата до край на файл ([ctrl] + D/Z). След това може да изведе последователно тези от прочетените редове, в които се съдържа избрана дума. Преценете какви член функции и член данни трябва да има този клас. Демонстрирайте използването му в кратка main функция.

**Домашно 2.** Напишете клас представляващ поредица от филтри (FilterChain), който трябва да представлява подредена поредица от филтри, като предефинирате подходящите оператори за целта. Класът ще трябва да може се инициализира с поток за писане и поток за четене, и неговата задача ще бъде да съдържанието на входа минавайки през филтрите да отиде в изхода. Добавете подходящи методи за добавяне и премахване и индексиране на филтрите от класа. Този клас трябва да може да се записва и чете от бинарен файл.

---

### Проект 2: Игра с карти - *четни номера*

Целта на проектa ви е да реализирате походова игра с карти. Играта се играе от двама играчи, всеки от които притежава предварително зададено тесте. В тестето участват до 10 карти. Всяка карта притежава четири свойства - Атака, Живот, Необходима енергия, Умения (от 1 до 3 на брой). Победител се излъчва когато единия играч остане без карти. За изваждането на карта на "бойното поле" е необходима енергия. Играчите започват с опередена енергия и след всеки ход получават допълнителна такава. 

**Домашно 1.** Първата ви задача около този проект е да създадете клас карта. Той трябва да притежава горепосочените свойства като на този етап ще игнорираме уменията.
Необходимата енергия се пресмята по формулата Е = Ж/100 + А/20 (Е - необходима енергия, Ж - живот, А - атака). Класът трябва да притежава конструктор, копиращ конструктор
и деструктор. Останалите методи и член-данни трябва да бъдат избрани от вас. Демонстрирайте използването на този клас в кратка main функция.
{'fraction_non_alphanumeric': 0.043559427504667084, 'fraction_numerical': 0.009334163036714374, 'mean_word_length': 4.666274970622797, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2666143', 'n_tokens_mistral': 2036, 'n_tokens_neox': 2415, 'n_words': 715}