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

Возвращение объединенную строку

31.05.2021, 10:11. Показов 1816. Ответов 5

Студворк — интернет-сервис помощи студентам
Написать функцию word_mesh, которая получает список строк и возвращает объединенную строку.
Слова в списке должны соединяться вместе, где одна или несколько букв в конце одного слова являются началом следующего слова в списке.
Но бывают случаи, когда все слова не совпадают.
Вернуть объединенную строку или "failed", если это невозможно.

Примеры:
word_mesh(["allow", "lowering", "ringmaster", "terror"]) ==> "lowringter" --> "low" + "ring" + "ter"
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.05.2021, 10:11
Ответы с готовыми решениями:

Написать функцию, которая получает список строк и возвращает объединенную строку
Написать функцию word_mesh, которая получает список строк и возвращает объединенную строку. Слова в списке должны соединяться вместе,...

Возвращение указателя на соответствующую строку
Доброго времени суток. Есть задача: по номеру дня недели вывести его название Есть код: #include <iostream> #include...

Возможно ли возвращение функцией двух значений? Именно возвращение, не ссылка или указатель
Нужна функция в которую забиваешь два числа и сначала она возвращает минимальное, после максимальное. Я пробовал делать с ссылками и это не...

5
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
31.05.2021, 10:53
pavel_topsky,
Python
1
2
3
4
5
6
7
8
def word_mesh(words: [str]) -> str:
    result = ""
    for current, follow in zip(words, words[1:]):
        for i in range(max(len(current), len(follow))):
            if follow.startswith(current[i:]):
                result += current[i:]
                break
    return "failed" if not result else result
1
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
31.05.2021, 12:38
Fudthhh, я пожёще упоролся

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
from collections import defaultdict
from copy import copy
 
 
def find_path(start: str, graph: list, selected: list = None) -> list:
    selected = (selected or []) + [start]
    if len(selected) == len(graph):
        return selected
    for vertex in graph[start]:
        ans = find_path(vertex, graph, copy(selected))
        if ans is not None:
            return ans
    return None
 
 
def build_join(path: list) -> str:
    ans = []
    for left, right in zip(path, path[1:]):
        for i in range(1, min(len(left), len(right))):
            suffix = left[-i:]
            if right.startswith(suffix):
                ans.append(suffix)
                break
    return ''.join(ans)
 
 
def word_mesh(words: list) -> str:
    graph: dict = defaultdict(set)
    for word in words:
        for start in range(1, len(word)):
            for match in filter(lambda match: match.startswith(word[start:]) \
                                              and match != word, words):
                graph[word].add(match)
    for start in graph.keys():
        path = find_path(start, graph)
        if path is not None:
            return build_join(path)
    return "failed"
 
 
ans = word_mesh(["allow", "lowering", "ringmaster", "terror"])
print(ans)
0
31.05.2021, 13:06

Не по теме:

outoftime, а ты знаешь толк в извращениях! (Юмор)

0
31.05.2021, 13:15

Не по теме:

Цитата Сообщение от Fudthhh Посмотреть сообщение
а ты знаешь толк в извращениях!
только когда человек не заслуживает решения

0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
31.05.2021, 13:32
Лучший ответ Сообщение было отмечено КулХацкеръ как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def prefix_function(s):
    n = len(s)
    p = [0] * n
    for i in range(1, n):
        k = p[i - 1]
        while k > 0 and s[i] != s[k]:
            k = p[k - 1]
        if s[i] == s[k]:
            k += 1
        p[i] = k
    return p
 
 
def word_mesh(arr):
    res = ''
    for a, b in zip(arr, arr[1:]):
        res += b[:prefix_function(b+'#'+a)[-1]]
    return res
 
 
print(word_mesh(["allow", "lowering", "ringmaster", "terror"]))
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.05.2021, 13:32
Помогаю со студенческими работами здесь

Копирование в объединенную из 3 ячейку
Добрый день! Помогите с формулой по типу =индекс....., никак не получается сделать чтобы в объединённую из 3 ячеек копировался текст из...

Как сделать объединенную рамку
Как сделать такую двойную рамку? Что бы под словом "Новости" не было ее.

Объединение 8-12 таблиц в одну объединенную
Здравствуйте! Создаю базу данных для лаборатории. У меня получается порядка 8-12 различных анализов одного и того же продукта, на каждый...

Добавление данных в объединенную таблицу
Здравствуйте, очень надеюсь на чью-нибудь помощь, так как уже совсем ничего не понимаю. Дело в том, что у меня существуют 5 связанных...

Как объявить объединённую структуру?
И ещё раз всем здравствуйте. Один и тот же массив байт должен читаться и как структура. Аналог на C: struct sCurrentParam { ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru