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

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

05.02.2021, 23:40. Показов 27535. Ответов 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
 Аватар для Semen-Semenich
5228 / 3474 / 1174
Регистрация: 21.03.2016
Сообщений: 8,301
16.02.2021, 20:18
Студворк — интернет-сервис помощи студентам
Matrix3007, засада. расширяем условие
Python
1
2
3
4
5
6
7
8
    if '*' in template: # если * есть в шаблоне 
        ind1, ind2 = map(len,template.split('*'))
        if not ind2:
            res  = res[:ind1]
        elif not ind1:
            res  = res[-(ind2+1):]
        else:
            res  = res[:ind1] + res[-(ind2+1):]
но что то много условий.
0
 Аватар для Matrix3007
198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 844
16.02.2021, 20:43
Semen-Semenich,
10*1
соль

Есть нечего, значить!

Добавлено через 2 минуты
У меня, кстати, тоже неправильно) Сейчас посмотрим, что не так.

Добавлено через 18 минут
Ну в общем вот
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(list(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
 Аватар для Semen-Semenich
5228 / 3474 / 1174
Регистрация: 21.03.2016
Сообщений: 8,301
16.02.2021, 20:47
Matrix3007, ну ждем что скажет автор топика
0
16.02.2021, 20:57

Не по теме:

Цитата Сообщение от Semen-Semenich Посмотреть сообщение
ну ждем что скажет автор топика
Ничего не скажет. Временный пчел, нестабильный.

0
63 / 52 / 11
Регистрация: 14.01.2021
Сообщений: 406
16.02.2021, 23:12
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
сам в шоке что сонным написал
я поэтому столько и спрашивал

Добавлено через 22 минуты
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
res  = res[:ind1] + res[-(ind2+1):]
что получается после этой строки?
0
Эксперт Python
8850 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
16.02.2021, 23:24
gray621, а тут что не подходит?
Слова для кадавра
0
63 / 52 / 11
Регистрация: 14.01.2021
Сообщений: 406
16.02.2021, 23:28
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
res[-(ind2+1):]
а зачем тут -?

Добавлено через 2 минуты
Gdez, я хочу доделать данное решение задачи, нельзя же в конце оставлять уже
0
63 / 52 / 11
Регистрация: 14.01.2021
Сообщений: 406
17.02.2021, 20:06
Semen-Semenich, ваше решение не проходит 6 тест:

Номер теста
6
Ввод
10?*?010
коливо
тюря
говядина
фрукты
масло
коврижка
желе
рулька
бородинский
масса
габерсуп
икра
дрочёна
груздянка
заливное
яйцо
рыба
расстегай
ватрушка
кулич
оладьи
котлеты
шоколад
юрма
кетчуп
кулебяка
стейк
рис
компот
плюшка
пицца
уха
хлеб
салат
пельмени
запеченный
свинина
дежень
вареники
ацидофилин
курица
колбаса
жареные
сахар
чай
калья
курник
мороженое
сушки
сущик
сулой
прага
перец
взвар
блины
клёцки
пасха
макароны
тетёры

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

Добавлено через 1 минуту
Matrix3007, ваше решение не проходит на том же тесте. У вас выводит коливо
тюря
говядина
желе
рыба
котлеты
пельмени
вареники
колбаса
макароны
тетёры

Должно

говядина
котлеты
кулебяка
пельмени
вареники
колбаса
макароны
0
 Аватар для Matrix3007
198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 844
17.02.2021, 20:08
gray621, А твоё решение где?
0
 Аватар для Semen-Semenich
5228 / 3474 / 1174
Регистрация: 21.03.2016
Сообщений: 8,301
17.02.2021, 20:16
Цитата Сообщение от gray621 Посмотреть сообщение
Semen-Semenich, ваше решение не проходит 6 тест:
меня это не напрягает. вам нужно - ищите ошибки исправляйте. куча вариантов предложено.
0
63 / 52 / 11
Регистрация: 14.01.2021
Сообщений: 406
17.02.2021, 20:27
Matrix3007, я своё решение дополняю разными, я не просто как LevL123 копирую, я разбираю всё решение, исправляю ошибки, которые могу исправить и только потом сдаю
0
 Аватар для Matrix3007
198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 844
17.02.2021, 20:27
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
vowels = ["а", "е", "о", "и", "э", "ы", "я", "ю", "е", "ё"]
consonants = ["б", "в", "г", "д", "ж", "з", "й", "к", "л", "м", "н", "п", "р", "с", "т", "ф", "х", "ц", "ч", "ш", "щ"]
signs = ["ь", "ъ"]
alls=[vowels, consonants, signs]
types={"0":alls[:1], "1":alls[-2:], "?":alls}
m=input().split("*")
w=[]
d=" "
 
def check(word,mask):
    if len(word)-len(mask):
        return False
    p=True
    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
    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(list(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, Проверяй, раз уж не лень
0
63 / 52 / 11
Регистрация: 14.01.2021
Сообщений: 406
17.02.2021, 20:28
Semen-Semenich, я попробовал с отладочной печатью и тут какая-то ошибка:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    if '*' in template:
 
        index1, index2 = map(len, template.split('*'))
 
        if not index2:  # соль и 1*
            line_template = line_template[:index1]
            print("ok")
 
        elif not index1:  # соль и *1
            line_template = line_template[-(index2 + 1):]
            print("ok2")
        else:
            line_template = line_template[:index1] + line_template[-(index2 + 1):]  # соль и 1*1
            print("ok3")
1* и соль - работает
*1 и соль - не работает
1*1 и соль - не работает
0
 Аватар для Matrix3007
198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 844
17.02.2021, 20:31
Цитата Сообщение от gray621 Посмотреть сообщение
своё решение
Где оно?
Цитата Сообщение от gray621 Посмотреть сообщение
дополняю разными
Что разными?
Цитата Сообщение от gray621 Посмотреть сообщение
исправляю ошибки
Ты не исправляешь, ты только указываешь на них
Цитата Сообщение от gray621 Посмотреть сообщение
и только потом сдаю
Куда сдаёшь?)
0
63 / 52 / 11
Регистрация: 14.01.2021
Сообщений: 406
17.02.2021, 20:48
Цитата Сообщение от Matrix3007 Посмотреть сообщение
Куда сдаёшь?)
яндекс лицей
0
 Аватар для Matrix3007
198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 844
17.02.2021, 20:50
Цитата Сообщение от gray621 Посмотреть сообщение
яндекс лицей
И в чём смысл обучения, если ты сдаёшь чужие работы?
0
63 / 52 / 11
Регистрация: 14.01.2021
Сообщений: 406
17.02.2021, 20:55
Цитата Сообщение от Matrix3007 Посмотреть сообщение
Ты не исправляешь, ты только указываешь на них
я пытаюсь исправить все ошибки, которые вижу, я исправил ошибку, где было несколько вопросов, когда задача сдастся, я покажу решение

Добавлено через 1 минуту
Цитата Сообщение от Matrix3007 Посмотреть сообщение
И в чём смысл обучения, если ты сдаёшь чужие работы?
это не так, я обсуждаю сложные задачи с другими людьми с cyberforum и узнаю кучу нового. 2 месяца назад я только мог простейшие задачи решать, теперь хоть что-то могу

Добавлено через 23 секунды
это задача дополнительная кстати
0
63 / 52 / 11
Регистрация: 14.01.2021
Сообщений: 406
18.02.2021, 18:37
Semen-Semenich, я нашёл ошибку. Там не нужно + 1:

Python
1
2
3
4
5
6
7
8
    if '*' in template: # если * есть в шаблоне 
        ind1, ind2 = map(len,template.split('*'))
        if not ind2:
            res  = res[:ind1]
        elif not ind1:
            res  = res[-ind2:]
        else:
            res  = res[:ind1] + res[-ind2:]
Теперь работает *1 - соль, 1* - соль, 1*1 - соль

Добавлено через 1 час 59 минут
Тут ещё ошибка

10?*?010
котлеты
сейчас исправлю
0
63 / 52 / 11
Регистрация: 14.01.2021
Сообщений: 406
19.02.2021, 15:41
Matrix3007, Semen-Semenich, аааааа, я исправил, у меня чуть крыша не поехала я столько переписывал

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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
template = input()
vowels = "аоиэыяюеёу"
flag = True
q_counter = 0
count = -1
qs = []
qs2 = []
count2 = -1
 
for i in template:
    count += 1
    if i == "?":
        qs.append(count)
 
line = input()
while line:
 
    if len(line) >= len(template) - 1:
 
        line_template = ["0" if i in vowels else "1" for i in line]
 
        if "?" in template and len(line_template) == len(template):
 
            for i in qs:
                line_template[i] = "?"
 
        if '*' in template:
            index1, index2 = map(len, template.split('*'))
            if not index2:  # соль и 1*
                line_template = line_template[:index1]
            elif not index1:  # соль и *1
                line_template = line_template[-index2:]
            else:
                line_template = line_template[:index1] + line_template[-index2:]  # соль и 1*1
 
        tmp_template = template.replace("*", "")
 
        if "?" in template and len(line_template) == len(tmp_template):
 
            for i in tmp_template:
                count2 += 1
                if i == "?":
                    qs2.append(count2)
 
            for i in qs2:
                line_template[i] = "?"
 
        line_template = ''.join(line_template)
 
        if line_template == template or line_template == template.replace('*', ''):
            print(line)
            flag = False
 
    qs2 = []
    count2 = -1
    line = input()
 
if flag:
    print("Есть нечего, значить!")
0
712 / 351 / 120
Регистрация: 09.12.2020
Сообщений: 918
08.03.2021, 17:57
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
def cont(p, w):
    vow = 'аеёиоуыэюя'
    cons = 'бвгджзйклмнпрстфхцчшщьъ'
    n = len(w)
    for i in range(n):
        if p[i] == '?':
            continue
        if (w[i] in vow and p[i] == '1'):
            return False
        if (w[i] in cons and p[i] == '0'):
            return False
    return True
        
 
patt = input()
patt1 = patt
res = []
for word in iter(input, ''):
    if '*' in patt and len(word) + 2 > len(patt):
        patt1 = patt.replace('*', '?' * (len(word) - len(patt) + 1))
    if len(word) == len(patt1) and cont(patt1, word):
        res.append(word)
if res:
    print(*res, sep='\n')
else:
    print('Есть нечего, значить!')
Добавлено через 13 секунд
с РЕР8
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.03.2021, 17:57
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
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