Домашни > Време е да помислите за проектите си! > Решения > Решението на Йоан Байчев

Резултати
0 точки от тестове
5 точки от учител

5 точки общо

0 успешни теста
0 неуспешни теста
Код

  1"""
  2[Title/Звание]
  3
  4Logic Crusher - Оптимизатор и визуализатор за булеви изрази.
  5
  6[Description/Обрисовка]
  7
  8Logic Crusher е графично приложение, което позволява на потребителите да въвеждат, опростяват, 
  9анализират и минимизират булеви изрази. Чрез подходящ интерфейс, потребителите могат да изпълняват разнообразни операции върху 
 10булеви функции, включително опростяване, минимизиране с алгоритъма на Quine–McCluskey, проверка на логически свойства, 
 11генериране на полиноми на Жегалкин и визуализация на Карно карти и абстрактно синтактично дърво (AST) с помощта на Graphviz. 
 12Основната цел на приложението е да намали сложността на логическите формули за по-добра разбираемост и ефективност, 
 13улеснявайки анализа и оптимизацията на логически изрази за образователни и професионални цели.
 14
 15[Functionalities/Надарености]
 16
 171. Въвеждане на булев израз чрез потребителски интерфейс: 
 18   -Потребителите могат лесно да въведат желаните булеви изрази чрез интуитивен графичен интерфейс.
 19
 202. Валидация на синтаксиса на израза: 
 21   - Вграден валидатор проверява синтаксиса на въведения израз и уведомява потребителя за грешки.
 22
 233. Опростяване на израза: 
 24   - Автоматично опростява булевите изрази чрез прилагане на логически закони и елиминиране на излишни компоненти.
 25
 264. Проверка на логически свойства:
 27   - Монотонност: Проверява дали функцията е монотонна, тоест дали увеличаването на стойностите на променливите не води до намаляване на стойността на функцията.
 28   - Линейност: Определя дали функцията е линейна, като анализира полинома на Жегалкин.
 29   - Самодвойственост: Проверява дали функцията е самодвойствена, тоест дали нейният дуал(огледален образ) е равен на нейното отрицание.
 30   - Запазване на нулата и единицата: Определя дали функцията запазва константните стойности 0 и 1.
 31
 325. Минимизиране на булеви изрази с алгоритъма на Quine–McCluskey:
 33   - Използва алгоритъм за минимизация, което води до по-ефективни логически схеми.
 34
 356. Генериране на полином на Жегалкин:
 36   - Преобразува булевите функции в техния еквивалентен полином на Жегалкин за по-лесен анализ и разбиране.
 37
 387. Генериране и визуализиране на Карно карти за 2 до 4 променливи:
 39   - Визуализацията на Карно карти улеснява процеса на минимизация и визуален анализ.
 40
 418. Визуализиране на абстрактно синтактично дърво (AST) с Graphviz: 
 42   - Показва структурната организация на булевия израз, помагайки за по-добро разбиране.
 43
 449. Показване на резултатите и минимизираните изрази в графичния интерфейс: 
 45   - Всички резултати се показват директно в приложението за удобство на потребителя.
 46
 4710. Разлагане по променлива: 
 48   - Прилага разлагане по Шанън за избрана променлива, предоставяйки кофакторите за по-дълбок анализ.
 49
 5011. Предотвратяване на дублиране: 
 51   - Чрез използване на множество от булеви функции се предотвратява запазването на дублиращи се функции във файла.
 52
 5312. Запазване на информация: 
 54   - Позволява запазване на всички обработени булеви функции и тяхната информация във външен файл, във формат JSON.
 55
 56[Milestones/Възлови точки]
 57
 581. Лексер и парсер:
 59   - Имплементация на лексер за токенизиране на входните изрази.
 60   - Разработка на парсер за създаване на абстрактно синтактично дърво(AST).
 61
 622. AST Възли и опростяване:
 63   - Създаване на класове за различните типове възли в AST - променливи(A, B, C ...), възли(AND, OR, XOR ...) и константи(1, 0, true, false).
 64   - Имплементация на методи за опростяване на булевите изрази.
 65
 663. Булеви функции, запазващи константите:
 67   - Имплементация на клас за обработване на константи(идеята е оптимизация и модулярност).
 68
 694. Полиномът на Жегалкин:
 70   - Имплементация на клас за опростяване на булеви функции чрез алгебрични операции.
 71   - По лесно прилагане на математически техники, като например намиране на симетрии и излишни термини в израза.
 72
 735. Клас за разглагане на булева функция по i променливи:
 74   - Позволява по-лесно управление и анализ на големи булеви изрази чрез разделянето им на по-малки.   
 75   - По-фокусирано опростяване на определени части от израза.
 76
 776. Затваряне на множество от булеви функции:
 78   - Имплементация на клас за управление на различни множества от булеви функции.
 79   - Позволява по-ефективно опростяване и минимизация чрез използване на свойства на затворените множества.
 80   - Валидация на операциите и предвидими резултати(Булева алгебра).
 81
 827. Минимизиране с Quine–McCluskey:
 83   - Разработка на клас за алгоритъма на Quine–McCluskey.
 84   - Интеграция на минимизиращия модул с основната логика на приложението.
 85
 868. Карно карта генератор:
 87   - Имплементация на класа за генериране на Карно карти.
 88   - Визуализация на карно карти чрез matplotlib.
 89
 909. Визуализация на AST с Graphviz:
 91   - Интеграция на Graphviz за визуализиране на AST.
 92   - Показване на генерираните графики в потребителския интерфейс.
 93
 9410. Графичен интерфейс (GUI):
 95   - Разработка на интерфейса с Tkinter.
 96   - Добавяне на бутони и полета за въвеждане и показване на резултати.
 97   - Обработка на потребителски действия и взаимодействия.
 98
 9911. Валидатор:
100   - Имплементация на клас за валидиране при токенизиране и преобразуване на токените в AST.
101
10212. Тестове и отстраняване на грешки:
103   - Писане на unit тестове за различните компоненти на приложението.
104   - Отстраняване на грешки и оптимизация на кода.
105
106[Estimate in man-hours/Времеоценка в човекочасове]
107
10880 часа
109
110[Usage of technologies/Потребление на технологии]
111
112- Python 3.12.7 - Език за разработка.
113- Tkinter - За създаване на графичния потребителски интерфейс.
114- re - За анализиране на изразите.
115- NumPy: За обработка на данни и матрични операции(при карно картите).
116- Matplotlib - За визуализиране на Карно карти.
117- itertools: За генериране на комбинации от стойности на променливите(функцията product).
118- Graphviz - За визуализиране на абстрактното синтактично дърво.
119- Pillow (PIL) - За обработка на изображения в Tkinter.
120- Quine–McCluskey алгоритъм - За минимизация на булеви изрази.
121- Алгебрични техники: Прилагане на математически методи за опростяване и анализ на булевите функции.
122- Unit тестове: За осигуряване на надеждност и коректност на приложението.
123"""


----------------------------------------------------------------------
Ran 0 tests in 0.000s

NO TESTS RAN

Дискусия
Георги Кунчев
02.12.2024 10:54

Смятам, че идеята, било то и най-вероятно с тясно приложение, е интересна. Би могла да погаже достатъчно знания. Не мисля, че е добра идея да парсваш инпута с `re`. Имаш по-добри варианти. Виж [tokenize](https://docs.python.org/3/library/tokenize.html) и [ast](https://docs.python.org/3/library/ast.html) Ако приемем, че входът ти използва синтаксис на Пайтън, това ти дава парсването на готово. Дава ти и валидацията. Имайки това предвид, на теб остава да имплементираш същинския алгоритъм и да визуализираш. За да не се окаже прекалено лесно, можеш да подготвиш някаква база данни, в която да записваш обработените неща. Върху нея може да има статистика, а може и просто да имаш история и толкоз. Относно дерзнията ти за скорост/място - бих заложил на скорост.
Йоан Байчев
01.12.2024 02:09

За тези 80 часа фокусът ми би бил да разработя проект за 2,3 или 4 променливи, тъй като за неизброимо голямо множество от променливи би било абсурдно, но повечето алгоритми (за някакъв тип оптимизиране), които съм поставил биха имали повече смисъл, например като "разглагане на булева функция по i променливи" за неизвестен брой променливи. Относно асоциативност, комутативност, дистрибутивност и други, все още не съм напълно сигурен как би било най-добре да ги имплементирам като свойства(клас, методи, ...) - дилемата ми е дали да платя повече памет за "евентуална" скорост или не. Като заключение бих казал, че възловите ми точки са "идейни" и още съм в процес на "Да бъде или да не бъде".
История

f1"""f1"""
2[Title/Звание]2[Title/Звание]
33
n4Logic Crusher - Оптимизатор и визуализатор за булеви изрази n4Logic Crusher - Оптимизатор и визуализатор за булеви изрази.
55
6[Description/Обрисовка]6[Description/Обрисовка]
77
n8Logic Crusher е графично приложение, което позволява на потребителите да въвеждат, n8Logic Crusher е графично приложение, което позволява на потребителите да въвеждат, опростяват, 
9опростяват и минимизират булеви изрази. Приложението използва алгоритъма на Quine–McCluskey за 9анализират и минимизират булеви изрази. Чрез подходящ интерфейс, потребителите могат да изпълняват разнообразни операции върху 
10минимизация и предоставя визуализация чрез карно карти и абстрактно синтактично дърво (AST). 10булеви функции, включително опростяване, минимизиране с алгоритъма на Quine–McCluskey, проверка на логически свойства, 
11генериране на полиноми на Жегалкин и визуализация на Карно карти и абстрактно синтактично дърво (AST) с помощта на Graphviz. 
11Основната цел е да намали сложността на логическите формули за по-добра разбираемост и ефективност,12Основната цел на приложението е да намали сложността на логическите формули за по-добра разбираемост и ефективност, 
12и да улесни анализа и оптимизацията на логически изрази за образователни и професионални цели.13улеснявайки анализа и оптимизацията на логически изрази за образователни и професионални цели.
1314
14[Functionalities/Надарености]15[Functionalities/Надарености]
1516
n16- Въвеждане на булев израз чрез потребителски интерфейс.n171. Въвеждане на булев израз чрез потребителски интерфейс
18   -Потребителите могат лесно да въведат желаните булеви изрази чрез интуитивен графичен интерфейс.
19 
17- Валидация на синтаксиса на израза.202. Валидация на синтаксиса на израза
18- Опростяване на израза чрез методи за опростяване на логически операции.21   - Вграден валидатор проверява синтаксиса на въведения израз и уведомява потребителя за грешки.
22 
233. Опростяване на израза: 
24   - Автоматично опростява булевите изрази чрез прилагане на логически закони и елиминиране на излишни компоненти.
25 
264. Проверка на логически свойства:
27   - Монотонност: Проверява дали функцията е монотонна, тоест дали увеличаването на стойностите на променливите не води до намаляване на стойността на функцията.
28   - Линейност: Определя дали функцията е линейна, като анализира полинома на Жегалкин.
29   - Самодвойственост: Проверява дали функцията е самодвойствена, тоест дали нейният дуал(огледален образ) е равен на нейното отрицание.
30   - Запазване на нулата и единицата: Определя дали функцията запазва константните стойности 0 и 1.
31 
19- Минимизиране на булеви изрази с алгоритъма на Quine–McCluskey.325. Минимизиране на булеви изрази с алгоритъма на Quine–McCluskey:
33   - Използва алгоритъм за минимизация, което води до по-ефективни логически схеми.
34 
356. Генериране на полином на Жегалкин:
36   - Преобразува булевите функции в техния еквивалентен полином на Жегалкин за по-лесен анализ и разбиране.
37 
20- Генериране и визуализиране на Карно карти за 2 до 4 променливи.387. Генериране и визуализиране на Карно карти за 2 до 4 променливи:
39   - Визуализацията на Карно карти улеснява процеса на минимизация и визуален анализ.
40 
21- Визуализиране на абстрактно синтактично дърво (AST) с Graphviz.418. Визуализиране на абстрактно синтактично дърво (AST) с Graphviz
42   - Показва структурната организация на булевия израз, помагайки за по-добро разбиране.
43 
22- Показване на резултатите и минимизираните изрази в графичния интерфейс.449. Показване на резултатите и минимизираните изрази в графичния интерфейс
45   - Всички резултати се показват директно в приложението за удобство на потребителя.
46 
4710. Разлагане по променлива: 
48   - Прилага разлагане по Шанън за избрана променлива, предоставяйки кофакторите за по-дълбок анализ.
49 
5011. Предотвратяване на дублиране: 
51   - Чрез използване на множество от булеви функции се предотвратява запазването на дублиращи се функции във файла.
52 
5312. Запазване на информация: 
54   - Позволява запазване на всички обработени булеви функции и тяхната информация във външен файл, във формат JSON.
2355
24[Milestones/Възлови точки]56[Milestones/Възлови точки]
2557
n261.Лексер и парсер:n581. Лексер и парсер:
27   - Имплементация на лексер за токенизиране на входните изрази.59   - Имплементация на лексер за токенизиране на входните изрази.
28   - Разработка на парсер за създаване на абстрактно синтактично дърво(AST).60   - Разработка на парсер за създаване на абстрактно синтактично дърво(AST).
2961
n302.AST Възли и опростяване:n622. AST Възли и опростяване:
31   - Създаване на класове за различните типове възли в AST - променливи(A, B, C ...), възли(AND, OR, XOR ...) и константи(1, 0, true, false).63   - Създаване на класове за различните типове възли в AST - променливи(A, B, C ...), възли(AND, OR, XOR ...) и константи(1, 0, true, false).
32   - Имплементация на методи за опростяване на булевите изрази.64   - Имплементация на методи за опростяване на булевите изрази.
3365
n343.Булеви функции, запазващи константите:n663. Булеви функции, запазващи константите:
35   - Имплементация на клас за обработване на константи(идеята е оптимизация и модулярност).67   - Имплементация на клас за обработване на константи(идеята е оптимизация и модулярност).
3668
n374.Полиномът на Жегалкин:n694. Полиномът на Жегалкин:
38   - Имплементация на клас за опростяване на булеви функции чрез алгебрични операции.70   - Имплементация на клас за опростяване на булеви функции чрез алгебрични операции.
39   - По лесно прилагане на математически техники, като например намиране на симетрии и излишни термини в израза.71   - По лесно прилагане на математически техники, като например намиране на симетрии и излишни термини в израза.
4072
n415.Клас за разглагане на булева функция по i променливи:n735. Клас за разглагане на булева функция по i променливи:
42   - Позволява по-лесно управление и анализ на големи булеви изрази чрез разделянето им на по-малки.   74   - Позволява по-лесно управление и анализ на големи булеви изрази чрез разделянето им на по-малки.   
43   - По-фокусирано опростяване на определени части от израза.75   - По-фокусирано опростяване на определени части от израза.
4476
n456.Затваряне на множество от булеви функции:n776. Затваряне на множество от булеви функции:
46   - Имплементация на клас за управление на различни множества от булеви функции.78   - Имплементация на клас за управление на различни множества от булеви функции.
47   - Позволява по-ефективно опростяване и минимизация чрез използване на свойства на затворените множества.79   - Позволява по-ефективно опростяване и минимизация чрез използване на свойства на затворените множества.
n48   - Валидация на операциите и предвидими резултати(Алгебра).n80   - Валидация на операциите и предвидими резултати(Булева алгебра).
4981
n507.Минимизиране с Quine–McCluskey:n827. Минимизиране с Quine–McCluskey:
51   - Разработка на клас за алгоритъма на Quine–McCluskey.83   - Разработка на клас за алгоритъма на Quine–McCluskey.
52   - Интеграция на минимизиращия модул с основната логика на приложението.84   - Интеграция на минимизиращия модул с основната логика на приложението.
5385
n548.Карно карта генератор:n868. Карно карта генератор:
55   - Имплементация на класа за генериране на Карно карти.87   - Имплементация на класа за генериране на Карно карти.
56   - Визуализация на карно карти чрез matplotlib.88   - Визуализация на карно карти чрез matplotlib.
5789
n589.Визуализация на AST с Graphviz:n909. Визуализация на AST с Graphviz:
59   - Интеграция на Graphviz за визуализиране на AST.91   - Интеграция на Graphviz за визуализиране на AST.
60   - Показване на генерираните графики в потребителския интерфейс.92   - Показване на генерираните графики в потребителския интерфейс.
6193
n6210.Графичен интерфейс (GUI):n9410. Графичен интерфейс (GUI):
63   - Разработка на интерфейса с Tkinter.95   - Разработка на интерфейса с Tkinter.
64   - Добавяне на бутони и полета за въвеждане и показване на резултати.96   - Добавяне на бутони и полета за въвеждане и показване на резултати.
65   - Обработка на потребителски действия и взаимодействия.97   - Обработка на потребителски действия и взаимодействия.
6698
n6711.Валидатор:n9911. Валидатор:
68   - Имплементация на клас за валидиране при токенизиране и преобразуване на токените в AST.100   - Имплементация на клас за валидиране при токенизиране и преобразуване на токените в AST.
69101
n7012.Тестове и отстраняване на грешки:n10212. Тестове и отстраняване на грешки:
71   - Писане на unit тестове за различните компоненти на приложението.103   - Писане на unit тестове за различните компоненти на приложението.
72   - Отстраняване на грешки и оптимизация на кода.104   - Отстраняване на грешки и оптимизация на кода.
73105
74[Estimate in man-hours/Времеоценка в човекочасове]106[Estimate in man-hours/Времеоценка в човекочасове]
75107
7680 часа10880 часа
77109
78[Usage of technologies/Потребление на технологии]110[Usage of technologies/Потребление на технологии]
79111
80- Python 3.12.7 - Език за разработка.112- Python 3.12.7 - Език за разработка.
81- Tkinter - За създаване на графичния потребителски интерфейс.113- Tkinter - За създаване на графичния потребителски интерфейс.
82- re - За анализиране на изразите.114- re - За анализиране на изразите.
nn115- NumPy: За обработка на данни и матрични операции(при карно картите).
83- Matplotlib - За визуализиране на Карно карти.116- Matplotlib - За визуализиране на Карно карти.
nn117- itertools: За генериране на комбинации от стойности на променливите(функцията product).
84- Graphviz - За визуализиране на абстрактното синтактично дърво.118- Graphviz - За визуализиране на абстрактното синтактично дърво.
85- Pillow (PIL) - За обработка на изображения в Tkinter.119- Pillow (PIL) - За обработка на изображения в Tkinter.
86- Quine–McCluskey алгоритъм - За минимизация на булеви изрази.120- Quine–McCluskey алгоритъм - За минимизация на булеви изрази.
tt121- Алгебрични техники: Прилагане на математически методи за опростяване и анализ на булевите функции.
122- Unit тестове: За осигуряване на надеждност и коректност на приложението.
87"""123"""
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op

f1"""f1"""
2[Title/Звание]2[Title/Звание]
33
4Logic Crusher - Оптимизатор и визуализатор за булеви изрази 4Logic Crusher - Оптимизатор и визуализатор за булеви изрази 
55
6[Description/Обрисовка]6[Description/Обрисовка]
77
8Logic Crusher е графично приложение, което позволява на потребителите да въвеждат, 8Logic Crusher е графично приложение, което позволява на потребителите да въвеждат, 
9опростяват и минимизират булеви изрази. Приложението използва алгоритъма на Quine–McCluskey за 9опростяват и минимизират булеви изрази. Приложението използва алгоритъма на Quine–McCluskey за 
10минимизация и предоставя визуализация чрез карно карти и абстрактно синтактично дърво (AST). 10минимизация и предоставя визуализация чрез карно карти и абстрактно синтактично дърво (AST). 
11Основната цел е да намали сложността на логическите формули за по-добра разбираемост и ефективност,11Основната цел е да намали сложността на логическите формули за по-добра разбираемост и ефективност,
12и да улесни анализа и оптимизацията на логически изрази за образователни и професионални цели.12и да улесни анализа и оптимизацията на логически изрази за образователни и професионални цели.
1313
14[Functionalities/Надарености]14[Functionalities/Надарености]
1515
16- Въвеждане на булев израз чрез потребителски интерфейс.16- Въвеждане на булев израз чрез потребителски интерфейс.
17- Валидация на синтаксиса на израза.17- Валидация на синтаксиса на израза.
18- Опростяване на израза чрез методи за опростяване на логически операции.18- Опростяване на израза чрез методи за опростяване на логически операции.
19- Минимизиране на булеви изрази с алгоритъма на Quine–McCluskey.19- Минимизиране на булеви изрази с алгоритъма на Quine–McCluskey.
20- Генериране и визуализиране на Карно карти за 2 до 4 променливи.20- Генериране и визуализиране на Карно карти за 2 до 4 променливи.
21- Визуализиране на абстрактно синтактично дърво (AST) с Graphviz.21- Визуализиране на абстрактно синтактично дърво (AST) с Graphviz.
22- Показване на резултатите и минимизираните изрази в графичния интерфейс.22- Показване на резултатите и минимизираните изрази в графичния интерфейс.
2323
24[Milestones/Възлови точки]24[Milestones/Възлови точки]
2525
261.Лексер и парсер:261.Лексер и парсер:
27   - Имплементация на лексер за токенизиране на входните изрази.27   - Имплементация на лексер за токенизиране на входните изрази.
28   - Разработка на парсер за създаване на абстрактно синтактично дърво(AST).28   - Разработка на парсер за създаване на абстрактно синтактично дърво(AST).
2929
302.AST Възли и опростяване:302.AST Възли и опростяване:
31   - Създаване на класове за различните типове възли в AST - променливи(A, B, C ...), възли(AND, OR, XOR ...) и константи(1, 0, true, false).31   - Създаване на класове за различните типове възли в AST - променливи(A, B, C ...), възли(AND, OR, XOR ...) и константи(1, 0, true, false).
32   - Имплементация на методи за опростяване на булевите изрази.32   - Имплементация на методи за опростяване на булевите изрази.
3333
343.Булеви функции, запазващи константите:343.Булеви функции, запазващи константите:
35   - Имплементация на клас за обработване на константи(идеята е оптимизация и модулярност).35   - Имплементация на клас за обработване на константи(идеята е оптимизация и модулярност).
n36   n36 
374.Полиномът на Жегалкин:
38   - Имплементация на клас за опростяване на булеви функции чрез алгебрични операции.
39   - По лесно прилагане на математически техники, като например намиране на симетрии и излишни термини в израза.
40 
374.Клас за разглагане на булева функция по i променливи:415.Клас за разглагане на булева функция по i променливи:
38   - Позволява по-лесно управление и анализ на големи булеви изрази чрез разделянето им на по-малки.   42   - Позволява по-лесно управление и анализ на големи булеви изрази чрез разделянето им на по-малки.   
39   - По-фокусирано опростяване на определени части от израза.43   - По-фокусирано опростяване на определени части от израза.
4044
n415.Затваряне на множество от булеви функции:n456.Затваряне на множество от булеви функции:
42   - Имплементация на клас за управление на различни множества от булеви функции.46   - Имплементация на клас за управление на различни множества от булеви функции.
43   - Позволява по-ефективно опростяване и минимизация чрез използване на свойства на затворените множества.47   - Позволява по-ефективно опростяване и минимизация чрез използване на свойства на затворените множества.
44   - Валидация на операциите и предвидими резултати(Алгебра).48   - Валидация на операциите и предвидими резултати(Алгебра).
4549
n466.Минимизиране с Quine–McCluskey:n507.Минимизиране с Quine–McCluskey:
47   - Разработка на клас за алгоритъма на Quine–McCluskey.51   - Разработка на клас за алгоритъма на Quine–McCluskey.
48   - Интеграция на минимизиращия модул с основната логика на приложението.52   - Интеграция на минимизиращия модул с основната логика на приложението.
4953
n507.Карно карта генератор:n548.Карно карта генератор:
51   - Имплементация на класа за генериране на Карно карти.55   - Имплементация на класа за генериране на Карно карти.
52   - Визуализация на карно карти чрез matplotlib.56   - Визуализация на карно карти чрез matplotlib.
5357
n548.Визуализация на AST с Graphviz:n589.Визуализация на AST с Graphviz:
55   - Интеграция на Graphviz за визуализиране на AST.59   - Интеграция на Graphviz за визуализиране на AST.
56   - Показване на генерираните графики в потребителския интерфейс.60   - Показване на генерираните графики в потребителския интерфейс.
5761
n589.Графичен интерфейс (GUI):n6210.Графичен интерфейс (GUI):
59   - Разработка на интерфейса с Tkinter.63   - Разработка на интерфейса с Tkinter.
60   - Добавяне на бутони и полета за въвеждане и показване на резултати.64   - Добавяне на бутони и полета за въвеждане и показване на резултати.
61   - Обработка на потребителски действия и взаимодействия.65   - Обработка на потребителски действия и взаимодействия.
6266
n6310.Валидатор:n6711.Валидатор:
64   - Имплементация на клас за валидиране при токенизиране и преобразуване на токените в AST.68   - Имплементация на клас за валидиране при токенизиране и преобразуване на токените в AST.
6569
t6611.Тестове и отстраняване на грешки:t7012.Тестове и отстраняване на грешки:
67   - Писане на unit тестове за различните компоненти на приложението.71   - Писане на unit тестове за различните компоненти на приложението.
68   - Отстраняване на грешки и оптимизация на кода.72   - Отстраняване на грешки и оптимизация на кода.
6973
70[Estimate in man-hours/Времеоценка в човекочасове]74[Estimate in man-hours/Времеоценка в човекочасове]
7175
7280 часа7680 часа
7377
74[Usage of technologies/Потребление на технологии]78[Usage of technologies/Потребление на технологии]
7579
76- Python 3.12.7 - Език за разработка.80- Python 3.12.7 - Език за разработка.
77- Tkinter - За създаване на графичния потребителски интерфейс.81- Tkinter - За създаване на графичния потребителски интерфейс.
78- re - За анализиране на изразите.82- re - За анализиране на изразите.
79- Matplotlib - За визуализиране на Карно карти.83- Matplotlib - За визуализиране на Карно карти.
80- Graphviz - За визуализиране на абстрактното синтактично дърво.84- Graphviz - За визуализиране на абстрактното синтактично дърво.
81- Pillow (PIL) - За обработка на изображения в Tkinter.85- Pillow (PIL) - За обработка на изображения в Tkinter.
82- Quine–McCluskey алгоритъм - За минимизация на булеви изрази.86- Quine–McCluskey алгоритъм - За минимизация на булеви изрази.
83"""87"""
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op

f1"""f1"""
2[Title/Звание]2[Title/Звание]
33
4Logic Crusher - Оптимизатор и визуализатор за булеви изрази 4Logic Crusher - Оптимизатор и визуализатор за булеви изрази 
55
6[Description/Обрисовка]6[Description/Обрисовка]
77
8Logic Crusher е графично приложение, което позволява на потребителите да въвеждат, 8Logic Crusher е графично приложение, което позволява на потребителите да въвеждат, 
9опростяват и минимизират булеви изрази. Приложението използва алгоритъма на Quine–McCluskey за 9опростяват и минимизират булеви изрази. Приложението използва алгоритъма на Quine–McCluskey за 
10минимизация и предоставя визуализация чрез карно карти и абстрактно синтактично дърво (AST). 10минимизация и предоставя визуализация чрез карно карти и абстрактно синтактично дърво (AST). 
11Основната цел е да намали сложността на логическите формули за по-добра разбираемост и ефективност,11Основната цел е да намали сложността на логическите формули за по-добра разбираемост и ефективност,
12и да улесни анализа и оптимизацията на логически изрази за образователни и професионални цели.12и да улесни анализа и оптимизацията на логически изрази за образователни и професионални цели.
1313
14[Functionalities/Надарености]14[Functionalities/Надарености]
1515
16- Въвеждане на булев израз чрез потребителски интерфейс.16- Въвеждане на булев израз чрез потребителски интерфейс.
17- Валидация на синтаксиса на израза.17- Валидация на синтаксиса на израза.
18- Опростяване на израза чрез методи за опростяване на логически операции.18- Опростяване на израза чрез методи за опростяване на логически операции.
19- Минимизиране на булеви изрази с алгоритъма на Quine–McCluskey.19- Минимизиране на булеви изрази с алгоритъма на Quine–McCluskey.
20- Генериране и визуализиране на Карно карти за 2 до 4 променливи.20- Генериране и визуализиране на Карно карти за 2 до 4 променливи.
21- Визуализиране на абстрактно синтактично дърво (AST) с Graphviz.21- Визуализиране на абстрактно синтактично дърво (AST) с Graphviz.
22- Показване на резултатите и минимизираните изрази в графичния интерфейс.22- Показване на резултатите и минимизираните изрази в графичния интерфейс.
2323
24[Milestones/Възлови точки]24[Milestones/Възлови точки]
2525
261.Лексер и парсер:261.Лексер и парсер:
27   - Имплементация на лексер за токенизиране на входните изрази.27   - Имплементация на лексер за токенизиране на входните изрази.
n28   - Разработка на парсер за създаване на абстрактно синтактично дърво (AST).n28   - Разработка на парсер за създаване на абстрактно синтактично дърво(AST).
2929
302.AST Възли и опростяване:302.AST Възли и опростяване:
31   - Създаване на класове за различните типове възли в AST - променливи(A, B, C ...), възли(AND, OR, XOR ...) и константи(1, 0, true, false).31   - Създаване на класове за различните типове възли в AST - променливи(A, B, C ...), възли(AND, OR, XOR ...) и константи(1, 0, true, false).
32   - Имплементация на методи за опростяване на булевите изрази.32   - Имплементация на методи за опростяване на булевите изрази.
3333
nn343.Булеви функции, запазващи константите:
35   - Имплементация на клас за обработване на константи(идеята е оптимизация и модулярност).
36   
374.Клас за разглагане на булева функция по i променливи:
38   - Позволява по-лесно управление и анализ на големи булеви изрази чрез разделянето им на по-малки.   
39   - По-фокусирано опростяване на определени части от израза.
40 
415.Затваряне на множество от булеви функции:
42   - Имплементация на клас за управление на различни множества от булеви функции.
43   - Позволява по-ефективно опростяване и минимизация чрез използване на свойства на затворените множества.
44   - Валидация на операциите и предвидими резултати(Алгебра).
45 
343.Минимизиране с Quine–McCluskey:466.Минимизиране с Quine–McCluskey:
35   - Разработка на клас за алгоритъма на Quine–McCluskey.47   - Разработка на клас за алгоритъма на Quine–McCluskey.
36   - Интеграция на минимизиращия модул с основната логика на приложението.48   - Интеграция на минимизиращия модул с основната логика на приложението.
3749
n384.Карно карта генератор:n507.Карно карта генератор:
39   - Имплементация на класа за генериране на Карно карти.51   - Имплементация на класа за генериране на Карно карти.
40   - Визуализация на карно карти чрез matplotlib.52   - Визуализация на карно карти чрез matplotlib.
4153
n425.Визуализация на AST с Graphviz:n548.Визуализация на AST с Graphviz:
43   - Интеграция на Graphviz за визуализиране на AST.55   - Интеграция на Graphviz за визуализиране на AST.
44   - Показване на генерираните графики в потребителския интерфейс.56   - Показване на генерираните графики в потребителския интерфейс.
4557
n466.Графичен интерфейс (GUI):n589.Графичен интерфейс (GUI):
47   - Разработка на интерфейса с Tkinter.59   - Разработка на интерфейса с Tkinter.
48   - Добавяне на бутони и полета за въвеждане и показване на резултати.60   - Добавяне на бутони и полета за въвеждане и показване на резултати.
49   - Обработка на потребителски действия и взаимодействия.61   - Обработка на потребителски действия и взаимодействия.
5062
n517.Валидатор:n6310.Валидатор:
52   - Имплементация на клас за валидиране при токенизиране и преобразуване на токените в AST64   - Имплементация на клас за валидиране при токенизиране и преобразуване на токените в AST.
5365
t548.Тестове и отстраняване на грешки:t6611.Тестове и отстраняване на грешки:
55   - Писане на unit тестове за различните компоненти на приложението.67   - Писане на unit тестове за различните компоненти на приложението.
56   - Отстраняване на грешки и оптимизация на кода.68   - Отстраняване на грешки и оптимизация на кода.
5769
58[Estimate in man-hours/Времеоценка в човекочасове]70[Estimate in man-hours/Времеоценка в човекочасове]
5971
6080 часа7280 часа
6173
62[Usage of technologies/Потребление на технологии]74[Usage of technologies/Потребление на технологии]
6375
64- Python 3.12.7 - Език за разработка.76- Python 3.12.7 - Език за разработка.
65- Tkinter - За създаване на графичния потребителски интерфейс.77- Tkinter - За създаване на графичния потребителски интерфейс.
66- re - За анализиране на изразите.78- re - За анализиране на изразите.
67- Matplotlib - За визуализиране на Карно карти.79- Matplotlib - За визуализиране на Карно карти.
68- Graphviz - За визуализиране на абстрактното синтактично дърво.80- Graphviz - За визуализиране на абстрактното синтактично дърво.
69- Pillow (PIL) - За обработка на изображения в Tkinter.81- Pillow (PIL) - За обработка на изображения в Tkinter.
70- Quine–McCluskey алгоритъм - За минимизация на булеви изрази.82- Quine–McCluskey алгоритъм - За минимизация на булеви изрази.
71"""83"""
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op

f1"""f1"""
2[Title/Звание]2[Title/Звание]
33
4Logic Crusher - Оптимизатор и визуализатор за булеви изрази 4Logic Crusher - Оптимизатор и визуализатор за булеви изрази 
55
6[Description/Обрисовка]6[Description/Обрисовка]
77
8Logic Crusher е графично приложение, което позволява на потребителите да въвеждат, 8Logic Crusher е графично приложение, което позволява на потребителите да въвеждат, 
9опростяват и минимизират булеви изрази. Приложението използва алгоритъма на Quine–McCluskey за 9опростяват и минимизират булеви изрази. Приложението използва алгоритъма на Quine–McCluskey за 
10минимизация и предоставя визуализация чрез карно карти и абстрактно синтактично дърво (AST). 10минимизация и предоставя визуализация чрез карно карти и абстрактно синтактично дърво (AST). 
11Основната цел е да намали сложността на логическите формули за по-добра разбираемост и ефективност,11Основната цел е да намали сложността на логическите формули за по-добра разбираемост и ефективност,
12и да улесни анализа и оптимизацията на логически изрази за образователни и професионални цели.12и да улесни анализа и оптимизацията на логически изрази за образователни и професионални цели.
1313
14[Functionalities/Надарености]14[Functionalities/Надарености]
1515
16- Въвеждане на булев израз чрез потребителски интерфейс.16- Въвеждане на булев израз чрез потребителски интерфейс.
17- Валидация на синтаксиса на израза.17- Валидация на синтаксиса на израза.
18- Опростяване на израза чрез методи за опростяване на логически операции.18- Опростяване на израза чрез методи за опростяване на логически операции.
19- Минимизиране на булеви изрази с алгоритъма на Quine–McCluskey.19- Минимизиране на булеви изрази с алгоритъма на Quine–McCluskey.
20- Генериране и визуализиране на Карно карти за 2 до 4 променливи.20- Генериране и визуализиране на Карно карти за 2 до 4 променливи.
21- Визуализиране на абстрактно синтактично дърво (AST) с Graphviz.21- Визуализиране на абстрактно синтактично дърво (AST) с Graphviz.
22- Показване на резултатите и минимизираните изрази в графичния интерфейс.22- Показване на резултатите и минимизираните изрази в графичния интерфейс.
2323
24[Milestones/Възлови точки]24[Milestones/Възлови точки]
2525
261.Лексер и парсер:261.Лексер и парсер:
27   - Имплементация на лексер за токенизиране на входните изрази.27   - Имплементация на лексер за токенизиране на входните изрази.
28   - Разработка на парсер за създаване на абстрактно синтактично дърво (AST).28   - Разработка на парсер за създаване на абстрактно синтактично дърво (AST).
2929
302.AST Възли и опростяване:302.AST Възли и опростяване:
t31   - Създаване на класове за различните типове възли в AST - променливи(ANDORXOR ...) и константи(1,0,true,false).t31   - Създаване на класове за различните типове възли в AST - променливи(A, BC ...), възли(AND, OR, XOR ...) и константи(1, 0, true, false).
32   - Имплементация на методи за опростяване на булевите изрази.32   - Имплементация на методи за опростяване на булевите изрази.
3333
343.Минимизиране с Quine–McCluskey:343.Минимизиране с Quine–McCluskey:
35   - Разработка на клас за алгоритъма на Quine–McCluskey.35   - Разработка на клас за алгоритъма на Quine–McCluskey.
36   - Интеграция на минимизиращия модул с основната логика на приложението.36   - Интеграция на минимизиращия модул с основната логика на приложението.
3737
384.Карно карта генератор:384.Карно карта генератор:
39   - Имплементация на класа за генериране на Карно карти.39   - Имплементация на класа за генериране на Карно карти.
40   - Визуализация на карно карти чрез matplotlib.40   - Визуализация на карно карти чрез matplotlib.
4141
425.Визуализация на AST с Graphviz:425.Визуализация на AST с Graphviz:
43   - Интеграция на Graphviz за визуализиране на AST.43   - Интеграция на Graphviz за визуализиране на AST.
44   - Показване на генерираните графики в потребителския интерфейс.44   - Показване на генерираните графики в потребителския интерфейс.
4545
466.Графичен интерфейс (GUI):466.Графичен интерфейс (GUI):
47   - Разработка на интерфейса с Tkinter.47   - Разработка на интерфейса с Tkinter.
48   - Добавяне на бутони и полета за въвеждане и показване на резултати.48   - Добавяне на бутони и полета за въвеждане и показване на резултати.
49   - Обработка на потребителски действия и взаимодействия.49   - Обработка на потребителски действия и взаимодействия.
5050
517.Валидатор:517.Валидатор:
52   - Имплементация на клас за валидиране при токенизиране и преобразуване на токените в AST52   - Имплементация на клас за валидиране при токенизиране и преобразуване на токените в AST
5353
548.Тестове и отстраняване на грешки:548.Тестове и отстраняване на грешки:
55   - Писане на unit тестове за различните компоненти на приложението.55   - Писане на unit тестове за различните компоненти на приложението.
56   - Отстраняване на грешки и оптимизация на кода.56   - Отстраняване на грешки и оптимизация на кода.
5757
58[Estimate in man-hours/Времеоценка в човекочасове]58[Estimate in man-hours/Времеоценка в човекочасове]
5959
6080 часа6080 часа
6161
62[Usage of technologies/Потребление на технологии]62[Usage of technologies/Потребление на технологии]
6363
64- Python 3.12.7 - Език за разработка.64- Python 3.12.7 - Език за разработка.
65- Tkinter - За създаване на графичния потребителски интерфейс.65- Tkinter - За създаване на графичния потребителски интерфейс.
66- re - За анализиране на изразите.66- re - За анализиране на изразите.
67- Matplotlib - За визуализиране на Карно карти.67- Matplotlib - За визуализиране на Карно карти.
68- Graphviz - За визуализиране на абстрактното синтактично дърво.68- Graphviz - За визуализиране на абстрактното синтактично дърво.
69- Pillow (PIL) - За обработка на изображения в Tkinter.69- Pillow (PIL) - За обработка на изображения в Tkinter.
70- Quine–McCluskey алгоритъм - За минимизация на булеви изрази.70- Quine–McCluskey алгоритъм - За минимизация на булеви изрази.
71"""71"""
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op

f1"""f1"""
2[Title/Звание]2[Title/Звание]
33
4Logic Crusher - Оптимизатор и визуализатор за булеви изрази 4Logic Crusher - Оптимизатор и визуализатор за булеви изрази 
55
6[Description/Обрисовка]6[Description/Обрисовка]
77
8Logic Crusher е графично приложение, което позволява на потребителите да въвеждат, 8Logic Crusher е графично приложение, което позволява на потребителите да въвеждат, 
n9опростяват и минимизират булеви изрази. Приложението използва алгоритъма на Куайн-Маккласки за n9опростяват и минимизират булеви изрази. Приложението използва алгоритъма на Quine–McCluskey за 
10минимизация и предоставя визуализация чрез карно карти и абстрактно синтактично дърво (AST). 10минимизация и предоставя визуализация чрез карно карти и абстрактно синтактично дърво (AST). 
11Основната цел е да намали сложността на логическите формули за по-добра разбираемост и ефективност,11Основната цел е да намали сложността на логическите формули за по-добра разбираемост и ефективност,
12и да улесни анализа и оптимизацията на логически изрази за образователни и професионални цели.12и да улесни анализа и оптимизацията на логически изрази за образователни и професионални цели.
1313
14[Functionalities/Надарености]14[Functionalities/Надарености]
1515
16- Въвеждане на булев израз чрез потребителски интерфейс.16- Въвеждане на булев израз чрез потребителски интерфейс.
17- Валидация на синтаксиса на израза.17- Валидация на синтаксиса на израза.
18- Опростяване на израза чрез методи за опростяване на логически операции.18- Опростяване на израза чрез методи за опростяване на логически операции.
t19- Минимизиране на булеви изрази с алгоритъма на Куайн-Маккласки.t19- Минимизиране на булеви изрази с алгоритъма на Quine–McCluskey.
20- Генериране и визуализиране на Карно карти за 2 до 4 променливи.20- Генериране и визуализиране на Карно карти за 2 до 4 променливи.
21- Визуализиране на абстрактно синтактично дърво (AST) с Graphviz.21- Визуализиране на абстрактно синтактично дърво (AST) с Graphviz.
22- Показване на резултатите и минимизираните изрази в графичния интерфейс.22- Показване на резултатите и минимизираните изрази в графичния интерфейс.
2323
24[Milestones/Възлови точки]24[Milestones/Възлови точки]
2525
261.Лексер и парсер:261.Лексер и парсер:
27   - Имплементация на лексер за токенизиране на входните изрази.27   - Имплементация на лексер за токенизиране на входните изрази.
28   - Разработка на парсер за създаване на абстрактно синтактично дърво (AST).28   - Разработка на парсер за създаване на абстрактно синтактично дърво (AST).
2929
302.AST Възли и опростяване:302.AST Възли и опростяване:
31   - Създаване на класове за различните типове възли в AST - променливи(AND, OR, XOR ...) и константи(1,0,true,false).31   - Създаване на класове за различните типове възли в AST - променливи(AND, OR, XOR ...) и константи(1,0,true,false).
32   - Имплементация на методи за опростяване на булевите изрази.32   - Имплементация на методи за опростяване на булевите изрази.
3333
343.Минимизиране с Quine–McCluskey:343.Минимизиране с Quine–McCluskey:
35   - Разработка на клас за алгоритъма на Quine–McCluskey.35   - Разработка на клас за алгоритъма на Quine–McCluskey.
36   - Интеграция на минимизиращия модул с основната логика на приложението.36   - Интеграция на минимизиращия модул с основната логика на приложението.
3737
384.Карно карта генератор:384.Карно карта генератор:
39   - Имплементация на класа за генериране на Карно карти.39   - Имплементация на класа за генериране на Карно карти.
40   - Визуализация на карно карти чрез matplotlib.40   - Визуализация на карно карти чрез matplotlib.
4141
425.Визуализация на AST с Graphviz:425.Визуализация на AST с Graphviz:
43   - Интеграция на Graphviz за визуализиране на AST.43   - Интеграция на Graphviz за визуализиране на AST.
44   - Показване на генерираните графики в потребителския интерфейс.44   - Показване на генерираните графики в потребителския интерфейс.
4545
466.Графичен интерфейс (GUI):466.Графичен интерфейс (GUI):
47   - Разработка на интерфейса с Tkinter.47   - Разработка на интерфейса с Tkinter.
48   - Добавяне на бутони и полета за въвеждане и показване на резултати.48   - Добавяне на бутони и полета за въвеждане и показване на резултати.
49   - Обработка на потребителски действия и взаимодействия.49   - Обработка на потребителски действия и взаимодействия.
5050
517.Валидатор:517.Валидатор:
52   - Имплементация на клас за валидиране при токенизиране и преобразуване на токените в AST52   - Имплементация на клас за валидиране при токенизиране и преобразуване на токените в AST
5353
548.Тестове и отстраняване на грешки:548.Тестове и отстраняване на грешки:
55   - Писане на unit тестове за различните компоненти на приложението.55   - Писане на unit тестове за различните компоненти на приложението.
56   - Отстраняване на грешки и оптимизация на кода.56   - Отстраняване на грешки и оптимизация на кода.
5757
58[Estimate in man-hours/Времеоценка в човекочасове]58[Estimate in man-hours/Времеоценка в човекочасове]
5959
6080 часа6080 часа
6161
62[Usage of technologies/Потребление на технологии]62[Usage of technologies/Потребление на технологии]
6363
64- Python 3.12.7 - Език за разработка.64- Python 3.12.7 - Език за разработка.
65- Tkinter - За създаване на графичния потребителски интерфейс.65- Tkinter - За създаване на графичния потребителски интерфейс.
66- re - За анализиране на изразите.66- re - За анализиране на изразите.
67- Matplotlib - За визуализиране на Карно карти.67- Matplotlib - За визуализиране на Карно карти.
68- Graphviz - За визуализиране на абстрактното синтактично дърво.68- Graphviz - За визуализиране на абстрактното синтактично дърво.
69- Pillow (PIL) - За обработка на изображения в Tkinter.69- Pillow (PIL) - За обработка на изображения в Tkinter.
70- Quine–McCluskey алгоритъм - За минимизация на булеви изрази.70- Quine–McCluskey алгоритъм - За минимизация на булеви изрази.
71"""71"""
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op