Так вышло, что накануне Нового года встретились Санта-Клаус и Дед Мороз и решили выяснить, кто из них круче. Для этого они сыграли в игру «камень-ножницы-бумага».
Санта-Клаус выбросил «камень» дважды, «ножницы» четырежды и «бумагу» четырежды. Дед Мороз выбросил «камень» трижды, «ножницы» шесть раз и «бумагу» один раз. Ни одной ничьей не было.
Кто из них победил и с каким счётом?
Поначалу кажется, что задачка сложная, но давайте разберём её на составляющие. Вспомним, кто какие знаки выбросил.
Санта-Клаус:
- «камень» 🤜 — 2,
 - «ножницы» ✌️ — 4,
 - «бумага» 🫱 — 4.
 
Дед Мороз:
- «камень» 🤜 — 3,
 - «ножницы» ✌️ — 6,
 - «бумага» 🫱 — 1.
 
Поскольку по условию ничьих не было, получается, что Дед Мороз выбросил «ножницы» 6 раз не в те раунды, когда их выбросил Санта-Клаус. Тогда выходит, что эти шесть раундов были сыграны так:
- Дед Мороз ✌️ — 🤛 Санта-Клаус (победил Санта-Клаус);
 - Дед Мороз ✌️ — 🤛 Санта-Клаус (победил Санта-Клаус);
 - Дед Мороз ✌️ — 🫲 Санта-Клаус (победил Дед Мороз);
 - Дед Мороз ✌️ — 🫲 Санта-Клаус (победил Дед Мороз);
 - Дед Мороз ✌️ — 🫲 Санта-Клаус (победил Дед Мороз);
 - Дед Мороз ✌️ — 🫲 Санта-Клаус (победил Дед Мороз).
 
Теперь посмотрим, какие броски остались: Санта-Клаус четырежды выбросил «ножницы». Тогда исход раундов получается такой:
- Дед Мороз 🤜 — ✌️ Санта-Клаус (победил Дед Мороз);
 - Дед Мороз 🤜 — ✌️ Санта-Клаус (победил Дед Мороз);
 - Дед Мороз 🤜 — ✌️ Санта-Клаус (победил Дед Мороз);
 - Дед Мороз 🫱 — ✌️ Санта-Клаус (победил Санта-Клаус).
 
Посчитаем количество побед каждого:
- Дед Мороз — 7,
 - Санта-Клаус — 3.
 
Получается, что выиграл Дед Мороз, и он круче Санта-Клауса! Но мы и не сомневались :-)
Призовём силу машин и победим эту задачу простым перебором. Логика будет такая:
- Создаём списки знаков каждого и перемешиваем их.
 - Берём первый список Деда Мороза из числа перемешанных и сравниваем его поэлементно с первым списком Санта-Клауса из числа перемешанных.
 - Если есть одинаковые элементы на одних и тех же позициях — переходим к следующему списку.
 - Если одинаковых элементов не было, считаем результат игры. Если таких результатов в списке нет — добавляем их в список. Идея в том, чтобы не добавлять туда одинаковые результаты, а только те, что различаются.
 - В конце выведем все найденные результаты.
 
Запишем всё это на языке Python:
import itertools
dm = ['к', 'к', 'к', 'н', 'н', 'н', 'н', 'н', 'н', 'б' ]
sc = ['к', 'к', 'н', 'н', 'н', 'н', 'б', 'б', 'б', 'б' ]
print('Перемешиваем комбинации Деда Мороза')
dm_all = list(itertools.permutations(dm))
print('Перемешиваем комбинации Санта-Клауса')
sc_all = list(itertools.permutations(sc))
dm_win = 0
sc_win = 0
dm_win_list = []
sc_win_list = []
print('Пожалуйста, подождите немного, перебираем все варианты')
for i in range(len(dm_all)):
    for j in range(len(sc_all)):
        dm_win = 0
        sc_win = 0
        # если есть одинаковые элементы на одних позициях — идём к следующей комбинации
        if dm_all[i][0] == sc_all[j][0] or dm_all[i][1] == sc_all[j][1] or dm_all[i][2] == sc_all[j][2] or dm_all[i][3] == sc_all[j][3] or dm_all[i][4] == sc_all[j][4] or dm_all[i][5] == sc_all[j][5] or dm_all[i][6] == sc_all[j][6] or dm_all[i][7] == sc_all[j][7] or dm_all[i][8] == sc_all[j][8] or dm_all[i][9] == sc_all[j][9]:
            break
        for curr in range(10):
            if dm_all[i][curr] == 'к' and sc_all[j][curr] == 'б':
                sc_win += 1
            if dm_all[i][curr] == 'к' and sc_all[j][curr] == 'н':
                dm_win += 1
            if dm_all[i][curr] == 'н' and sc_all[j][curr] == 'б':
                dm_win += 1
            if dm_all[i][curr] == 'н' and sc_all[j][curr] == 'к':
                sc_win += 1
            if dm_all[i][curr] == 'б' and sc_all[j][curr] == 'к':
                dm_win += 1
            if dm_all[i][curr] == 'б' and sc_all[j][curr] == 'н':
                sc_win += 1
            if dm_all[i][curr] == sc_all[j][curr]:
                dm_win = 0
                sc_win = 0
                break
        # если кто-то победил — заносим в список
        if dm_win != 0 or sc_win != 0:
            if dm_win not in dm_win_list and sc_win not in sc_win_list:
                dm_win_list.append(dm_win)
                sc_win_list.append(sc_win)
for i in range(len(dm_win_list)):
    print('Результат: Дед Мороз: ' + str(dm_win_list[i]) + ' Санта-Клаус: ' + str(sc_win_list[i]))
