Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.92/141: Рейтинг темы: голосов - 141, средняя оценка - 4.92
1 / 1 / 0
Регистрация: 29.12.2020
Сообщений: 51

Слова для кадавра

05.02.2021, 23:40. Показов 27531. Ответов 41
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Модель Человека, неудовлетворенного желудочно, а именно кадавр по образу и подобию профессора Выбегалло, кушал. Не обращая ни на кого специального внимания, он зачерпывал отруби широкой ладонью, уминал их пальцами, как плов, и образовавшийся комок отправлял в ротовое отверстие, обильно посыпая крошками бороду. При этом он хрустел, чмокал, хрюкал, всхрапывал, склонял голову набок и жмурился, словно от огромного наслаждения. Время от времени, не переставая глотать и давиться, он приходил в волнение, хватал за края чан с отрубями и ведра с обратом, стоявшие рядом с ним на полу, и каждый раз придвигал их к себе все ближе и ближе.

Мозговая деятельность кадавру ни к чему. Необходимые для жизнедеятельности рефлексы поддерживаются инстинктивно. Рудиментарных навыков словообразования ему вполне достаточно, чтобы потребовать еды и выразить удовольствие от насыщения.

Напишите программу, которая определит слова, подходящие под некоторый шаблон словообразования, которым в данный момент владеет кадавр.

Обозначения в шаблоне: 1 — не гласная, 0 — гласная, ? — строго одна любая буква, * — любое количество любых букв, в том числе ни одной. Гарантируется, что * в шаблоне не более одной.

Формат ввода
Строка — шаблон.

Затем строки слов для проверки. Признак окончания ввода — пустая строка.

Формат вывода
Выводятся только те слова, которые соответствуют шаблону. По одному в строке, в том же порядке, в котором вводились.

Если таких слов не оказалось, вывести Есть нечего, значить!

Пример 1
Ввод Вывод
10?010
молоко
отруби
обрат
селёдка
буханка
головы

молоко
головы
Пример 2
Ввод Вывод
1010*0
отруби
обрат
сельдь
хлеб
грузди

Есть нечего, значить!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.02.2021, 23:40
Ответы с готовыми решениями:

Слова для кадавра

Слова для кадавра
Напишите программу, которая определит слова, подходящие под некоторый шаблон словообразования, которым в данный момент владеет кадавр. ...

В строке записаны слова слова и целые десятичные числа. Для записи слов исп большие и малые буквы, длинна слова не более 16 букв.
В строке записаны слова слова и целые десятичные числа. Для записи слов исп большие и малые буквы, длинна слова не более 16 букв....

41
63 / 52 / 11
Регистрация: 14.01.2021
Сообщений: 406
14.02.2021, 21:07
Я сделал ввод, но не знаю как сделать механизм проверки

Python
1
2
3
4
5
6
7
8
9
vowels = ["a", "e", "о", "и", "э", "ы", "я", "ю", "е", "ё"]
consonants = ["б", "в", "г", "д", "ж", "з", "й", "к", "л", "м", "н", "п", "р", "с", "т", "ф", "х", "ц", "ч", "ш", "щ"]
signs = ["ь", "ъ"]
result = []
template = input()
words = [word for word in iter(input, "")]
 
for word in words:
    ...
0
 Аватар для Matrix3007
198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 844
14.02.2021, 22:37
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
29
30
31
32
33
34
35
36
37
38
39
vowels = ["a", "e", "о", "и", "э", "ы", "я", "ю", "е", "ё"]
consonants = ["б", "в", "г", "д", "ж", "з", "й", "к", "л", "м", "н", "п", "р", "с", "т", "ф", "х", "ц", "ч", "ш", "щ"]
signs = ["ь", "ъ"]
alls=[vowels, consonants, signs]
types={"0":alls[:1], "1":alls[:2], "?":alls}
m=input().split("*")
w=[]
d=" "
 
def check(word,mask):
    p=True
    try:
        for i in range(len(mask)):
            pp=False
            for j in types[mask[i]]:
                if word[i] in j:
                    pp=True
                    break
            p*=pp
    except:
        return False
    return p
 
while d != "":
    d=input()
    w.append(d)
 
r=m[0]
rl=len(r)
rez=[check(i, r) for i in w]
wl=len(w)
if len(m)-1:
    r=list(reversed(m[1]))
    rl=len(r)
    rez=[rez[i]*check(reversed(w[i]),r) for i in range(wl)]
if len(rez):
    print(*[w[i] for i in range(wl) if rez[i]], sep="\n")
else:
    print("Есть нечего, значить!")
0
63 / 52 / 11
Регистрация: 14.01.2021
Сообщений: 406
14.02.2021, 23:28
Matrix3007, не пишет Есть нечего, значить! в 2 примере

Добавлено через 4 минуты
Matrix3007, и ещё pycharm пишет

Python
1
(reversed(w[i]),r)
Type 'Iterator' doesn't have expected attribute '__getitem__'

И ещё зачем так сложно писать, и называйте переменные получше пж
0
 Аватар для Matrix3007
198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 844
14.02.2021, 23:39
gray621,
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
29
30
31
32
33
34
35
36
37
38
39
40
41
vowels = ["a", "e", "о", "и", "э", "ы", "я", "ю", "е", "ё"]
consonants = ["б", "в", "г", "д", "ж", "з", "й", "к", "л", "м", "н", "п", "р", "с", "т", "ф", "х", "ц", "ч", "ш", "щ"]
signs = ["ь", "ъ"]
alls=[vowels, consonants, signs]
types={"0":alls[:1], "1":alls[:2], "?":alls}
m=input().split("*")
w=[]
d=" "
 
def check(word,mask):
    p=True
    try:
        for i in range(len(mask)):
            pp=False
            for j in types[mask[i]]:
                if word[i] in j:
                    pp=True
                    break
            if not pp:
                return False
    except:
        return False
    return p
 
while d != "":
    d=input()
    w.append(d)
 
r=m[0]
rl=len(r)
rez=[check(i, r) for i in w]
wl=len(w)
if len(m)-1:
    r=list(reversed(m[1]))
    rl=len(r)
    rez=[rez[i]*check(reversed(w[i]),r) for i in range(wl)]
rez=[w[i] for i in range(wl) if rez[i]]
if len(rez):
    print(*rez, sep="\n")
else:
    print("Есть нечего, значить!")
Цитата Сообщение от gray621 Посмотреть сообщение
И ещё зачем так сложно писать, и называйте переменные получше пж
Если писать так, как понятно тебе, получится код в 100 строк. А такой код я писать отказываюсь)

Добавлено через 1 минуту
Что конкретно непонятно, можешь спросить.
0
63 / 52 / 11
Регистрация: 14.01.2021
Сообщений: 406
15.02.2021, 00:30
Цитата Сообщение от Matrix3007 Посмотреть сообщение
Что конкретно непонятно, можешь спросить.
почему pycharm говорит Type 'Iterator' doesn't have expected attribute '__getitem__' в 36 строчке reversed(w[i])

Добавлено через 1 минуту
Цитата Сообщение от Matrix3007 Посмотреть сообщение
получится код в 100 строк
ну и что, просто в pycharm shift + f6 переименовать переменные, чтобы понятно было
0
 Аватар для Matrix3007
198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 844
15.02.2021, 00:50
Цитата Сообщение от gray621 Посмотреть сообщение
почему pycharm говорит Type 'Iterator' doesn't have expected attribute '__getitem__' в 36 строчке reversed(w[i])
Не знаю, я не пишу в pycharm. Скорее всего, это не ошибка, а предупреждение.
Цитата Сообщение от gray621 Посмотреть сообщение
переименовать переменные, чтобы понятно было
Там большую часть переменных нельзя назвать "понятно".
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,324
15.02.2021, 08:06
Цитата Сообщение от gray621 Посмотреть сообщение
в pycharm shift + f6 переименовать переменные
у меня ничего не происходит при нажатии этих клавиш....
кстати поиск в коде как сделать-понятно, а заменить что-то на что-то в коде можно, как?
0
63 / 52 / 11
Регистрация: 14.01.2021
Сообщений: 406
15.02.2021, 08:20
Ципихович Эндрю, нужно мышкой встать на переменную (она вроде не должна быть в функции) и нажать shift + f6, появится окошко, в котором можно переименовать конкретную переменную, на которой была мышка
1
 Аватар для Semen-Semenich
5228 / 3474 / 1174
Регистрация: 21.03.2016
Сообщений: 8,301
15.02.2021, 21:57
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
template = input()
data = input()
vowels = 'aeоиэыяюеё'
flag = 'Есть нечего, значить!'
while data:
    template = template.replace('?','1')
    res = ''.join(['0' if i in vowels else '1' for i in data])
    if '*' in template:
        ind1, ind2 = list(map(len,template.split('*')))
        data = data[:ind1] + data[ind2+1:]
        template = template.replace('*','')
    if ''.join(res) == template:
        print(data)
        flag = ''
    data = input()
print(flag)
1
63 / 52 / 11
Регистрация: 14.01.2021
Сообщений: 406
15.02.2021, 22:21
Semen-Semenich, для чего ''.join(res) в 12 строчке если код уже склеил в 7 строчке
0
 Аватар для Semen-Semenich
5228 / 3474 / 1174
Регистрация: 21.03.2016
Сообщений: 8,301
15.02.2021, 22:23
ну да, проморгал. сразу просто написал res = ['0' if i in vowels else '1' for i in data]
а потом решил сразу склеить а в условии забыл убрать.
0
63 / 52 / 11
Регистрация: 14.01.2021
Сообщений: 406
15.02.2021, 22:36
Semen-Semenich,
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
template = template.replace('?','1')
то есть вы заменяете ? на 1, но что если будет слово где ? будет 0 и оно будет подходить?
0
 Аватар для Semen-Semenich
5228 / 3474 / 1174
Регистрация: 21.03.2016
Сообщений: 8,301
15.02.2021, 22:58
gray621, ну попробуйте протестируйте. я на представленных тестах проверял

10?010
молоко
отруби
обрат
селёдка
буханка
головы

молоко
головы
меняем согласную под ? на гласную

10?010
моуоко
отруби
обрат
селёдка
буханка
головы

моуоко
головы
в условии же сказано
Цитата Сообщение от LevL123 Посмотреть сообщение
? — строго одна любая буква
и меняю не в слове а в шаблоне
0
63 / 52 / 11
Регистрация: 14.01.2021
Сообщений: 406
16.02.2021, 01:14
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
в условии же сказано
так там имеется ввиду, что ? - это 1 или 0 (любой). Там строго относится к количеству букв, это подчеркивается разница между * и ?. То есть ? - это 1 или 0 (любой), а вы заменяете в шаблоне ? на 1, то есть если будет слово, в котором будет 0, а там ?, а в шаблоне будет 1, и оно не будет выведено, но должно быть выведено.

Добавлено через 1 час 34 минуты
Semen-Semenich, не работает на третьем тесте:

Номер теста
3
Ввод
0110?
молоко
отруби
обрат
селёдка
буханка
головы

Ожидаемый результат
обрат
Вывод
Есть нечего, значить!

Добавлено через 1 минуту

Не по теме:

Matrix3007, у вас тоже не работает на третьем тесте

0
 Аватар для Matrix3007
198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 844
16.02.2021, 12:59
gray621, Не работает, потому что ты в гласные записал "a" и "e" латинские.
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
29
30
31
32
33
34
35
36
37
38
39
40
41
vowels = ["а", "е", "о", "и", "э", "ы", "я", "ю", "е", "ё"]
consonants = ["б", "в", "г", "д", "ж", "з", "й", "к", "л", "м", "н", "п", "р", "с", "т", "ф", "х", "ц", "ч", "ш", "щ"]
signs = ["ь", "ъ"]
alls=[vowels, consonants, signs]
types={"0":alls[:1], "1":alls[-2:], "?":alls}
m=input().split("*")
w=[]
d=" "
 
def check(word,mask):
    p=True
    try:
        for i in range(len(mask)):
            pp=False
            for j in types[mask[i]]:
                if word[i] in j:
                    pp=True
                    break
            if not pp:
                return False
    except:
        return False
    return p
 
while d != "":
    d=input()
    w.append(d)
 
r=m[0]
rl=len(r)
rez=[check(i, r) for i in w]
wl=len(w)
if len(m)-1:
    r=list(reversed(m[1]))
    rl=len(r)
    rez=[rez[i]*check(reversed(w[i]),r) for i in range(wl)]
rez=[w[i] for i in range(wl) if rez[i]]
if len(rez):
    print(*rez, sep="\n")
else:
    print("Есть нечего, значить!")
0
16.02.2021, 13:39

Не по теме:

Цитата Сообщение от Matrix3007 Посмотреть сообщение
Не работает, потому что ты в гласные записал "a" и "e" латинские.
Тонко))

0
63 / 52 / 11
Регистрация: 14.01.2021
Сообщений: 406
16.02.2021, 19:30
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
data = data[:ind1] + data[ind2+1:]
во втором примере:

1010*0
отруби

получается отруруби после этого?
0
 Аватар для Semen-Semenich
5228 / 3474 / 1174
Регистрация: 21.03.2016
Сообщений: 8,301
16.02.2021, 19:31
gray621, сегодня посмотрел на свежую голову свой код сам в шоке что сонным написал. я даже не учел что
* — любое количество любых букв, в том числе ни одной. ну вроде теперь учел. тестируй
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
template = input()
data = input()
vowels = 'аеоийэыяюеё'  
flag = 'Есть нечего, значить!'
while data:
    res = ['0' if i in vowels else '1' for i in data]
    if '?' in template: # если ? есть в шаблоне
        res[template.find('?')] = '?' # меняем элемент с индексом ? в шаблоне на ? в результате
    if '*' in template: # если * есть в шаблоне 
        ind1, ind2 = map(len,template.split('*'))# то находим длину символов до * и после
        res  = res[:ind1] + res[-(ind2+1):] # удаляем все что в середине(если под * 1 или более символов)
    res = ''.join(res)
    # сравниваем результат с шаблоном
    # если не совпало то сравниваем шаблон без *. случай когда под * в том числе ни одной буквы
    if res == template or res == template.replace('*',''):
        print(data)
        flag = ''
    data = input()
print(flag)
0
 Аватар для Matrix3007
198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 844
16.02.2021, 19:36
Semen-Semenich,
1*
соль

Есть нечего, значить!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.02.2021, 19:36
Помогаю со студенческими работами здесь

В строке записаны слова слова и целые десятичные числа . Для записи слов исп большие и малые буквы , длинна слова не более 16 букв.
В строке записаны слова слова и целые десятичные числа . Для записи слов исп большие и малые буквы , длинна слова не более 16 букв.

Даны два слова. Для каждой буквы первого слова (в том числе для повторяющихся в этом слове букв) определить,
Ребят,осталось 2 задания сделать по лабе,Помогите с одним.Спасибо 1)Даны два слова. Для каждой буквы первого слова (в том числе для...

Для каждого слова из текста вывести номер слова и само слово, а также вывести слова, в которых 5 букв
Дан текст, состоящий из нескольких слов, слова разделены пробелом. Выведите на экран для каждого слова: номер слова и само слово из текста,...

Для данного слова найти в словаре слова, в которых присутствуют буквы данного слова
Для заданного длинного слова найти в словаре все слова, в которых использованы только буквы, которые присутствуют в заданном слове, Нужно...

Для заданного длинного слова найти в словаре все слова
Кому не трудно,помогите,пожалуйста. Для заданного длинного слова найти в словаре все слова, в которых использованы только буквы,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru