Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
2 / 2 / 0
Регистрация: 30.09.2020
Сообщений: 126
1

Задача круглый стол короля Артура

16.12.2021, 20:47. Показов 2968. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
возможно я только усложнил всё но решил писать так
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
n = int(input("Введите кол-во рыцарей: "))
nFriends = int(n/2) # Сколько должно быть друзей
 
class Knights :
    num = 0
    friends = [] * nFriends # Массив друзей
 
    def __init__(self, num):
        self.num = num
 
    def __str__(self):
        return "Рыцарь: " + self.num + " - Друзья: " # Вывод номер рыцаря и его друзей
 
    __repr__ = __str__
 
    def setFriends(self, friends):
        self.friends = friends
 
    def getFriends(self):
        return self.friends
 
def friend(friends): # Задумывается как присваивания "друзей" объекту
    for i in knights:
        for j in range(n):
            if (i % 2) == 0 and (j % 2) != 0:
                friends.append(knights[i].setFriends(j))
            elif (i % 2) != 0 and (j % 2) == 0:
                friends.append(knights[i].setFriends(j))
 
knights = [Knights(f"{i}") for i in range(n)] # Создание объекта "Рыцарь"
print(knights)
никак не получается присвоить объекту массив с "друзьями"

на картинке с paint'а
1 строка индекс массива след 3 строки это "друзьям" индекса вверху
цифры по кругу это непосредственно как они могут сидеть рядом за столом
Миниатюры
Задача круглый стол короля Артура  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.12.2021, 20:47
Ответы с готовыми решениями:

задача короля артура
Turbo Pascal (ПОМОГИТЕ РАЗОБРАТЬСЯ С КОДОМ К ЗАДАЧЕ.ОЧЕНЬ-ОЧЕНЬ ПРОШУ!!!) Вы не поверите, но...

Задача про круглый стол (динамические массивы)
Помогите решить задачу. Условие. За круглым столом собралось 10 участников, номера стульев от 1...

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

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

10
2 / 2 / 0
Регистрация: 30.09.2020
Сообщений: 126
16.12.2021, 21:20  [ТС] 2
немного покопался и сделал это
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
n = int(input("Введите кол-во рыцарей: "))
nFriends = int(n/2) # Сколько должно быть друзей
friends = [] * nFriends
class Knights :
    num = 0
    friends = [] # Массив друзей
 
    def __init__(self, num):
        self.num = num
        self.friends
 
    def __str__(self):
        convertList = ' '.join(map(str, friends))
        return " Рыцарь: " + self.num + " - Друзья: " + convertList + " " # Вывод номер рыцаря и его друзей
 
    __repr__ = __str__
 
    def setFriends(self, friends):
        self.friends = friends
 
    def getFriends(self):
        return self.friends
 
def friend(friends, i): # Задумывается как присваивания "друзей" объекту
    #for i in n:
    if len(friends) >= 3:
        return friends
    for j in range(n):
        if (i % 2) == 0 and (j % 2) != 0:
            friends.append(j)
        elif (i % 2) != 0 and (j % 2) == 0:
            friends.append(j)
 
knights = [Knights(f"{i}") for i in range(n)] # Создание объекта "Рыцарь"
 
for i in range(n):
    knights[i].setFriends(friend(friends, i))
print(knights)
вывод сейчас такой:
Введите кол-во рыцарей: 4
[ Рыцарь: 0 - Друзья: 1 3 0 2 , Рыцарь: 1 - Друзья: 1 3 0 2 , Рыцарь: 2 - Друзья: 1 3 0 2 , Рыцарь: 3 - Друзья: 1 3 0 2 ]
0
5025 / 3371 / 1155
Регистрация: 21.03.2016
Сообщений: 8,187
16.12.2021, 21:26 3
возможно будет лучше если вы опишите условие задачи.
Python
1
knights = [Knights(f"{i}") for i in range(n)] # Создание объекта "Рыцарь"
увы нет. создается список экземпляров
0
2 / 2 / 0
Регистрация: 30.09.2020
Сообщений: 126
16.12.2021, 21:31  [ТС] 4
Semen-Semenich, я его добавил но он почему то убрался после добавления скрина paint'а
ну и я благополучно не заметил этого
 Комментарий модератора 
П.5.18.Правил
Запрещено размещать задания и решения в виде картинок и других файлов с их текстом.
Вложения, ожидающие проверки
Тип файла: png qYNEJH6.png
0
2 / 2 / 0
Регистрация: 30.09.2020
Сообщений: 126
16.12.2021, 21:35  [ТС] 5
чуть чуть поправил
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
n = int(input("Введите кол-во рыцарей: "))
nFriends = int(n/2) # Сколько должно быть друзей
friends = [] * nFriends
class Knights :
    num = 0
    friends = [] # Массив друзей
 
    def __init__(self, num):
        self.num = num
        self.friends
 
    def __str__(self):
        convertList = ' '.join(map(str, friends))
        return " Рыцарь: " + self.num + " - Друзья: " + convertList + " " # Вывод номер рыцаря и его друзей
 
    __repr__ = __str__
 
    def setFriends(self, friends):
        self.friends = friends
 
    def getFriends(self):
        return self.friends
 
def friend(friends, i): # Задумывается как присваивания "друзей" объекту
    #for i in n:
    if len(friends) > nFriends:
        return friends
    for j in range(n):
        if (i % 2) == 0 and (j % 2) != 0:
            friends.append(j)
        elif (i % 2) != 0 and (j % 2) == 0:
            friends.append(j)
 
knights = [Knights(f"{i}") for i in range(n)] # Создание списока экземпляров
 
for i in range(n):
    knights[i].setFriends(friend(friends, i))
print(knights)
0
5025 / 3371 / 1155
Регистрация: 21.03.2016
Сообщений: 8,187
16.12.2021, 21:42 6
это обязательно с классом решать?
Цитата Сообщение от SkiprDAG Посмотреть сообщение
вывод сейчас такой:
Введите кол-во рыцарей: 4
[ Рыцарь: 0 - Друзья: 1 3 0 2 , Рыцарь: 1 - Друзья: 1 3 0 2 , Рыцарь: 2 - Друзья: 1 3 0 2 , Рыцарь: 3 - Друзья: 1 3 0 2 ]
вас не смущает что у каждого рыцаря одни и те же друзья включая самого себя? а где же враги. это наверно из темы
двусвязные списки?
0
2 / 2 / 0
Регистрация: 30.09.2020
Сообщений: 126
16.12.2021, 21:56  [ТС] 7
Semen-Semenich, ну если бы я понимал как это исправить я бы не писал сюда (по моей логике в данный момент всё должно быть правильным)
я понимаю что у Рыцаря 0, 2 друзья 1, 3 Рыцарь 1, 3 друзья 0, 2

а на счёт врагов: не думаю что их нужно записывать чтоб решить данную задачу друзей должно хватить ведь тот кто не друг тот и есть враг

Добавлено через 7 минут
Semen-Semenich, Извиняюсь за грубость если вас что то обидело
просто долго уже сижу и ночь на дворе
0
5025 / 3371 / 1155
Регистрация: 21.03.2016
Сообщений: 8,187
16.12.2021, 22:14 8
тут хитрая логика . уже поздно. завтра попробую на листочке расписать а потом уже решение буду смотреть.
у каждого рыцаря друг слева и справа сидят но у любого этого друга может с другой стороны сидеть враг рыцаря но он друг этому другу будет. это надо рисовать что бы понять логику
0
2 / 2 / 0
Регистрация: 30.09.2020
Сообщений: 126
16.12.2021, 22:16  [ТС] 9
Semen-Semenich, спасибо за помощь буду ждать)
0
2 / 2 / 0
Регистрация: 30.09.2020
Сообщений: 126
17.12.2021, 06:53  [ТС] 10
Semen-Semenich, 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
n = int(input("Введите кол-во рыцарей: "))
nFriends = int(n/2) # Сколько должно быть друзей
 
class Knights :
    num = 0
    friends = [] # Массив друзей
 
    def __init__(self, num):
        self.num = num
        self.friends
 
    def __str__(self):
        return " Рыцарь: " + self.num + " - Друзья: " + str(self.friends) + " " # Вывод номер рыцаря и его друзей
 
    __repr__ = __str__
 
    def setFriends(self, friends):
        self.friends = friends
 
    def getFriends(self):
        return self.friends
 
def friend(friends, i): # Задумывается как присваивания "друзей" объекту
    for j in range(n):
        if (i % 2) == 0 and (j % 2) != 0:
            friends.append(j)
        elif (i % 2) != 0 and (j % 2) == 0:
            friends.append(j)
    if len(friends) == nFriends:
        knights[i].setFriends(friends)
 
knights = [Knights(f"{i}") for i in range(n)] # Создание списока экземпляров
 
for i in range(n):
    friends = []
    friend(friends, i)
print(knights)
Вывод такой
Введите кол-во рыцарей: 6
[ Рыцарь: 0 - Друзья: [1, 3, 5] , Рыцарь: 1 - Друзья: [0, 2, 4] , Рыцарь: 2 - Друзья: [1, 3, 5] , Рыцарь: 3 - Друзья: [0, 2, 4] , Рыцарь: 4 - Друзья: [1, 3, 5] , Рыцарь: 5 - Друзья: [0, 2, 4] ]

Добавлено через 34 секунды
вроде проблема с друзьями решена осталось написать сортировку
0
2 / 2 / 0
Регистрация: 30.09.2020
Сообщений: 126
20.12.2021, 09:26  [ТС] 11
я написал код когда ещё не знал ответа но через костыли
а зная ответ я не знаю как его за кодить

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
n = int(input("Введите кол-во рыцарей: "))
t = [0] * n
с = 0
nFriends = int(n/2) # Сколько должно быть друзей
 
class Knights :
    num = 0
    friends = [] # Массив друзей
 
    def __init__(self, num):
        self.num = num
        self.friends
 
    def __str__(self):
        return " Рыцарь: " + self.num + " - Друзья: " + str(self.friends) + " " # Вывод номер рыцаря и его друзей
 
    __repr__ = __str__
 
    def setFriends(self, friends):
        self.friends = friends
 
    def getFriends(self):
        return self.friends
 
def friend(friends, i): # Задумывается как присваивания "друзей" объекту
    for j in range(n):
        if (i % 2) == 0 and (j % 2) != 0:
            friends.append(j)
        elif (i % 2) != 0 and (j % 2) == 0:
            friends.append(j)
    if len(friends) == nFriends:
        knights[i].setFriends(friends)
 
def sort(t): # для того чтобы рассадить рыцарей
    for i in range(n):
        for j in range(nFriends):
            []
    return t
 
knights = [Knights(f"{i}") for i in range(n)] # Создание списока экземпляров
 
for i in range(n):
    friends = []
    friend(friends, i)
print(knights)
 
print(sort(t))
Выводит:
Введите кол-во рыцарей: 6
[ Рыцарь: 0 - Друзья: [1, 3, 5] , Рыцарь: 1 - Друзья: [0, 2, 4] , Рыцарь: 2 - Друзья: [1, 3, 5] , Рыцарь: 3 - Друзья: [0, 2, 4] , Рыцарь: 4 - Друзья: [1, 3, 5] , Рыцарь: 5 - Друзья: [0, 2, 4] ]
[0, 0, 0, 0, 0, 0]
Миниатюры
Задача круглый стол короля Артура   Задача круглый стол короля Артура  
0
20.12.2021, 09:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.12.2021, 09:26
Помогаю со студенческими работами здесь

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

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

Круглый стол
За круглым столом собралось 10 товарищей. Перед разговором они решили одновременно пожать другу...

Круглый стол. Написать программу
Сегодня Афанасий пришел на день рождения. Все гости будут сидеть за одним круглым столом, всего для...

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

N (n>2) человек садятся за круглый вращающийся стол
n (n>2) человек садятся за круглый стол вращающийся стол. Два размещения по местам будем считать...

Сколькими способами можно посадить n мужчин и n женщин за круглый стол с определенным условием?
Сколькими способами можно посадить n мужчин и n женщин за круглый стол так, чтобы никакие два лица...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru