Как алгоритм использовать для решения задачи?

Рейтинг: 0Ответов: 2Опубликовано: 14.01.2023

не могу понять как решить следующую задачу:

На вход программа получает две строки. В первой находится список целых чисел, разделенных пробелом. Во второй строке программа получает натуральное число group_size. Программа должна определить, можно ли полученный список разделить на группы размера group_size так, чтобы в каждой группе все элементы были одинаковы. На выходе программа должна вывести True или False. Пример входных данных: 0 6 4 4 5 4 5 5 6 5 2 5 5 0 1 3 1 7 7 6 2 1 2 5 0 0 1 6 6 2 Выходные данные: False

Вот я начал так решать:

string='3 2 2 3 3 3 1 4 4 3 2 1 3 4 2 4'
lst=string.split()
lst.sort(reverse=False) #1122223333334444
print(lst)
group=int(2)
print(group)
ind=0
lstgr=[]
#print(type(lstgr))
for i, item in enumerate(lst):
    lst[i]=int(item) #11 22 22 33 33 33 44 44
    for j in range(0,group):
        lstgr.append(lst[i])
    #print(i,lst[i],ind)

отсортировал список, но не понимаю, как можно разделить на необходимые группы и сравнить их? можете подсказать?

Ответы

▲ 0Принят

Это можно сделать так:

string = '0 6 4 4 5 4 5 5 6 5 2 5 5 0 1 3 1 7 7 6 2 1 2 5 0 0 1 6 6 2' # входная строка
group_size = 2 # по сколько группируем

numbers = string.split() # преобразуем в список

for num in set(numbers):
    c = numbers.count(num) # сколько раз число встречается в списке
    if c%group_size: # если кол-во появлений в списке не кратно размеру группы - задача невыполнима
        print(False)
        break
else:
    # сюда программа доходит, если проверила все числа и все прошли проверку кол-ва вхождений
    print(True)
▲ 0

collections.Counter считает одинаковые элементы. После проверяется что все счётчики делятся на размер группы:

import collections


c = collections.Counter(input().split())
size = int(input())
print(all(s % size == 0 for s in c.values()))
$ echo -e "3 2 2 3 3 3 1 4 4 3 2 1 3 4 2 4\n2" | python groups.py
True
$ echo -e "0 6 4 4 5 4 5 5 6 5 2 5 5 0 1 3 1 7 7 6 2 1 2 5 0 0 1 6 6\n2" | python groups.py
False