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

Игра в города

25.03.2021, 17:23. Показов 2760. Ответов 1

Студворк — интернет-сервис помощи студентам
Здравствуйте, условие задачи: вывести все возможные последовательности городов, которые удовлетворяют условию: последняя буква текущего слова соответствует первой букве следующего.
Я использую список из N городов, записываю в файл последовательности городов через пробел. Сами последовательности разделены \n.
Я хочу реализовать проход по всем словам в списке, которые бы инициализировали старт цикла, который бы создавал последовательности, инициализированные этим словом. Например:

Code
1
[milltimber, ringwood, dundonald, londonderry, ystrad]
Выходные последовательности:

Code
1
2
3
4
milltimber ringwood dundonald
ringwood dundonald
londonderry ystrad dundonald
ystrad dundonald
Моя реализация такова:
Python
1
2
3
4
5
6
for city_1 in cities_list:  
    создаем список cities_list_iterable и удаляем из него city_1 
    for city_2 in cities_list_iterable:
        Проверяем, совпадает ли первая буква city_2 с последней буквой city_1, и если да:
            добавляем city_2 в текущую последовательность, удаляем его из cities_list_iterable
            присваиваем city_1 значение city_2
Однако при такой реализации нам необходимо вернутся в начало цикла
Code
1
for city_2 in cities_list_iterable:
что бы снова начать проверять все ещё не удалённые города на соответствие условию. Я не понимаю как это сделать.
Также я не уверен в правильности этого алгоритма, а также в его оптимальности. Я раздумывал над решением через графы, но не совсем понял, как найти в данном случае все последовательности.
Оптимальность алгоритма важна, поэтому прошу подсказать также другие варианты решения задачи.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.03.2021, 17:23
Ответы с готовыми решениями:

Игра Города
нужно написать город на последнюю букву предыдущего города, если нет такого города вывести unknow, код на python.

Игра в Города
В коде вылазить ошибка: File "C:/Users/reger/PycharmProjects/untitled/venv/зшв.py", line 5 SyntaxError: Non-UTF-8 code starting with...

Игра в города
Аня и Наташа играют в города. Они очень любят эту игру, знают много городов и к концу игры забывают, какие уже называли. На вас возложена...

1
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,228
25.03.2021, 20:41
Lesage, тут лучше всего использовать отдельный список для тех городов, которые уже использовались в цепочке.
+ у города может быть несколько вариантов ответа. Можно с помощью рекурсии реализовать:
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
cities = [
"milltimber", 
"ringwood", 
"dundonald", 
"londonderry",
"ystrad",
"ystradw"
]
 
def get_cities_seq(cities):
    c_copy = list(set(cities))       
    result = []
 
    for c in c_copy:
        for l in get_cities_rec([c], c_copy, [c]):
            if l:
                result.append(l)
 
    result.sort(key=lambda l: len(l))
    return result;
 
def get_cities_rec(current_list, copy, used):
    c = current_list[-1]
    cur_len = len(used)
    iter_next = (nc for nc in copy if nc not in used if nc[0] == c[-1])
    for item in iter_next:
        to_yield = current_list + [item]
        used.append(item)
        yield to_yield
        yield from get_cities_rec(to_yield, copy , used)
 
    new_len = len(used)
    if (new_len == cur_len):
        return []    
 
def main():
    global cities
    for comb in get_cities_seq(cities):
        print(comb)
 
if __name__ == '__main__':
    main()
Добавлено через 19 минут
Цитата Сообщение от IamRain Посмотреть сообщение
у города может быть несколько вариантов ответа
Всмысле после него может следовать несколько разных городов с одинаковой первой буквой.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.03.2021, 20:41
Помогаю со студенческими работами здесь

Игра в города
Пользователь (или несколько пользователей за одним компьютером) вводит слова. Начиная со второго введённого слова, программа проверяет,...

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

Игра в города продолжается
Помогите, пожалуйста. Начал проходить курс python в yandex практикуме. Задача 2 Игра в города продолжается. Анфиса покопалась в сети...

Игра в города с компьютером
Всем привет! У меня есть код для игры двум игрокам: программа проверяет город на существование, проверяет совпадает ли первая буква города...

Игра в города: мягкий знак
При игре в города игроки по очереди называют названия городов (или, возможно, любые другие слова) так, чтобы первая буква каждого нового...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru