Programmieren mit Python. Schnittmenge und praktische Anwendung in der Messehalle

Programmieren mit Python. Schnittmenge und praktische Anwendung in der Messehalle

14. November 2018 0 Von Simon

Wieviel Miete können wir in der Messehalle verlangen, wenn ein Teil der vermieteten Fläche von der Bühne belegt wird? Wir möchten die Bühne verschieben und die Größe verändern können. Wie bringen wir den Computer bei das auszurechnen? Wir bedienen uns dafür der Programmiersprache Python. Mathematik brauchen wir auch ein bisschen.

Mathematisch ist das Problem bald gelöst. Wir müssen die Schnittfläche von der Bühne mit der zu vermietender Standfläche wissen. Dazu unterlegen wir der gesamten Fläche ein Koordinatensystem.

Ohne Bühne wird der Stand 4 Meter breit und beliebig (x Meter) lang sein. Er darf aber nicht verschoben werden. Daher sind die Koordinaten in der oberen rechten Ecke der Standfläche (4,x). Die Bühne aber verschieben wir nun in der gesamten Halle und wir wollen sofort wissen, auf wieviel Miete wir dann verzichten müssen.

Die Größe und Lage der Bühne ist ganz klar, wenn wir ihre zwei Eckpunkte wissen Punkt A mit den Koordinaten (a1 und a2) und Punkt B mit (b1 und b2).

Unsere Funktion in Python wird erst fünf Eingangsparameter haben und am Ende eine Zahl ausgeben. Die Eingangsparameter sind: a1, a2, b1, b2, x. Ausgeben wird die Funktion die Fläche, die die Bühne von der Standfläche belegt.

Hier folgt unser kommentierte Python-Programmcode. Er hat fünf Funktionen bzw. Methoden. Der Methode „Schnittmenge“ übergeben wir die Eingangsparameter. Sie ruft die Unterfunktionen auf, die die Parameter übersichtlich verarbeiten. Die Ergebnisse werden dann in „Schnittmenge“ wieder zum Ausgangsparameter aggregiert, der gesuchten Fläche.

def Schnittmenge(h, a1, a2, b1, b2):
„“““
#Wir Berechnen in dieser Hauptfunktion den Flächeninhalt der Schnittmenge von Bühne und Standfläche in dem Koordinatensystem, der Messehalle. Hier rufen wir die Unterfunktionen Standardisierung, Überschneidung, X-Kante und Y-Kante auf. Mit den standardisierten Koordinaten überprüfen wir, ob sich die Bühne mit der vermietbaren Standfläche überschneidet und wenn ja, berechnen wir mit den beiden Kantenlängen die Schnittfläche.
@param: int h Eingabewert
@param: int a1 Eingabewert
@param: int a2 Eingabewert
@param: int b1 Eingabewert
@param: int b2 Eingabewert
@return: int A Ausgabewert
@return: string result strings

„““““
(a1, a2, b1, b2) = Standardisierung( a1, a2, b1, b2 )
#Aufruf der Standardisierungsprozedur a-links unten b-rechts oben
if h >= 0:
#die Standfläche soll in ihrer Länge im rechten oberen Quadranten des Koordinatensystens variieren.
if True == Überschneidung( h, a1, a2, b1, b2 ):
#Aufruf der Prüfung, ob Schnittflächen zwischen den beiden Rechtecken vorliegen.
A = get_delta_x1( a1, b1 ) * get_delta_x2( h, a2, b2 )
#Berechnung der Schnittflächengröße mit den Prozeduren Länge der Kante x1 und Kante x2
print( „Der Flaecheninhalt des resultierenden Rechtecks betraegt “ ,A, “ FE.“ )
#Ausgabe des Ergebnisses
return A else:
print( „Der Schnitt der gegebenen Rechtecke ist leer.“ )
#Ein Ergebnis der Prüfung auf Schnittpunjkte
else:
print( „Falsche Eingabe“ )
#Ein Ergebnis, falls die Länge des Standes falsch eingegeben ist. h<0.

def convert_to_standard(a1, a2, b1, b2):
„““
#Standardisierung der Eingabewerte: Wir wollen auch der Übersicht halber, dass der Punkt A(a1,a2) immer unten links der Bühne liegt. Wir überprüfen mit Ungleichungen in zwei if-Fällen und geben und tauschen notfalls Koordinaten.
@param: int a1 Eingabewert
@param: int a2 Eingabewert
@param: int b1 Eingabewert
@param: int b2 Eingabewert
@return: int a1 Ausgabewert
@return: int a2 Ausgabewert
@return: int b1 Ausgabewert
@return: int b2 Ausgabewert
„““““
if a1 – b1 > 0:
a = a1
a1 = b1
b1 = a
if a2 – b2 > 0:
b = a2
a2 = b2
b2 = b
#print( a1, a2, b1, b2 )
return a1, a2, b1, b2

def intersects(h, a1, a2, b1, b2):
print( h, a1, a2, b1, b2 )
„““
#Wir prüfung darauf, ob eine Schnittfläche zwischen Bühne und Standfläche existiert. Dazu muss b1, b2 rechts über dem Nullpunkt des Koordinatensystems liegen und a1,a2 links unter der rechten oberen Ecke (4,x) des Standes sich befinden.
@param: int h Eingabewert
@param: int a1 Eingabewert
@param: int a2 Eingabewert
@param: int b1 Eingabewert
@param: int b2 Eingabewert
@return: bool Ausgabewert
@return: string Ergebnis
„““““
if b1 > 0 and b2 > 0 and a1 < 6 and a2 < h:
a = True
else
:
a = False
#print( a )
return a

def get_delta_x1(a1, b1):
„“““
#Berechnung der Kantenlänge 1. Theoretisch kann die Bühne ja nun, da wir sie auch in der Größe verändern wollen auch vollständig innerhalb der Standfläche liegen. Sie kann auch viel größer als der Stand sein und darüber liegen. Oder nur Teile, wie auf der Abbildung einnehmen. Z.B. auch nicht nur eine Ecke sondern über eine gesamte Kante der Bühne hinwegreichen. Dazu folgende Ungleichungen:
@param int a1 Eingabewert
@param int b1 Eingabewert
@param int x1 Ausgabewert
„““““
if a1 <= 0 and b1 >= 6:
x1 = 6
elif a1 <= 0 and b1 <= 6:
x1 = b1
elif a1 >= 0 and b1 <= 6:
x1 = b1 – a1
elif a1 <= 6 and b1 >= 6:
x1 = 6 – a1
#print( x1 )
return x1

def get_delta_x2(h, a2, b2):
„““
#Berechnung der Kantelänge 2 funktioniert wie bei Kante eins.
@param int h Eingabewert
@param int a2 Eingabewert
@param int b2 Eingabewert
@param int x2 Ausgabewert
„““““
if a2 <= 0 and b2 >= h:
x2 = h
elif a2 <= 0 and b2 <= h:
x2 = b2
elif a2 >= 0 and b2 <= h:
x2 = b2 – a2
elif a2 <= h and b2 >= h:
x2 = h – a2
#print( x2 )
return x2

Der Programmcode funktioniert so, wenn Du die Hauptfunktion gemäß Syntax von Python aufrufst und die Variablen h,a1,a2,b1,b2 mit Werten belegst.
Schnittmenge(h, a1, a2, b1, b2)

SZ, 14.11.2018
SZ, 15.09.2022

nach Programmieren mit Python. Schnittmenge und praktische Anwendung in der Messehalle