Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 18.10.2020
Сообщений: 7

Задача по языку формальных грамматик

18.11.2020, 16:26. Показов 4659. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Важным понятием теории формальных грамматик и автоматов является формальный
язык. Неформально его можно определить как некоторое множество слов, где под
словом понимается некоторая строка из символов.
В этой задаче необходимо проверить, принадлежит ли данное слово языку {0n1n2n, n ≥
1}. В этот язык входят те и только те слова, которые имеют такую структуру: в них
нулей столько же, сколько единиц, а единиц – столько же, сколько и двоек. При этом
любой ноль находится ближе к началу слова, чем любая единица, а любая единица
находится ближе к началу слова, чем любая двойка. Например, слово 001122
принадлежит этому языку, а слово 0000111122220 – не принадлежит.

Есть вот такая наробото4ка, но что-то не так пашет

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import sys
x=int(0)
y=int(0)
z=int(0)
a=input('Введите слово ')
if a.isalpha()==False:
        l=int(len(a))
        if a[0]=="0":
            for i in range (0,l):
                if a[i]=="0":
                    x+=1
                else: print("Введены некорректные цифорки")
                break
                if a[i]=="1":
                    y+=1
                else: print("Введены некорректные цифорки")
                break
                if a[i]=="2":
                    z+=1
                else: print("Введены некорректные цифорки")
                break
        else: print("Введены некорректные цифорки")
        sys.exit(0)
        if x==y==z:
            print("True")
        else:
            print("False")
else: print('Введены буковки')
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.11.2020, 16:26
Ответы с готовыми решениями:

Теория формальных грамматик и трансляций
Добрый день, уважаемые форумчане. Есть такое задание: Разработать формальную грамматику для выражений, которые могут содержать: 1.1....

Распознавание типов формальных языков и грамматик
1) составить грамматику, порождающую формальный язык, заданный в соответствии с вариантом; 2) определить тип формальной грамматики и...

Распознавание типов формальных языков и грамматик
1) составить грамматику, порождающую формальный язык; 2) построить цепочку языка по грамматике; 3) построить дерево вывода; ...

9
6 / 4 / 3
Регистрация: 30.08.2013
Сообщений: 125
18.11.2020, 16:48
То есть, если я правильно понимаю, так как n >= 1, то задачу можно перефразировать так:
Если количество букв 0, 1, 2 совпадают, то слово принадлежит языку. Если это так, то задача вполне себе тривиальная.
0
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
18.11.2020, 16:51
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def foo(word):
 
    if not set(word) or set(word) - {'0', '1', '2'}:
        return False
 
    tmp = len(word) // 3
    if word[:tmp] == '0' * tmp and\
            word[tmp:tmp * 2] == '1' * tmp and\
            word[tmp * 2:] == '2' * tmp:
        return True
    return False
 
 
print(foo(input()))
Добавлено через 1 минуту

Цитата Сообщение от uppupp Посмотреть сообщение
задачу можно перефразировать так:
Если количество букв 0, 1, 2 совпадают, то слово принадлежит языку
Не совсем. Есть ещё:
Цитата Сообщение от Tuzh Посмотреть сообщение
любой ноль находится ближе к началу слова, чем любая единица, а любая единица
находится ближе к началу слова, чем любая двойка.
2
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
18.11.2020, 16:53
У тебя break не правильно стоит, он после первого условия всегда выходит
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38200 / 21132 / 4310
Регистрация: 12.02.2012
Сообщений: 34,738
Записей в блоге: 14
18.11.2020, 16:55
Мне кажется, эта задача создана для регулярных выражений. Но можно и так:

Python
1
2
3
4
5
6
7
8
def check(word):
    n=len(word)
    k=n//3
    test="0"*k+"1"*k+"2"*k
    return test==word
 
print(check("001122"))
print(check("0000111122220"))
1
6 / 4 / 3
Регистрация: 30.08.2013
Сообщений: 125
18.11.2020, 17:00
unfindable_404, значит получается, ещё и лексикографически должны возрастать?
0
0 / 0 / 0
Регистрация: 18.10.2020
Сообщений: 7
18.11.2020, 17:59  [ТС]
Получается вот так и почему-то ответ не верный выводит(((
Миниатюры
Задача по языку формальных грамматик  
0
6 / 4 / 3
Регистрация: 30.08.2013
Сообщений: 125
18.11.2020, 18:19
Лучший ответ Сообщение было отмечено Tuzh как решение

Решение

Tuzh, если я до конца понял задачу, то получается вот так:
Python
1
2
3
4
5
6
7
word = list(input('Введите слово:'))
sword = sorted(word)
x = word.count('0')
y = word.count('1')
z = word.count('2')
if((x == y == z) and word == sword): print('Слово принадлежит языку')
else: print('Слово не принадлежит языку')
Ну корректность входных данных, можете организовать сами
2
0 / 0 / 0
Регистрация: 18.10.2020
Сообщений: 7
18.11.2020, 19:02  [ТС]
Цитата Сообщение от uppupp Посмотреть сообщение
Tuzh, если я до конца понял задачу, то получается вот так:
Python
1
2
3
4
5
6
7
word = list(input('Введите слово:'))
sword = sorted(word)
x = word.count('0')
y = word.count('1')
z = word.count('2')
if((x == y == z) and word == sword): print('Слово принадлежит языку')
else: print('Слово не принадлежит языку')
Ну корректность входных данных, можете организовать сами
Вроде оно, благодарочка
0
6 / 4 / 3
Регистрация: 30.08.2013
Сообщений: 125
18.11.2020, 19:10
Tuzh, дико рад был помочь )))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.11.2020, 19:10
Помогаю со студенческими работами здесь

Стоит задача сделать программу/код по языку программирования JAVA
Стоит задача сделать программу/код по языку программирования JAVA. Разработать иерархию классов «Отрезок», «Квадрат», «Куб»....

Преобразование КС-грамматик
Очень прошу помочь. Преподавательница такая, что сама закончила нашу шарагу и ничего не знает. Толково не объяснила. Зато теперь требует....

Стандарт для грамматик
Всем привет. Где бы найти стандарты для грамматик. Попадается всё древнее. Или мне не везёт сейчас с поиском... Подскажите где...

Цепочки. Классификация грамматик
К какому типу по Хомскому относится данная грамматика? Какой язык она порождает? Каков тип языка? Указать максимально возможный номер типа...

Построение грамматик, определение типа
подскажите как решить эти задания, или есть ли книжки какие нибудь которые помогут понять как это решать? 1. К какому типу по Хомскому...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru