Python :: Aufgabe #315

1 Lösung Lösung öffentlich

Gleichwertige Zahlenpaare zählen/auflisten

Anfänger - Python von JKooP - 09.01.2021 um 16:17 Uhr
Erstelle eine Methode/Funktion, mit der es möglich ist, aus einem beliebig großen Array/Liste
die Anzahl aller gleichwertigen Zahlenpaare auszugeben.
Wer möchte, kann natürlich die Zahlenpaare bzw. Indizes zusätzlich mit ausgeben.

Beispiele:

[1, 2, 3, 1, 1, 3] => 4 gleiche Zahlenpaare
mit den Indizes: (0, 3), (0, 4), (3, 4), (2, 5)
und den Lösungen: (1, 1), (1, 1), (1, 1), (3, 3)

[1, 1, 1, 1] => 6 gleiche Zahlenpaare
mit den Indizes: (0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)
und den Lösungen: (1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)

[1, 2, 3, 4] => 0 gleiche Zahlenpaare

Hier gibt es verschiedene Herangehensweisen:

Lösung 1 (einfach): Verschachteln mehrerer Schleifen
Lösung 2 (schwieriger): nur eine Schleife

Vielleicht kann man es sogar mittels Fakultät und Binomialkoeffizient berechnen?!
Ich habe dafür ad hoc auch noch keine Lösung. Es gibt hier bestimmt die eine oder andere gute Idee.

Viel Spaß

Lösungen:

vote_ok
von eisheiliger (3750 Punkte) - 12.02.2021 um 09:15 Uhr
Quellcode ausblenden Python-Code
"""
# 315 Gleichwertige Zahlenpaare zählen/auflisten
Erstelle eine Methode/Funktion, mit der es möglich ist, aus einem beliebig großen Array/Liste
die Anzahl aller gleichwertigen Zahlenpaare auszugeben.
"""

arr = []
ar1 = []
ar2 = []
sta = 0

while True:
    zahl = int(input("Bitte positive Ganzzahl eingeben, negative Zahl = Eingabeende: "))
    if zahl >= 0:
        arr.append(zahl)
    else:
        break

# arr = [1, 2, 3, 1, 1, 3]
# arr = [1, 1, 1, 1]
# arr = [1, 2, 3, 4]


for i in range(0, len(arr) - 1):
    sta += 1
    for j in range(sta, len(arr)):
        if arr[i] == arr[j]:
            ar1.append([i, j])
            ar2.append([arr[i], arr[j]])
            j += 1
        else:
            continue
print(ar1)
print(ar2)

1800891

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.