Python :: Aufgabe #353

1 Lösung Lösung öffentlich

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ß!

Lösungen:

vote_ok
von eisheiliger (3750 Punkte) - 18.07.2021 um 18:12 Uhr
Quellcode ausblenden 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()


1809826

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.