Всем привет, снова врайтап, который прочтёт два с половиной человека. Сегодня я страдая последствиями сломанного режима решился написать компил тайм шифрование строк на основе DFA. Не забывайте, что это всё Proof Of Concept, и для использования в реальном проекте нужно улучшать…

Часть 1: Теория автоматов для чайников ( и кофейников )

Что такое конечный автомат?

Представьте, что вы робот, который заменил людей в кодинге, и вы работаете в гугле. У вас есть несколько состояний:

1.svg

Каждое событие (входной символ) переводит вас в новое состояние. Например, "Мозг кипит" переводит из "Анализ" в "Кофе". Вот это, друзья, и есть конечный автомат!

Математически это выглядит как A = (Q, Σ, δ, q0, F), где:

От теории к практике

Теперь додумывая, что каждое состояние не просто название, а какое-то число. И при переходе из одного состояния в другое, мы не просто переходим, а еще и выдаем какой-то символ, вот и вся логика

На языке псевдо-кода:

state = initial_state
for char in input_text:
    output = output_table[state][char]
    state = transition_table[state][char]
    encrypted_text += output

Многослойный автомат

Представьте, что вместо одного робота у нас есть несколько более простых, соединенных последовательно. В целом упрощая это и есть концепция многослойного автомата