У популярній (і найважливішій) книзі з інформатики «Вступ до формальних мов та автоматів » Пітера Лінца часто зазначається така формальна мова:
головним чином через те, що цю мову не можна обробити автоматами з кінцевим станом. Цей вираз означає "Мова L складається з усіх рядків 'a', за якими 'b', в яких кількість 'a' і 'b' є рівними і не нульовими".
Виклик
Напишіть робочу програму / функцію, яка отримує рядок, що містить лише "a" і "b" s , як введення та повернення / виведення значення істинності , кажучи, що ця строка є дійсною формальною мовою L.
Ваша програма не може використовувати будь-які зовнішні інструменти обчислення, включаючи мережу, зовнішні програми тощо. Оболонки - виняток із цього правила; Bash, наприклад, може використовувати утиліти командного рядка.
Ваша програма повинна повернути / вивести результат "логічним" способом, наприклад: повернення 10 замість 0, "звуковий сигнал", виведення в режим stdout тощо. Докладніше тут.
Діють стандартні правила гольф-коду.
Це код-гольф . Виграє найкоротший код у байтах. Удачі!
Пробні кейси Truthy
"ab"
"aabb"
"aaabbb"
"aaaabbbb"
"aaaaabbbbb"
"aaaaaabbbbbb"
Фальшиві тестові справи
""
"a"
"b"
"aa"
"ba"
"bb"
"aaa"
"aab"
"aba"
"abb"
"baa"
"bab"
"bba"
"bbb"
"aaaa"
"aaab"
"aaba"
"abaa"
"abab"
"abba"
"abbb"
"baaa"
"baab"
"baba"
"babb"
"bbaa"
"bbab"
"bbba"
"bbbb"
empty string == truthy
і non-empty string == falsy
було б прийнятним?
a^n b^n
подібне чи подібне, а не просто число a
s, що дорівнює кількості b
s)