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

Игра в города

25.03.2021, 17:23. Показов 2838. Ответов 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,233
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
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru