Python :: Aufgabe #353
1 Lösung
Erzeugung einer Entfernungstabelle
Anfänger - Python
von hollst
- 27.04.2021 um 20:13 Uhr
In der unendlich ausgedehnten euklidischen 2D-Eben wähle man zufällig N unterschiedliche Punkte P1, P2 ... PN. Die XY-Punktkoordinaten seien in Meter bemaßt.
Man schreibe eine Funktion, die P1 ... PN als Input annimmt und als Rückgabe eine Entfernungstabelle als (Double) N x N - Matrix ausgibt. D. h. die Hauptdiagonale ist mit Null besetzt und die Matrix ist bzgl. dieser symmetrisch.
Viel Spaß!
Man schreibe eine Funktion, die P1 ... PN als Input annimmt und als Rückgabe eine Entfernungstabelle als (Double) N x N - Matrix ausgibt. D. h. die Hauptdiagonale ist mit Null besetzt und die Matrix ist bzgl. dieser symmetrisch.
Viel Spaß!
Lösungen:
Python-Code
""" #353: Erzeugung einer Entfernungstabelle In der unendlich ausgedehnten euklidischen 2D-Eben wähle man zufällig N unterschiedliche Punkte P1, P2 ... PN. Die XY- Punktkoordinaten seien in Meter bemaßt. Man schreibe eine Funktion, die P1 ... PN als Input annimmt und als Rückgabe eine Entfernungstabelle als (Double) N x N - Matrix ausgibt. D. h. die Hauptdiagonale ist mit Null besetzt und die Matrix ist bzgl. dieser symmetrisch. """ import random from scipy.spatial import distance def dist(ort): fol, erh = [], [] for i in range(0, len(ort)): for j in range(0, len(ort)): fol.append([i, j]) for i in range(len(fol)): zwi = fol[i] dst = 0 for j in range(0, len(zwi) - 1): dst += distance.euclidean(ort[zwi[j]], ort[zwi[j + 1]]) erh.append(int(dst)) print("und das ist die Entfernungstabelle:") h = int(len(erh) ** 0.5) for i in range(0, len(erh), h): print(erh[i: i + h]) def koord(): orte = [] n = random.randint(4, 10) while n >= 0: neu = [random.randint(0, 50,)] + [random.randint(0, 50,)] if neu not in orte: orte.append(neu) n -= 1 print("Es werden", len(orte), "XY-Punktkoordinaten verarbeitet:") print(orte) dist(orte) koord()