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 променливи" за неизвестен брой променливи. Относно асоциативност, комутативност, дистрибутивност и други, все още не съм напълно сигурен как би било най-добре да ги имплементирам като свойства(клас, методи, ...) - дилемата ми е дали да платя повече памет за "евентуална" скорост или не. Като заключение бих казал, че възловите ми точки са "идейни" и още съм в процес на "Да бъде или да не бъде".
|
f | 1 | """ | f | 1 | """ |
2 | [Title/Звание] | 2 | [Title/Звание] | ||
3 | 3 | ||||
n | 4 | Logic Crusher - Оптимизатор и визуализатор за булеви изрази | n | 4 | Logic Crusher - Оптимизатор и визуализатор за булеви изрази. |
5 | 5 | ||||
6 | [Description/Обрисовка] | 6 | [Description/Обрисовка] | ||
7 | 7 | ||||
n | 8 | Logic Crusher е графично приложение, което позволява на потребителите да въвеждат, | n | 8 | Logic Crusher е графично приложение, което позволява на потребителите да въвеждат, опростяват, |
9 | опростяват и минимизират булеви изрази. Приложението използва алгоритъма на Quine–McCluskey за | 9 | анализират и минимизират булеви изрази. Чрез подходящ интерфейс, потребителите могат да изпълняват разнообразни операции върху | ||
10 | минимизация и предоставя визуализация чрез карно карти и абстрактно синтактично дърво (AST). | 10 | булеви функции, включително опростяване, минимизиране с алгоритъма на Quine–McCluskey, проверка на логически свойства, | ||
11 | генериране на полиноми на Жегалкин и визуализация на Карно карти и абстрактно синтактично дърво (AST) с помощта на Graphviz. | ||||
11 | Основната цел е да намали сложността на логическите формули за по-добра разбираемост и ефективност, | 12 | Основната цел на приложението е да намали сложността на логическите формули за по-добра разбираемост и ефективност, | ||
12 | и да улесни анализа и оптимизацията на логически изрази за образователни и професионални цели. | 13 | улеснявайки анализа и оптимизацията на логически изрази за образователни и професионални цели. | ||
13 | 14 | ||||
14 | [Functionalities/Надарености] | 15 | [Functionalities/Надарености] | ||
15 | 16 | ||||
n | 16 | - Въвеждане на булев израз чрез потребителски интерфейс. | n | 17 | 1. Въвеждане на булев израз чрез потребителски интерфейс: |
18 | -Потребителите могат лесно да въведат желаните булеви изрази чрез интуитивен графичен интерфейс. | ||||
19 | |||||
17 | - Валидация на синтаксиса на израза. | 20 | 2. Валидация на синтаксиса на израза: | ||
18 | - Опростяване на израза чрез методи за опростяване на логически операции. | 21 | - Вграден валидатор проверява синтаксиса на въведения израз и уведомява потребителя за грешки. | ||
22 | |||||
23 | 3. Опростяване на израза: | ||||
24 | - Автоматично опростява булевите изрази чрез прилагане на логически закони и елиминиране на излишни компоненти. | ||||
25 | |||||
26 | 4. Проверка на логически свойства: | ||||
27 | - Монотонност: Проверява дали функцията е монотонна, тоест дали увеличаването на стойностите на променливите не води до намаляване на стойността на функцията. | ||||
28 | - Линейност: Определя дали функцията е линейна, като анализира полинома на Жегалкин. | ||||
29 | - Самодвойственост: Проверява дали функцията е самодвойствена, тоест дали нейният дуал(огледален образ) е равен на нейното отрицание. | ||||
30 | - Запазване на нулата и единицата: Определя дали функцията запазва константните стойности 0 и 1. | ||||
31 | |||||
19 | - Минимизиране на булеви изрази с алгоритъма на Quine–McCluskey. | 32 | 5. Минимизиране на булеви изрази с алгоритъма на Quine–McCluskey: | ||
33 | - Използва алгоритъм за минимизация, което води до по-ефективни логически схеми. | ||||
34 | |||||
35 | 6. Генериране на полином на Жегалкин: | ||||
36 | - Преобразува булевите функции в техния еквивалентен полином на Жегалкин за по-лесен анализ и разбиране. | ||||
37 | |||||
20 | - Генериране и визуализиране на Карно карти за 2 до 4 променливи. | 38 | 7. Генериране и визуализиране на Карно карти за 2 до 4 променливи: | ||
39 | - Визуализацията на Карно карти улеснява процеса на минимизация и визуален анализ. | ||||
40 | |||||
21 | - Визуализиране на абстрактно синтактично дърво (AST) с Graphviz. | 41 | 8. Визуализиране на абстрактно синтактично дърво (AST) с Graphviz: | ||
42 | - Показва структурната организация на булевия израз, помагайки за по-добро разбиране. | ||||
43 | |||||
22 | - Показване на резултатите и минимизираните изрази в графичния интерфейс. | 44 | 9. Показване на резултатите и минимизираните изрази в графичния интерфейс: | ||
45 | - Всички резултати се показват директно в приложението за удобство на потребителя. | ||||
46 | |||||
47 | 10. Разлагане по променлива: | ||||
48 | - Прилага разлагане по Шанън за избрана променлива, предоставяйки кофакторите за по-дълбок анализ. | ||||
49 | |||||
50 | 11. Предотвратяване на дублиране: | ||||
51 | - Чрез използване на множество от булеви функции се предотвратява запазването на дублиращи се функции във файла. | ||||
52 | |||||
53 | 12. Запазване на информация: | ||||
54 | - Позволява запазване на всички обработени булеви функции и тяхната информация във външен файл, във формат JSON. | ||||
23 | 55 | ||||
24 | [Milestones/Възлови точки] | 56 | [Milestones/Възлови точки] | ||
25 | 57 | ||||
n | 26 | 1.Лексер и парсер: | n | 58 | 1. Лексер и парсер: |
27 | - Имплементация на лексер за токенизиране на входните изрази. | 59 | - Имплементация на лексер за токенизиране на входните изрази. | ||
28 | - Разработка на парсер за създаване на абстрактно синтактично дърво(AST). | 60 | - Разработка на парсер за създаване на абстрактно синтактично дърво(AST). | ||
29 | 61 | ||||
n | 30 | 2.AST Възли и опростяване: | n | 62 | 2. 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 | - Имплементация на методи за опростяване на булевите изрази. | ||
33 | 65 | ||||
n | 34 | 3.Булеви функции, запазващи константите: | n | 66 | 3. Булеви функции, запазващи константите: |
35 | - Имплементация на клас за обработване на константи(идеята е оптимизация и модулярност). | 67 | - Имплементация на клас за обработване на константи(идеята е оптимизация и модулярност). | ||
36 | 68 | ||||
n | 37 | 4.Полиномът на Жегалкин: | n | 69 | 4. Полиномът на Жегалкин: |
38 | - Имплементация на клас за опростяване на булеви функции чрез алгебрични операции. | 70 | - Имплементация на клас за опростяване на булеви функции чрез алгебрични операции. | ||
39 | - По лесно прилагане на математически техники, като например намиране на симетрии и излишни термини в израза. | 71 | - По лесно прилагане на математически техники, като например намиране на симетрии и излишни термини в израза. | ||
40 | 72 | ||||
n | 41 | 5.Клас за разглагане на булева функция по i променливи: | n | 73 | 5. Клас за разглагане на булева функция по i променливи: |
42 | - Позволява по-лесно управление и анализ на големи булеви изрази чрез разделянето им на по-малки. | 74 | - Позволява по-лесно управление и анализ на големи булеви изрази чрез разделянето им на по-малки. | ||
43 | - По-фокусирано опростяване на определени части от израза. | 75 | - По-фокусирано опростяване на определени части от израза. | ||
44 | 76 | ||||
n | 45 | 6.Затваряне на множество от булеви функции: | n | 77 | 6. Затваряне на множество от булеви функции: |
46 | - Имплементация на клас за управление на различни множества от булеви функции. | 78 | - Имплементация на клас за управление на различни множества от булеви функции. | ||
47 | - Позволява по-ефективно опростяване и минимизация чрез използване на свойства на затворените множества. | 79 | - Позволява по-ефективно опростяване и минимизация чрез използване на свойства на затворените множества. | ||
n | 48 | - Валидация на операциите и предвидими резултати(Алгебра). | n | 80 | - Валидация на операциите и предвидими резултати(Булева алгебра). |
49 | 81 | ||||
n | 50 | 7.Минимизиране с Quine–McCluskey: | n | 82 | 7. Минимизиране с Quine–McCluskey: |
51 | - Разработка на клас за алгоритъма на Quine–McCluskey. | 83 | - Разработка на клас за алгоритъма на Quine–McCluskey. | ||
52 | - Интеграция на минимизиращия модул с основната логика на приложението. | 84 | - Интеграция на минимизиращия модул с основната логика на приложението. | ||
53 | 85 | ||||
n | 54 | 8.Карно карта генератор: | n | 86 | 8. Карно карта генератор: |
55 | - Имплементация на класа за генериране на Карно карти. | 87 | - Имплементация на класа за генериране на Карно карти. | ||
56 | - Визуализация на карно карти чрез matplotlib. | 88 | - Визуализация на карно карти чрез matplotlib. | ||
57 | 89 | ||||
n | 58 | 9.Визуализация на AST с Graphviz: | n | 90 | 9. Визуализация на AST с Graphviz: |
59 | - Интеграция на Graphviz за визуализиране на AST. | 91 | - Интеграция на Graphviz за визуализиране на AST. | ||
60 | - Показване на генерираните графики в потребителския интерфейс. | 92 | - Показване на генерираните графики в потребителския интерфейс. | ||
61 | 93 | ||||
n | 62 | 10.Графичен интерфейс (GUI): | n | 94 | 10. Графичен интерфейс (GUI): |
63 | - Разработка на интерфейса с Tkinter. | 95 | - Разработка на интерфейса с Tkinter. | ||
64 | - Добавяне на бутони и полета за въвеждане и показване на резултати. | 96 | - Добавяне на бутони и полета за въвеждане и показване на резултати. | ||
65 | - Обработка на потребителски действия и взаимодействия. | 97 | - Обработка на потребителски действия и взаимодействия. | ||
66 | 98 | ||||
n | 67 | 11.Валидатор: | n | 99 | 11. Валидатор: |
68 | - Имплементация на клас за валидиране при токенизиране и преобразуване на токените в AST. | 100 | - Имплементация на клас за валидиране при токенизиране и преобразуване на токените в AST. | ||
69 | 101 | ||||
n | 70 | 12.Тестове и отстраняване на грешки: | n | 102 | 12. Тестове и отстраняване на грешки: |
71 | - Писане на unit тестове за различните компоненти на приложението. | 103 | - Писане на unit тестове за различните компоненти на приложението. | ||
72 | - Отстраняване на грешки и оптимизация на кода. | 104 | - Отстраняване на грешки и оптимизация на кода. | ||
73 | 105 | ||||
74 | [Estimate in man-hours/Времеоценка в човекочасове] | 106 | [Estimate in man-hours/Времеоценка в човекочасове] | ||
75 | 107 | ||||
76 | 80 часа | 108 | 80 часа | ||
77 | 109 | ||||
78 | [Usage of technologies/Потребление на технологии] | 110 | [Usage of technologies/Потребление на технологии] | ||
79 | 111 | ||||
80 | - Python 3.12.7 - Език за разработка. | 112 | - Python 3.12.7 - Език за разработка. | ||
81 | - Tkinter - За създаване на графичния потребителски интерфейс. | 113 | - Tkinter - За създаване на графичния потребителски интерфейс. | ||
82 | - re - За анализиране на изразите. | 114 | - re - За анализиране на изразите. | ||
n | n | 115 | - NumPy: За обработка на данни и матрични операции(при карно картите). | ||
83 | - Matplotlib - За визуализиране на Карно карти. | 116 | - Matplotlib - За визуализиране на Карно карти. | ||
n | n | 117 | - itertools: За генериране на комбинации от стойности на променливите(функцията product). | ||
84 | - Graphviz - За визуализиране на абстрактното синтактично дърво. | 118 | - Graphviz - За визуализиране на абстрактното синтактично дърво. | ||
85 | - Pillow (PIL) - За обработка на изображения в Tkinter. | 119 | - Pillow (PIL) - За обработка на изображения в Tkinter. | ||
86 | - Quine–McCluskey алгоритъм - За минимизация на булеви изрази. | 120 | - Quine–McCluskey алгоритъм - За минимизация на булеви изрази. | ||
t | t | 121 | - Алгебрични техники: Прилагане на математически методи за опростяване и анализ на булевите функции. | ||
122 | - Unit тестове: За осигуряване на надеждност и коректност на приложението. | ||||
87 | """ | 123 | """ |
Legends | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
|
f | 1 | """ | f | 1 | """ |
2 | [Title/Звание] | 2 | [Title/Звание] | ||
3 | 3 | ||||
4 | Logic Crusher - Оптимизатор и визуализатор за булеви изрази | 4 | Logic Crusher - Оптимизатор и визуализатор за булеви изрази | ||
5 | 5 | ||||
6 | [Description/Обрисовка] | 6 | [Description/Обрисовка] | ||
7 | 7 | ||||
8 | Logic Crusher е графично приложение, което позволява на потребителите да въвеждат, | 8 | Logic Crusher е графично приложение, което позволява на потребителите да въвеждат, | ||
9 | опростяват и минимизират булеви изрази. Приложението използва алгоритъма на Quine–McCluskey за | 9 | опростяват и минимизират булеви изрази. Приложението използва алгоритъма на Quine–McCluskey за | ||
10 | минимизация и предоставя визуализация чрез карно карти и абстрактно синтактично дърво (AST). | 10 | минимизация и предоставя визуализация чрез карно карти и абстрактно синтактично дърво (AST). | ||
11 | Основната цел е да намали сложността на логическите формули за по-добра разбираемост и ефективност, | 11 | Основната цел е да намали сложността на логическите формули за по-добра разбираемост и ефективност, | ||
12 | и да улесни анализа и оптимизацията на логически изрази за образователни и професионални цели. | 12 | и да улесни анализа и оптимизацията на логически изрази за образователни и професионални цели. | ||
13 | 13 | ||||
14 | [Functionalities/Надарености] | 14 | [Functionalities/Надарености] | ||
15 | 15 | ||||
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 | - Показване на резултатите и минимизираните изрази в графичния интерфейс. | ||
23 | 23 | ||||
24 | [Milestones/Възлови точки] | 24 | [Milestones/Възлови точки] | ||
25 | 25 | ||||
26 | 1.Лексер и парсер: | 26 | 1.Лексер и парсер: | ||
27 | - Имплементация на лексер за токенизиране на входните изрази. | 27 | - Имплементация на лексер за токенизиране на входните изрази. | ||
28 | - Разработка на парсер за създаване на абстрактно синтактично дърво(AST). | 28 | - Разработка на парсер за създаване на абстрактно синтактично дърво(AST). | ||
29 | 29 | ||||
30 | 2.AST Възли и опростяване: | 30 | 2.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 | - Имплементация на методи за опростяване на булевите изрази. | ||
33 | 33 | ||||
34 | 3.Булеви функции, запазващи константите: | 34 | 3.Булеви функции, запазващи константите: | ||
35 | - Имплементация на клас за обработване на константи(идеята е оптимизация и модулярност). | 35 | - Имплементация на клас за обработване на константи(идеята е оптимизация и модулярност). | ||
n | 36 | n | 36 | ||
37 | 4.Полиномът на Жегалкин: | ||||
38 | - Имплементация на клас за опростяване на булеви функции чрез алгебрични операции. | ||||
39 | - По лесно прилагане на математически техники, като например намиране на симетрии и излишни термини в израза. | ||||
40 | |||||
37 | 4.Клас за разглагане на булева функция по i променливи: | 41 | 5.Клас за разглагане на булева функция по i променливи: | ||
38 | - Позволява по-лесно управление и анализ на големи булеви изрази чрез разделянето им на по-малки. | 42 | - Позволява по-лесно управление и анализ на големи булеви изрази чрез разделянето им на по-малки. | ||
39 | - По-фокусирано опростяване на определени части от израза. | 43 | - По-фокусирано опростяване на определени части от израза. | ||
40 | 44 | ||||
n | 41 | 5.Затваряне на множество от булеви функции: | n | 45 | 6.Затваряне на множество от булеви функции: |
42 | - Имплементация на клас за управление на различни множества от булеви функции. | 46 | - Имплементация на клас за управление на различни множества от булеви функции. | ||
43 | - Позволява по-ефективно опростяване и минимизация чрез използване на свойства на затворените множества. | 47 | - Позволява по-ефективно опростяване и минимизация чрез използване на свойства на затворените множества. | ||
44 | - Валидация на операциите и предвидими резултати(Алгебра). | 48 | - Валидация на операциите и предвидими резултати(Алгебра). | ||
45 | 49 | ||||
n | 46 | 6.Минимизиране с Quine–McCluskey: | n | 50 | 7.Минимизиране с Quine–McCluskey: |
47 | - Разработка на клас за алгоритъма на Quine–McCluskey. | 51 | - Разработка на клас за алгоритъма на Quine–McCluskey. | ||
48 | - Интеграция на минимизиращия модул с основната логика на приложението. | 52 | - Интеграция на минимизиращия модул с основната логика на приложението. | ||
49 | 53 | ||||
n | 50 | 7.Карно карта генератор: | n | 54 | 8.Карно карта генератор: |
51 | - Имплементация на класа за генериране на Карно карти. | 55 | - Имплементация на класа за генериране на Карно карти. | ||
52 | - Визуализация на карно карти чрез matplotlib. | 56 | - Визуализация на карно карти чрез matplotlib. | ||
53 | 57 | ||||
n | 54 | 8.Визуализация на AST с Graphviz: | n | 58 | 9.Визуализация на AST с Graphviz: |
55 | - Интеграция на Graphviz за визуализиране на AST. | 59 | - Интеграция на Graphviz за визуализиране на AST. | ||
56 | - Показване на генерираните графики в потребителския интерфейс. | 60 | - Показване на генерираните графики в потребителския интерфейс. | ||
57 | 61 | ||||
n | 58 | 9.Графичен интерфейс (GUI): | n | 62 | 10.Графичен интерфейс (GUI): |
59 | - Разработка на интерфейса с Tkinter. | 63 | - Разработка на интерфейса с Tkinter. | ||
60 | - Добавяне на бутони и полета за въвеждане и показване на резултати. | 64 | - Добавяне на бутони и полета за въвеждане и показване на резултати. | ||
61 | - Обработка на потребителски действия и взаимодействия. | 65 | - Обработка на потребителски действия и взаимодействия. | ||
62 | 66 | ||||
n | 63 | 10.Валидатор: | n | 67 | 11.Валидатор: |
64 | - Имплементация на клас за валидиране при токенизиране и преобразуване на токените в AST. | 68 | - Имплементация на клас за валидиране при токенизиране и преобразуване на токените в AST. | ||
65 | 69 | ||||
t | 66 | 11.Тестове и отстраняване на грешки: | t | 70 | 12.Тестове и отстраняване на грешки: |
67 | - Писане на unit тестове за различните компоненти на приложението. | 71 | - Писане на unit тестове за различните компоненти на приложението. | ||
68 | - Отстраняване на грешки и оптимизация на кода. | 72 | - Отстраняване на грешки и оптимизация на кода. | ||
69 | 73 | ||||
70 | [Estimate in man-hours/Времеоценка в човекочасове] | 74 | [Estimate in man-hours/Времеоценка в човекочасове] | ||
71 | 75 | ||||
72 | 80 часа | 76 | 80 часа | ||
73 | 77 | ||||
74 | [Usage of technologies/Потребление на технологии] | 78 | [Usage of technologies/Потребление на технологии] | ||
75 | 79 | ||||
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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
|
f | 1 | """ | f | 1 | """ |
2 | [Title/Звание] | 2 | [Title/Звание] | ||
3 | 3 | ||||
4 | Logic Crusher - Оптимизатор и визуализатор за булеви изрази | 4 | Logic Crusher - Оптимизатор и визуализатор за булеви изрази | ||
5 | 5 | ||||
6 | [Description/Обрисовка] | 6 | [Description/Обрисовка] | ||
7 | 7 | ||||
8 | Logic Crusher е графично приложение, което позволява на потребителите да въвеждат, | 8 | Logic Crusher е графично приложение, което позволява на потребителите да въвеждат, | ||
9 | опростяват и минимизират булеви изрази. Приложението използва алгоритъма на Quine–McCluskey за | 9 | опростяват и минимизират булеви изрази. Приложението използва алгоритъма на Quine–McCluskey за | ||
10 | минимизация и предоставя визуализация чрез карно карти и абстрактно синтактично дърво (AST). | 10 | минимизация и предоставя визуализация чрез карно карти и абстрактно синтактично дърво (AST). | ||
11 | Основната цел е да намали сложността на логическите формули за по-добра разбираемост и ефективност, | 11 | Основната цел е да намали сложността на логическите формули за по-добра разбираемост и ефективност, | ||
12 | и да улесни анализа и оптимизацията на логически изрази за образователни и професионални цели. | 12 | и да улесни анализа и оптимизацията на логически изрази за образователни и професионални цели. | ||
13 | 13 | ||||
14 | [Functionalities/Надарености] | 14 | [Functionalities/Надарености] | ||
15 | 15 | ||||
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 | - Показване на резултатите и минимизираните изрази в графичния интерфейс. | ||
23 | 23 | ||||
24 | [Milestones/Възлови точки] | 24 | [Milestones/Възлови точки] | ||
25 | 25 | ||||
26 | 1.Лексер и парсер: | 26 | 1.Лексер и парсер: | ||
27 | - Имплементация на лексер за токенизиране на входните изрази. | 27 | - Имплементация на лексер за токенизиране на входните изрази. | ||
n | 28 | - Разработка на парсер за създаване на абстрактно синтактично дърво (AST). | n | 28 | - Разработка на парсер за създаване на абстрактно синтактично дърво(AST). |
29 | 29 | ||||
30 | 2.AST Възли и опростяване: | 30 | 2.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 | - Имплементация на методи за опростяване на булевите изрази. | ||
33 | 33 | ||||
n | n | 34 | 3.Булеви функции, запазващи константите: | ||
35 | - Имплементация на клас за обработване на константи(идеята е оптимизация и модулярност). | ||||
36 | |||||
37 | 4.Клас за разглагане на булева функция по i променливи: | ||||
38 | - Позволява по-лесно управление и анализ на големи булеви изрази чрез разделянето им на по-малки. | ||||
39 | - По-фокусирано опростяване на определени части от израза. | ||||
40 | |||||
41 | 5.Затваряне на множество от булеви функции: | ||||
42 | - Имплементация на клас за управление на различни множества от булеви функции. | ||||
43 | - Позволява по-ефективно опростяване и минимизация чрез използване на свойства на затворените множества. | ||||
44 | - Валидация на операциите и предвидими резултати(Алгебра). | ||||
45 | |||||
34 | 3.Минимизиране с Quine–McCluskey: | 46 | 6.Минимизиране с Quine–McCluskey: | ||
35 | - Разработка на клас за алгоритъма на Quine–McCluskey. | 47 | - Разработка на клас за алгоритъма на Quine–McCluskey. | ||
36 | - Интеграция на минимизиращия модул с основната логика на приложението. | 48 | - Интеграция на минимизиращия модул с основната логика на приложението. | ||
37 | 49 | ||||
n | 38 | 4.Карно карта генератор: | n | 50 | 7.Карно карта генератор: |
39 | - Имплементация на класа за генериране на Карно карти. | 51 | - Имплементация на класа за генериране на Карно карти. | ||
40 | - Визуализация на карно карти чрез matplotlib. | 52 | - Визуализация на карно карти чрез matplotlib. | ||
41 | 53 | ||||
n | 42 | 5.Визуализация на AST с Graphviz: | n | 54 | 8.Визуализация на AST с Graphviz: |
43 | - Интеграция на Graphviz за визуализиране на AST. | 55 | - Интеграция на Graphviz за визуализиране на AST. | ||
44 | - Показване на генерираните графики в потребителския интерфейс. | 56 | - Показване на генерираните графики в потребителския интерфейс. | ||
45 | 57 | ||||
n | 46 | 6.Графичен интерфейс (GUI): | n | 58 | 9.Графичен интерфейс (GUI): |
47 | - Разработка на интерфейса с Tkinter. | 59 | - Разработка на интерфейса с Tkinter. | ||
48 | - Добавяне на бутони и полета за въвеждане и показване на резултати. | 60 | - Добавяне на бутони и полета за въвеждане и показване на резултати. | ||
49 | - Обработка на потребителски действия и взаимодействия. | 61 | - Обработка на потребителски действия и взаимодействия. | ||
50 | 62 | ||||
n | 51 | 7.Валидатор: | n | 63 | 10.Валидатор: |
52 | - Имплементация на клас за валидиране при токенизиране и преобразуване на токените в AST | 64 | - Имплементация на клас за валидиране при токенизиране и преобразуване на токените в AST. | ||
53 | 65 | ||||
t | 54 | 8.Тестове и отстраняване на грешки: | t | 66 | 11.Тестове и отстраняване на грешки: |
55 | - Писане на unit тестове за различните компоненти на приложението. | 67 | - Писане на unit тестове за различните компоненти на приложението. | ||
56 | - Отстраняване на грешки и оптимизация на кода. | 68 | - Отстраняване на грешки и оптимизация на кода. | ||
57 | 69 | ||||
58 | [Estimate in man-hours/Времеоценка в човекочасове] | 70 | [Estimate in man-hours/Времеоценка в човекочасове] | ||
59 | 71 | ||||
60 | 80 часа | 72 | 80 часа | ||
61 | 73 | ||||
62 | [Usage of technologies/Потребление на технологии] | 74 | [Usage of technologies/Потребление на технологии] | ||
63 | 75 | ||||
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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
|
f | 1 | """ | f | 1 | """ |
2 | [Title/Звание] | 2 | [Title/Звание] | ||
3 | 3 | ||||
4 | Logic Crusher - Оптимизатор и визуализатор за булеви изрази | 4 | Logic Crusher - Оптимизатор и визуализатор за булеви изрази | ||
5 | 5 | ||||
6 | [Description/Обрисовка] | 6 | [Description/Обрисовка] | ||
7 | 7 | ||||
8 | Logic Crusher е графично приложение, което позволява на потребителите да въвеждат, | 8 | Logic Crusher е графично приложение, което позволява на потребителите да въвеждат, | ||
9 | опростяват и минимизират булеви изрази. Приложението използва алгоритъма на Quine–McCluskey за | 9 | опростяват и минимизират булеви изрази. Приложението използва алгоритъма на Quine–McCluskey за | ||
10 | минимизация и предоставя визуализация чрез карно карти и абстрактно синтактично дърво (AST). | 10 | минимизация и предоставя визуализация чрез карно карти и абстрактно синтактично дърво (AST). | ||
11 | Основната цел е да намали сложността на логическите формули за по-добра разбираемост и ефективност, | 11 | Основната цел е да намали сложността на логическите формули за по-добра разбираемост и ефективност, | ||
12 | и да улесни анализа и оптимизацията на логически изрази за образователни и професионални цели. | 12 | и да улесни анализа и оптимизацията на логически изрази за образователни и професионални цели. | ||
13 | 13 | ||||
14 | [Functionalities/Надарености] | 14 | [Functionalities/Надарености] | ||
15 | 15 | ||||
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 | - Показване на резултатите и минимизираните изрази в графичния интерфейс. | ||
23 | 23 | ||||
24 | [Milestones/Възлови точки] | 24 | [Milestones/Възлови точки] | ||
25 | 25 | ||||
26 | 1.Лексер и парсер: | 26 | 1.Лексер и парсер: | ||
27 | - Имплементация на лексер за токенизиране на входните изрази. | 27 | - Имплементация на лексер за токенизиране на входните изрази. | ||
28 | - Разработка на парсер за създаване на абстрактно синтактично дърво (AST). | 28 | - Разработка на парсер за създаване на абстрактно синтактично дърво (AST). | ||
29 | 29 | ||||
30 | 2.AST Възли и опростяване: | 30 | 2.AST Възли и опростяване: | ||
t | 31 | - Създаване на класове за различните типове възли в AST - променливи(AND, OR, XOR ...) и константи(1,0,true,false). | t | 31 | - Създаване на класове за различните типове възли в AST - променливи(A, B, C ...), възли(AND, OR, XOR ...) и константи(1, 0, true, false). |
32 | - Имплементация на методи за опростяване на булевите изрази. | 32 | - Имплементация на методи за опростяване на булевите изрази. | ||
33 | 33 | ||||
34 | 3.Минимизиране с Quine–McCluskey: | 34 | 3.Минимизиране с Quine–McCluskey: | ||
35 | - Разработка на клас за алгоритъма на Quine–McCluskey. | 35 | - Разработка на клас за алгоритъма на Quine–McCluskey. | ||
36 | - Интеграция на минимизиращия модул с основната логика на приложението. | 36 | - Интеграция на минимизиращия модул с основната логика на приложението. | ||
37 | 37 | ||||
38 | 4.Карно карта генератор: | 38 | 4.Карно карта генератор: | ||
39 | - Имплементация на класа за генериране на Карно карти. | 39 | - Имплементация на класа за генериране на Карно карти. | ||
40 | - Визуализация на карно карти чрез matplotlib. | 40 | - Визуализация на карно карти чрез matplotlib. | ||
41 | 41 | ||||
42 | 5.Визуализация на AST с Graphviz: | 42 | 5.Визуализация на AST с Graphviz: | ||
43 | - Интеграция на Graphviz за визуализиране на AST. | 43 | - Интеграция на Graphviz за визуализиране на AST. | ||
44 | - Показване на генерираните графики в потребителския интерфейс. | 44 | - Показване на генерираните графики в потребителския интерфейс. | ||
45 | 45 | ||||
46 | 6.Графичен интерфейс (GUI): | 46 | 6.Графичен интерфейс (GUI): | ||
47 | - Разработка на интерфейса с Tkinter. | 47 | - Разработка на интерфейса с Tkinter. | ||
48 | - Добавяне на бутони и полета за въвеждане и показване на резултати. | 48 | - Добавяне на бутони и полета за въвеждане и показване на резултати. | ||
49 | - Обработка на потребителски действия и взаимодействия. | 49 | - Обработка на потребителски действия и взаимодействия. | ||
50 | 50 | ||||
51 | 7.Валидатор: | 51 | 7.Валидатор: | ||
52 | - Имплементация на клас за валидиране при токенизиране и преобразуване на токените в AST | 52 | - Имплементация на клас за валидиране при токенизиране и преобразуване на токените в AST | ||
53 | 53 | ||||
54 | 8.Тестове и отстраняване на грешки: | 54 | 8.Тестове и отстраняване на грешки: | ||
55 | - Писане на unit тестове за различните компоненти на приложението. | 55 | - Писане на unit тестове за различните компоненти на приложението. | ||
56 | - Отстраняване на грешки и оптимизация на кода. | 56 | - Отстраняване на грешки и оптимизация на кода. | ||
57 | 57 | ||||
58 | [Estimate in man-hours/Времеоценка в човекочасове] | 58 | [Estimate in man-hours/Времеоценка в човекочасове] | ||
59 | 59 | ||||
60 | 80 часа | 60 | 80 часа | ||
61 | 61 | ||||
62 | [Usage of technologies/Потребление на технологии] | 62 | [Usage of technologies/Потребление на технологии] | ||
63 | 63 | ||||
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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
|
f | 1 | """ | f | 1 | """ |
2 | [Title/Звание] | 2 | [Title/Звание] | ||
3 | 3 | ||||
4 | Logic Crusher - Оптимизатор и визуализатор за булеви изрази | 4 | Logic Crusher - Оптимизатор и визуализатор за булеви изрази | ||
5 | 5 | ||||
6 | [Description/Обрисовка] | 6 | [Description/Обрисовка] | ||
7 | 7 | ||||
8 | Logic Crusher е графично приложение, което позволява на потребителите да въвеждат, | 8 | Logic Crusher е графично приложение, което позволява на потребителите да въвеждат, | ||
n | 9 | опростяват и минимизират булеви изрази. Приложението използва алгоритъма на Куайн-Маккласки за | n | 9 | опростяват и минимизират булеви изрази. Приложението използва алгоритъма на Quine–McCluskey за |
10 | минимизация и предоставя визуализация чрез карно карти и абстрактно синтактично дърво (AST). | 10 | минимизация и предоставя визуализация чрез карно карти и абстрактно синтактично дърво (AST). | ||
11 | Основната цел е да намали сложността на логическите формули за по-добра разбираемост и ефективност, | 11 | Основната цел е да намали сложността на логическите формули за по-добра разбираемост и ефективност, | ||
12 | и да улесни анализа и оптимизацията на логически изрази за образователни и професионални цели. | 12 | и да улесни анализа и оптимизацията на логически изрази за образователни и професионални цели. | ||
13 | 13 | ||||
14 | [Functionalities/Надарености] | 14 | [Functionalities/Надарености] | ||
15 | 15 | ||||
16 | - Въвеждане на булев израз чрез потребителски интерфейс. | 16 | - Въвеждане на булев израз чрез потребителски интерфейс. | ||
17 | - Валидация на синтаксиса на израза. | 17 | - Валидация на синтаксиса на израза. | ||
18 | - Опростяване на израза чрез методи за опростяване на логически операции. | 18 | - Опростяване на израза чрез методи за опростяване на логически операции. | ||
t | 19 | - Минимизиране на булеви изрази с алгоритъма на Куайн-Маккласки. | t | 19 | - Минимизиране на булеви изрази с алгоритъма на Quine–McCluskey. |
20 | - Генериране и визуализиране на Карно карти за 2 до 4 променливи. | 20 | - Генериране и визуализиране на Карно карти за 2 до 4 променливи. | ||
21 | - Визуализиране на абстрактно синтактично дърво (AST) с Graphviz. | 21 | - Визуализиране на абстрактно синтактично дърво (AST) с Graphviz. | ||
22 | - Показване на резултатите и минимизираните изрази в графичния интерфейс. | 22 | - Показване на резултатите и минимизираните изрази в графичния интерфейс. | ||
23 | 23 | ||||
24 | [Milestones/Възлови точки] | 24 | [Milestones/Възлови точки] | ||
25 | 25 | ||||
26 | 1.Лексер и парсер: | 26 | 1.Лексер и парсер: | ||
27 | - Имплементация на лексер за токенизиране на входните изрази. | 27 | - Имплементация на лексер за токенизиране на входните изрази. | ||
28 | - Разработка на парсер за създаване на абстрактно синтактично дърво (AST). | 28 | - Разработка на парсер за създаване на абстрактно синтактично дърво (AST). | ||
29 | 29 | ||||
30 | 2.AST Възли и опростяване: | 30 | 2.AST Възли и опростяване: | ||
31 | - Създаване на класове за различните типове възли в AST - променливи(AND, OR, XOR ...) и константи(1,0,true,false). | 31 | - Създаване на класове за различните типове възли в AST - променливи(AND, OR, XOR ...) и константи(1,0,true,false). | ||
32 | - Имплементация на методи за опростяване на булевите изрази. | 32 | - Имплементация на методи за опростяване на булевите изрази. | ||
33 | 33 | ||||
34 | 3.Минимизиране с Quine–McCluskey: | 34 | 3.Минимизиране с Quine–McCluskey: | ||
35 | - Разработка на клас за алгоритъма на Quine–McCluskey. | 35 | - Разработка на клас за алгоритъма на Quine–McCluskey. | ||
36 | - Интеграция на минимизиращия модул с основната логика на приложението. | 36 | - Интеграция на минимизиращия модул с основната логика на приложението. | ||
37 | 37 | ||||
38 | 4.Карно карта генератор: | 38 | 4.Карно карта генератор: | ||
39 | - Имплементация на класа за генериране на Карно карти. | 39 | - Имплементация на класа за генериране на Карно карти. | ||
40 | - Визуализация на карно карти чрез matplotlib. | 40 | - Визуализация на карно карти чрез matplotlib. | ||
41 | 41 | ||||
42 | 5.Визуализация на AST с Graphviz: | 42 | 5.Визуализация на AST с Graphviz: | ||
43 | - Интеграция на Graphviz за визуализиране на AST. | 43 | - Интеграция на Graphviz за визуализиране на AST. | ||
44 | - Показване на генерираните графики в потребителския интерфейс. | 44 | - Показване на генерираните графики в потребителския интерфейс. | ||
45 | 45 | ||||
46 | 6.Графичен интерфейс (GUI): | 46 | 6.Графичен интерфейс (GUI): | ||
47 | - Разработка на интерфейса с Tkinter. | 47 | - Разработка на интерфейса с Tkinter. | ||
48 | - Добавяне на бутони и полета за въвеждане и показване на резултати. | 48 | - Добавяне на бутони и полета за въвеждане и показване на резултати. | ||
49 | - Обработка на потребителски действия и взаимодействия. | 49 | - Обработка на потребителски действия и взаимодействия. | ||
50 | 50 | ||||
51 | 7.Валидатор: | 51 | 7.Валидатор: | ||
52 | - Имплементация на клас за валидиране при токенизиране и преобразуване на токените в AST | 52 | - Имплементация на клас за валидиране при токенизиране и преобразуване на токените в AST | ||
53 | 53 | ||||
54 | 8.Тестове и отстраняване на грешки: | 54 | 8.Тестове и отстраняване на грешки: | ||
55 | - Писане на unit тестове за различните компоненти на приложението. | 55 | - Писане на unit тестове за различните компоненти на приложението. | ||
56 | - Отстраняване на грешки и оптимизация на кода. | 56 | - Отстраняване на грешки и оптимизация на кода. | ||
57 | 57 | ||||
58 | [Estimate in man-hours/Времеоценка в човекочасове] | 58 | [Estimate in man-hours/Времеоценка в човекочасове] | ||
59 | 59 | ||||
60 | 80 часа | 60 | 80 часа | ||
61 | 61 | ||||
62 | [Usage of technologies/Потребление на технологии] | 62 | [Usage of technologies/Потребление на технологии] | ||
63 | 63 | ||||
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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
|