Найти - Пользователи
Полная версия: Перебор элементов массива
Начало » Python для новичков » Перебор элементов массива
1
SalikhovAbd
Здравствуйте.
Помогите с такой вот задачей:
Имеется набор данных, состоящий из троек положительных целых чисел. Необходимо выбрать из каждой тройки ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 5 и при этом была минимально возможной. Если получить требуемую сумму невозможно, в качестве ответа нужно выдать 0.
Пример ввода:
1 3 2
2 1 2
2 5 1
1 3 4
6 1 1
Вывод:
6

Не могу никак сообразить, как произвести перебор троек из набора, помогите мне с этим, пожалуйста (остальное не нужно).
Romissevd
 a = '1 3 2'
for x in a.split():
    print(int(x))
SalikhovAbd
Romissevd
Нет, это не то.
SalikhovAbd
Romissevd
Нет, это не то.
JOHN_16
Модуль itertools , а именно его функции для комбинаторики
vic57
SalikhovAbd
как произвести перебор троек из набора
преобразуй в двумерный массив
 >>> doc = '''1 3 2
2 1 2
2 5 1 
1 3 4
6 1 1'''
>>> a =[sorted([int(j) for j in i.split()]) for i in doc.split('\n')]
>>> a
[[1, 2, 3], [1, 2, 2], [1, 2, 5], [1, 3, 4], [1, 1, 6]]
>>> a0 = sorted([i[0] for i in a])
>>> a0
[1, 1, 1, 1, 1]
>>> t = sorted([i[1] for i in a] + [i[2] for i in a])
>>> t
[1, 2, 2, 2, 2, 3, 3, 4, 5, 6]
>>> for i in t:
	s= sum(a0)
	if s%5:
		print(a0,s)
		break
	a0[-1] = i
	
[1, 1, 1, 1, 2] 6

Rodegast
Это то решение которое ты описал
 >>> st = [(1, 2, 3), (1, 2, 2), (1, 2, 5), (1, 3, 4), (1, 1, 6)]
>>> s = { (x, y, z) for x, _, _ in st for _, y, _ in st for _, _, z in st if sum((x,y,z))%5 }
>>> s
set([(1, 2, 6), (1, 3, 2), (1, 1, 6), (1, 2, 3), (1, 3, 5), (1, 1, 4), (1, 2, 4), (1, 3, 4), (1, 1, 5), 
(1, 1, 2), (1, 2, 5), (1, 3, 3)])
>>> min(s, key=sum)
(1, 1, 2)
>>> sum(min(s, key=sum))
4
А это так как ты хочешь
 >>> st = [(1, 2, 3), (1, 2, 2), (1, 2, 5), (1, 3, 4), (1, 1, 6)]
>>> sum(min([ x for x in st if sum(x)%5 ], key=sum))
6
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB