Python :: Aufgabe #361

2 Lösungen Lösungen öffentlich

n kleinste Paarsummen als Array

Anfänger - Python von JKooP - 05.06.2021 um 16:27 Uhr
Gegeben sind 2 sortierte Arrays (arr1, arr2) gleicher oder unterschiedlicher Länge
und eine Zahl (n) welche die maximale Anzahl der kleinsten auszugebenden Paarsummen vorgibt.
Jedes Array kann 1 bis zu 10.000 Zahlen der Größe +-1.000.000 beinhalten.
Der Wert für n soll nicht weniger als 1 und nicht mehr als 1.000 betragen.

Ziel soll es sein, die n kleinsten aller möglichen Paarsummen als Array zurückzugeben.

Beispiele:

arr1 = [1,2,3]; arr2 = [2,3,7]; n = 3
Lösung: [[1,2], [1,3], [2,2]], denn [1,2], [1,3], [1,7], [2,2], [2,3], [2,7], [3,2], [3,3], [3,7]
Summen: 3, 4, 8, 4, 5, 9, 5, 6, 10 => 3, 4, 4

arr1 = [1,1,2]; arr2 = [1,2,3]; n = 2
Lösung: [[1,1], [1,1]], denn [1,1], [1,2], [1,3], [1,1], [1,2], [2,3], [2,1], [2,2], [2,3]
Summen: 2, 3, 4, 2, 3, 5, 3, 4, 5

arr1 = [1,2]; arr2 = [-5]; n = 3
Lösung: [[1,-5], [2,-5]]
Summen: -4, -3

Schreibe eine Methode/Funktion, die obige Aufgabenstellung umsetzt.
Je nach Programmiersprache könne auch Vektoren, Listen, etc. verwendet werden.

Viel Spaß

Lösungen:

vote_ok
von eisheiliger (3750 Punkte) - 17.07.2021 um 19:53 Uhr
Quellcode ausblenden Python-Code

""""
#361: n kleinste Paarsummen als Array
Gegeben sind 2 sortierte Arrays (arr1, arr2) gleicher oder unterschiedlicher Länge und eine Zahl (n) welche die maximale
Anzahl der kleinsten auszugebenden Paarsummen vorgibt.
"""


def kps(arr1, arr2, n):
    arro, arrp, arrq = [], [], []
    for i in range(0, len(arr1)):
        for j in range(0, len(arr2)):
            arro.append([arr1[i] + arr2[j], [arr1[i], arr2[j]]])
    arro = sorted(arro)
    z = min(len(arro), n)
    for i in range(0, z):
        arrp.append(arro[i][1])
        arrq.append(arro[i][0])
    print("Zahlenpaare:", arrp)
    print("Paarsummen: ", arrq)


kps([1, 2, 3], [2, 3, 7], 3)
kps([1, 1, 2], [1, 2, 3], 2)
kps([1, 2], [-5], 3)


vote_ok
von Klaus (1940 Punkte) - 14.08.2021 um 22:37 Uhr
Quellcode ausblenden Python-Code
def solution(list_1, list_2, max_sum):
    solution = []
    for value_1 in list_1:
        for value_2 in list_2:
            if value_1 + value_2 <= max_sum:
                solution.append([value_1, value_2])
    return solution

print(solution(list_1 = [1,2,3], list_2 = [2,3,7], max_sum = 4))
print(solution(list_1 = [1,1,2], list_2 = [1,2,3], max_sum = 2))
print(solution(list_1 = [1,2], list_2 = [-5], max_sum = 3))