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

Длиннословие

20.01.2025, 06:44. Показов 2232. Ответов 10

Студворк — интернет-сервис помощи студентам
Ребят ,помогите пожалуйста кто может! Выпало на мою голову...

Краткое описание:Найти самые длинные последовательности n-буквенных слов, все
пары соседних слов в которых удовлетворяют некоторому ограничению.

Условие: Назовём два слова родственными, если наборы букв, из которых состоят эти
слова, отличаются ровно на одну. Например, четырёхбуквенные слова “игра” и “рагу”
являются родственными, так как у них ровно три общие буквы (“а”, “г” и “р”). А слова “кот”
и “ток” не являются родственными, так как у них все буквы общие. Требуется реализовать
программу для генерации как можно более длинных последовательностей из
неповторяющихся слов, в которых любые два соседних слова являются родственными.
Пример последовательности из шести слов: “игра”-”рагу”-”груз”-”узор”-”взор”-”роза”.
0
Любознательный
 Аватар для YuS_2
7404 / 2251 / 360
Регистрация: 10.03.2016
Сообщений: 5,205
20.01.2025, 08:02
Цитата Сообщение от miron4ik54 Посмотреть сообщение
Назовём два слова родственными, если наборы букв, из которых состоят эти
слова, отличаются ровно на одну.
1. Учитываются ли повторы букв?
Например:
барабан-барак
- родственники?
2. Из чего происходит генерация последовательности? Что подается на вход программе? Или программа сама должна составлять слова из букв предыдущего слова?
1
0 / 0 / 0
Регистрация: 20.01.2025
Сообщений: 6
20.01.2025, 10:32  [ТС]
Добавлено через 7 минут
про повторы букв ничего не сказано, на вход программе как я понял подается пара слов
вот такие там критерии еще есть:
максимальная длина последовательности
количество найденных длинных последовательностей
скорость алгоритма для поиска последовательностей
Цитата Сообщение от YuS_2 Посмотреть сообщение
1. Учитываются ли повторы букв?
Например:
барабан-барак
- родственники?
2. Из чего происходит генерация последовательности? Что подается на вход программе? Или программа сама должна составлять слова из букв предыдущего слова?
0
Любознательный
 Аватар для YuS_2
7404 / 2251 / 360
Регистрация: 10.03.2016
Сообщений: 5,205
20.01.2025, 10:53
Цитата Сообщение от miron4ik54 Посмотреть сообщение
про повторы букв ничего не сказано
Это важно - необходимо уточнение.

Цитата Сообщение от miron4ik54 Посмотреть сообщение
максимальная длина последовательности
Последовательность слов складывается из самих слов - осталось выяснить, как эти слова поступают на вход программе...

Цитата Сообщение от miron4ik54 Посмотреть сообщение
на вход программе как я понял подается пара слов
ок, подается парами слов до каких пор? Что служит ограничением?
Если подается пара слов не являющимися родственниками - отбрасываются оба слова или они используются в дальнейшем для сравнения с другими поступающими словами? Механизм формирования набора слов непонятен совсем... пока, во всяком случае, ничего отчетливого не наблюдается.
Примеры входных данных имеются?
0
0 / 0 / 0
Регистрация: 20.01.2025
Сообщений: 6
20.01.2025, 13:32  [ТС]
Цитата Сообщение от YuS_2 Посмотреть сообщение
Это важно - необходимо уточнение.
Постараюсь уточнить все эти вопросы!
0
0 / 0 / 0
Регистрация: 20.01.2025
Сообщений: 6
22.01.2025, 04:17  [ТС]
Цитата Сообщение от YuS_2 Посмотреть сообщение
ок, подается парами с
1) Учитываются ли повторы букв?

Да, слова с повторяющимися буквами разрешены. Приведём пример для пояснения: слова "шалаш" и "лапша" родственные, потому что пятёрки букв, из которых эти слова состоят, отличаются ровно на одну (убрали "ш" и добавили "п").

2) Если подается пара слов не являющимися родственниками - отбрасываются оба слова или они используются в дальнейшем для сравнения с другими поступающими словами?

Это зависит от вашей реализации. Со своей стороны мы не подаём никакие пары слов вашему алгоритму. Мы ожидаем от вас цепочки родственных слов (т.е. такую цепочку из неповторяющихся слов, в которой любые два соседних слова являются родственными).

3) Если последовательность слов складывается из самих слов, то  как эти слова поступают на вход программе?

Последовательность слов – это результат работы вашей программы. Вам надо научиться генерировать как можно более длинные последовательности родственных слов. Для работы вашего алгоритма может понадобиться словарь слов русского языка. Традиционно в подобных задачах используют словари существительных в начальной форме, пишущихся с маленькой буквы (т.е. имена нарицательные). Так что очень желательно найти именно такой словарь. Но если в вашем словаре будут ещё какие-то части речи, то за это не будут снижаться баллы.

4) Если как в примере слова подаются парами, до каких пор? Что служит ограничением?

В примере показана последовательность из шести слов, удовлетворяющая условию (все слова разные, любые два соседних являются родственными). Вам надо научиться генерировать подобные последовательности, стараясь делать их как можно более длинными.
0
Любознательный
 Аватар для YuS_2
7404 / 2251 / 360
Регистрация: 10.03.2016
Сообщений: 5,205
22.01.2025, 12:14
Цитата Сообщение от miron4ik54 Посмотреть сообщение
Вам надо научиться генерировать как можно более длинные последовательности родственных слов. Для работы вашего алгоритма может понадобиться словарь слов русского языка. Традиционно в подобных задачах используют словари существительных в начальной форме, пишущихся с маленькой буквы (т.е. имена нарицательные). Так что очень желательно найти именно такой словарь.
Да уж... это задача не на программирование, а по литературе... на пополнение словарного запаса, например.
0
0 / 0 / 0
Регистрация: 20.01.2025
Сообщений: 6
22.01.2025, 12:21  [ТС]
Цитата Сообщение от YuS_2 Посмотреть сообщение
Да уж... это задача не на программирование, а по литературе... на пополнение словарного запаса, например.
да хотя бы чтобы работала как в примере, пара слов, а словарь, ну его
0
Любознательный
 Аватар для YuS_2
7404 / 2251 / 360
Регистрация: 10.03.2016
Сообщений: 5,205
22.01.2025, 14:18
Цитата Сообщение от miron4ik54 Посмотреть сообщение
да хотя бы чтобы работала как в примере, пара слов
Ну, если без генератора...
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
arr = ['игра','рагу','груз','узор','взор','роза','барабан','барак']
out = []
for i in range(len(arr)):
    a = arr[i]
    if i < len(arr)-1:
        b = arr[i+1]
        x,y = set(a),set(b)
        if len(x) == len(y):
            d = x&y
            if len(d) == len(x)-1:
                out.append((a,b))
            else:
                out.append([f'не родня: "{a}" и "{b}"'])
 
print('родственные соседи:\n',out)
- слова проверяются попарно, причем только рядом стоящие...
дубликаты букв считаются за одну... а из ответа, так и не понял, каким образом у них дубли считаются...

Добавлено через 3 минуты
т.е. это не ответ на задачу, это заготовка/часть ответа, если слова подавать рандомно, родственники могут не найтись...
0
 Аватар для VistaSV30
986 / 330 / 79
Регистрация: 10.04.2012
Сообщений: 1,239
Записей в блоге: 4
22.01.2025, 16:06
Добрый день!
Еще одна заготовка

Просто находим всех "родственников" из предложенного списка
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
arr = ['игра','рагу','груз','узор','взор','роза','барабан','барак', 'баран']
 
def Relative(a, b):
    if len(a) != len(b):
        return False
    
    bl = list(b)
    for i in a:
        if i in bl:
            bl.remove(i)
            
    if len(bl) == 1:
        return True
    else:
        return False
    
n = 0
for i in arr:
    n += 1
    for j in arr[n:]:
        if Relative(i, j):
            print(i, j)
0
0 / 0 / 0
Регистрация: 20.01.2025
Сообщений: 6
23.01.2025, 11:54  [ТС]
Цитата Сообщение от YuS_2 Посмотреть сообщение
Ну, если без генератора...
а если генератор? или можно создать например текстовый файл со списком слов?

Добавлено через 50 секунд
Цитата Сообщение от VistaSV30 Посмотреть сообщение
Просто находим всех "родственников" из предложенного списка
список же можно взять из какого либо источника? словарь и т.д

Добавлено через 1 минуту
гляньте на ваш профессиональный взгляд эту программу, на ход которой подается слово , а затем сам словарь
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
def are_relatives(word1, word2):
    """Проверяет, являются ли два слова родственными."""
    return len(set(word1) ^ set(word2)) == 2
 
def find_a_sequence_from_dictionary(start_word, dictionary):
    """Находит максимально длинную последовательность родственных слов из словаря."""
    if start_word not in dictionary:
        raise ValueError("Начальное слово отсутствует в словаре.")
    
    graph = {word: [] for word in dictionary}
    for i, word1 in enumerate(dictionary):
        for word2 in dictionary[i+1:]:
            if are_relatives(word1, word2):
                graph[word1].append(word2)
                graph[word2].append(word1)
 
    def dfs(current_word, path):
        
        neighbors = [neighbor for neighbor in graph[current_word] if neighbor not in path]
        if not neighbors:
            return path
        
        for neighbor in neighbors:
            result = dfs(neighbor, path + [neighbor])
            if len(result) > len(path) :
                return result
        return path
    
    return dfs(start_word, [start_word])
 
def find_all_relatives(sequence, dictionary):
    """Находит все уникальные родственные слова для слов в последовательности."""
    all_relatives = set()
    for word in sequence:
        for other_word in dictionary:
            if word != other_word and are_relatives(word, other_word) and other_word not in sequence:
              all_relatives.add(other_word)
    return all_relatives
 
# Пример использования:
try:
    start_word = input("Введите начальное слово: ")
    dictionary_str = input("Введите словарь (слова через пробел): ")
    dictionary = dictionary_str.split()
    
    sequence = find_a_sequence_from_dictionary(start_word, dictionary)
 
    if len(sequence) > 1:
        print("Найденная последовательность:", " - ".join(sequence))
        all_relatives = find_all_relatives(sequence, dictionary)
        print(f"Общее количество уникальных родственных слов: {len(all_relatives)}")
    else:
        print("Не найдено ни одной последовательности.")
        
except ValueError as e:
    print(f"Ошибка ввода: {e}")
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru