Spróbuję pomóc. Tylko czy liczby mogą się powtarzać w tabeli i czy można ja sobie posortować narastająco??
------
Zrobiłem programik ale on jest baaaaaaarrrrrdzo powolny, sugeruje nie odpalać dla większych list niż 10-13 elementów :)
import random
import itertools
def randTab(n):
tab = list()
for i in range(n):
tab.append(random.randint(0, 20))
return tab
t = randTab(8)
#t = [2, 4, 1, 3, 9, 0, 3]
print(t)
candidates = []
shortest_length = 1000
for t0 in itertools.permutations(t, len(t)):
t = t0
for i in range(len(t)):
for j in range(1, len(t)):
if i + j <= len(t):
t1 = t[i:i + j]
t2 = t[0:i] + t[i + j:]
if sum(t1) > sum(t2) and len(t1) <= shortest_length:
candidates.append(list(t1))
shortest_length = len(t1)
result = [t for t in candidates if len(t) == shortest_length]
result2 = list()
for r in result:
r.sort()
if r not in result2:
result2.append(r)
print(r)
UWAGA! Działa powoli, dobry do zamulenia komputera! ;) Spróbuje go poprawić, ale póki co wysyłam wersję taką jaka jest.
Sprawę skomplikowało, że jest to najmniej liczny podzbiór liczb z listy, a nie najmniej liczny podzbiór kolejnych liczb z listy, stąd permutacje z itertools :) Z kolejnymi liczbami poszło szybciej i lepiej, ale niestety to nie to zadanie :)
Ciekaw jestem innych rozwiązań kolegów !!! Chętnie zobaczę lepsze rozwiązania....