Aktywne Wpisy
Weźcie mi to wyjaśnijcie, bo nie jeden raz jestem świadkiem podobnych sytuacji. Weźmy przykład imprezy: WESELE
Ja z moją kobietą (programista + prawnik) 1-2 w nocy: zaorani, zmęczeni, głowy już wiszą nad stołami dosłownie utrzymywane siłą woli i zaraz zwijamy do domu
w tym samym czasie jakieś robolskie pary typu mechanik/budowlaniec + kasjerka/fryzjerka/monterka produkcyjna zapyerdalający po 12h dziennie wywijają na parkiecie, drą pisdy, pełni energii, dopiero się rozkręcają.
My sen po 8h,
Ja z moją kobietą (programista + prawnik) 1-2 w nocy: zaorani, zmęczeni, głowy już wiszą nad stołami dosłownie utrzymywane siłą woli i zaraz zwijamy do domu
w tym samym czasie jakieś robolskie pary typu mechanik/budowlaniec + kasjerka/fryzjerka/monterka produkcyjna zapyerdalający po 12h dziennie wywijają na parkiecie, drą pisdy, pełni energii, dopiero się rozkręcają.
My sen po 8h,
PrzegrywNaZawsze +386
Eh wspominam stare dobre Mirko. Kto pamięta takie nicki jak marianbaczal, FilzofujacaCalka, SamiecAlfa, SamGamgee, pitrasia, policjaa, Gruszka92, tych dwóch co mieszkali na Bali. Kiedyś to było mirko, teraz nie ma mirko #mirko
(liczby w grupach się nie powtarzają)
Przykład:
Dostępne liczby 1,2,3,4,5,6,7,8,9,10
Podejście numer 1:
GrupaA: 2,4,5,7,9 (suma 27)
GrupaB: 1,3,6,8,10 (suma 28)
GrupaB / GrupaA = 103,7%
Róznica miedzy grupami jest za mała.
Podejście numer 2:
GrupaA: 1,3,6,7,9 (suma 26)
GrupaB: 2,4,5,8,10 (suma 29)
GrupaB / GrupaA = 111,54%
GrupaB jest większa o conajmniej 5% od GrupaA i jest to najmniejsza możliwa różnica spełniająca wymagania.
#programowanie #matematyka #python
Komentarz usunięty przez autora
@glonstar: mam wrażenie że OP zaraz będzie aktualizował specyfikację problemu (✌ ゚ ∀ ゚)☞
A: 1+2+3+4+5 = 15
B: 6+7+8+9+10 = 40
B/A = 266,66%
Oczekiwany wynik to coś najbliżej B/A = 105%
Dopiszę tutaj:
Szukam podpowiedzi jak napisać program (lub z jakiej własności matematycznej skorzystać), który ze zbioru 10 liczb stworzy dwie sumy (po 5 elementów) uwzględniając warunek, iż jedna suma musi być conajmniej 5% większa od drugiej - szukam takich zbiorów liczb gdzie ta różnica wynosi conajmniej 5% ale musi być jak nabliższa tym 5%.
(liczby w grupach się nie powtarzają)
Komentarz usunięty przez autora
@Pan_Qcek: i jak różnica jest >= 5% to jesteś w domu, w przeciwnym wypadku właśnie dotarłeś do ciekawszej części zadania (╭☞σ ͜ʖσ)╭☞
https://repl.it/repls/LumpyFirmExabyte
from itertools import combinations
input = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
allCombs = []
results = []
comb = combinations(input, 5)
for i in list(comb):
allCombs.append(i)
for indexA, itemA in enumerate(allCombs, start = 1):
aaa = itemA
for indexB, itemB in enumerate(allCombs, start = 1):
bbb = itemB
if bool(set(itemA) & set(itemB)) == False:
div = sum(itemA) /
@croppz:
Ale elementów jest 10. To tylko binomial(10,5)= 252 sprawdzeń.
Na oko stwierdzam że problem jest NP-zupełny i niestety nawet jak znajdziesz 1000x lepszy algorytm, to przy większej ilości elementów i tak będzie działał latami.
Sumujesz wszystkie, dostajesz oczywiście sumę ;)
potem obliczasz (chyba nie muszę pisać jak) ile ta mniejsza suma może mieć max.
I sprowadziłeś problem do problemu plecakowego.
Teraz Waga i Wartość to właśnie te liczby. Max waga to wynik który policzyłeś na początku.
I maksymalizujesz wynik(ale nigdy nie przekroczysz tego maxa)
Ta da :)
A tak z ciekawości, to zadanie ma jakiś praktyczny wymiar? Jeśli to nie tajemnica możesz zdradzić do czego Ci to?