suma elementów dająca target(funkcja)

0

Cześć, ćwicząc na Codewars napotkałem błąd w ostatnim teście mojego rozwiązania, którego kompletnie nie rozumiem(na moje oko wszystko wygląda poprawnie, drugi warunek w if'ie powinien sprawić że nie będzie problemu z indexem -wszystko na screenie oraz z kodem w pastebin), gdy wrzuciłem już napisaną przez siebie napisane rozwiązanie do IDE to ostatnia próba zwraca None. Próbowałem również googlować " 'NoneType" object is not iterable", znalazłem jakiś wątek na stackoverflow, jednak nie znalazłem niczego co by mogło pomóc mi zrozumieć co tutaj się "zadziało".

Aby nie było niedomówień podsyłam kod na pastebin oraz screen z poleceniem do zadania w załączniku.

https://pastebin.com/QsWcMDXD?fbclid=IwAR3rBHeVxJSJUz_GbPMKwF1-7Ujq3_XDB8-m8NNdhoETgakrGfqtvPsoqp4

Również miło by było, gdyby ktoś z was zaproponował jakieś "bardziej kompleksowe" rozwiązanie tego zadania oraz je chociaż w skrócie wytłumaczył, gdyż to moje jak dla mnie trochę bije prostotą i banalnością. Dzięki 😃

1

Jakiego typu jest numbers ? Zobacz też, jak iteruje się po tablicy w Pytonie: https://pl.wikibooks.org/wiki/Zanurkuj_w_Pythonie/P%C4%99tla_for

2
def test(array, target):
    final = []
    for x in range(len(array)):
        for y in range(len(array)):
            if x != y and array[x]+array[y] == target:
                final.append(array[x])
                final.append(array[y])
                return tuple(final)

array = [1,4,2,3,4,5,4,7,3]
test(array, 12)
0
def two_sum(xs, target):
    n = len(xs)
    for i in range(n-1):
        for j in range(i+1, n):
            if xs[i]+xs[j] == target:
                return i, j

Potem zaklep to w O(n lg n) oraz O(n). Brute-force nie przejdzie na interview.

1 użytkowników online, w tym zalogowanych: 0, gości: 1