Übungen / Aufgaben zu Perl

0 Lösungen
Stände von Koordinaten (Standort) im Umkreis von x km ermitteln
Anfänger - Perl von Gustl - 21.05.2021 um 17:06 Uhr
Erstelle eine Funktion, eventuell mit Hilfe einer Datenbank, welche über die Parameter Location (Latitude & Longitude) und Radius in Kilometer alle Städte in dem Umkreis mit den Koordinaten ausgibt.

Oder eine Liste mit den Koordinaten in diesem Umkreis. Somit können dann die Städte in einer GeoDatenbank ermittelt werden.
0 Lösungen
String abwechselnd neu anordnen
Anfänger - Perl von JKooP - 15.05.2021 um 10:48 Uhr
Gegeben ist ein String (Text) bestehend aus Kleinbuchstaben und Ziffern.
Ziel ist es diesen String neu anzuordnen, sodass sich Kleinbuchstaben und Ziffern abwechseln.
D.h., auf einen Kleinbuchstaben darf kein Kleinbuchstabe und auf eine Ziffer keine weitere Ziffer folgen.
Die Reihenfolge der Zeichen-Gruppen (Kleinbuchstaben bzw. Ziffern) darf nicht verändert werden.
Sind beide Zeichengruppen gleich lang, ist es egal mit welchem Zeichen begonnen wird.
Gibt es keine Lösung, soll ein Leer-String zurückgegeben werden.

Beispiele:
s = "train1234"
Lösung: "t1r2a3i4n"

s = "1234567"
Lösung: "", da nur Ziffern

s = "abcdefg"
Lösung: "", da nur Buchstaben

s = "abcdef123"
Lösung: "", nicht abwechselnd möglich

s = "abcd1234"
Lösung: "a1b2c3d4" oder "1a2b3c4d"

Schreibe eine Methode/Funktion, die obige Aufgabenstellung umsetzt.

Viel Spaß
0 Lösungen
String-Vergleich mit Rücktaste/Backspace
Anfänger - Perl von JKooP - 12.05.2021 um 15:38 Uhr
Gegeben sind zwei Strings (Texte) bestehend aus einer Anzahl (<100) Kleinbuchstaben (a-z) und
Backspaces (Rücktastenzeichen) welche hier als Hashtag/Raute (#) dargestellt werden.
Dabei können die Strings unterschiedlicher Länge sein.
Ziel soll es sein zu überprüfen, ob die beiden Strings (s1, s2) identisch sind.

Beispiele:

s1 = ab#c
s2 = ae#c
Lösung: true ("ac" == "ac"), denn Backspace löscht in s1 das b und in s2 das e

s1 = ab##
s2 = e#f#
Lösung: true ("" == ""), denn Backspace löscht in s1 zuerst das b und dann das a und in s2 zuerst das e und dann das f

s1 = a#c
s2 = ac#
Lösung: false ("c" != "a") , denn Backspace löscht in s1 das a und in s2 das c

s1 = ####
s2 = ###a#
Lösung: true

s1 = abcdefg
s2 = abcder#fr#g
Lösung: true

Schreibe eine Methode/Funktion, die für obige Aufgabenstellung als Ergebnis true/false liefert.

Viel Spaß
0 Lösungen
Reihenfolgeabhängige Teilsequenz(en)
Anfänger - Perl von JKooP - 10.05.2021 um 19:10 Uhr
Gegeben ist ein String (Text) der ausschließlich aus Kleinbuchstaben besteht.
Es soll überprüft werden, ob eine Sequenz - auch in Teilen - reihenfolgeabhängig im gegebenen String vorhanden ist.
Eine Teilsequenz kann auch aus nur einem einzelnen Zeichen bestehen.
Die Sequenz muss immer in der Gesamtheit überprüft werden (nicht nur Teile der Sequenz).

Beispiele:
Text = "abcdefg"
Sequenz ="ace"
Lösung: true; "abcdefg"

Text = "abcdefg"
Sequenz = "aec"
Lösung: false; alle Zeichen vorhanden, aber nicht in der richtigen Reihenfolge

Text = "abcdefg"
Sequenz = "atg"
Lösung: false; "t" nicht vorhanden

Schreibe eine Funktion/Methode, die für obige Aufgabenstellung als Ergebnis true/false liefert.

Viel Spaß
0 Lösungen
Buchstabenkiste (Wörter bilden)
Anfänger - Perl von JKooP - 09.05.2021 um 17:29 Uhr
In einer fiktiven Kiste befinden sich eine vorgegebene Menge an Steinen mit aufgedruckten Kleinbuchstaben (a-z).
Nun soll geprüft werden, ob sich ein vorgegebenes (auch fiktives) Wort mit den in der Kiste vorhandenen Steinen bilden lässt.
Sowohl das Wort als auch der Inhalt der Kiste werden als String (Text) übergeben.

Beispiele:
Wort = "mama"; Kiste = "mneamna"
Lösung: true

Wort = "papa"; Kiste = "aapq"
Lösung: false

Wort = "aabaacbaacbb"; Kiste = "bbaabaaccaaa"
Lösung: false

Achtung: die Wörter sollen aus bis zu 10.000 Zeichen (Kleinbuchstaben) bestehen können.

Erstelle eine Methode/Funktion, die für obige Aufgabenstellung true/false als Ergebnis liefert.

Viel Spaß
0 Lösungen
Suche nach kreuzenden Linien beim Rundreiseproblem
Fortgeschrittener - Perl von hollst - 29.04.2021 um 19:12 Uhr
Beim Rundreiseproblem (auch Traveling Salesman Problem (TSP) genannt) muss ein Rundreisender nacheinander N Orte besuchen ohne einen einzigen zweimal anzufahren. Die letzte Reiselinie soll ihn genau an seinen Start(Heimat)ort zurückführen. Gesucht ist der insgesamt kürzeste Reiseweg für die Runde.

In Bild 1 sind die zu besuchenden Orte schematisch durch blauer Kreise gekennzeichnet und die Reisestrecke durch einen roten Geradenzug. Es wird angenommen, dass es unabhängig von der Lage (den Koordinaten) der (hier 12) blauen Kreise keine Wegekreuzungen beim kürzesten Reiseweg geben kann. Ob das auch bereits mathematisch bewiesen oder nur eine Vermutung ist, entzieht sich meiner Kenntnis [ich wäre für einen entsprechenden Hinweis von einem mathematischen Fachmann sehr dankbar].

Wir wollen diese Annahme durch ein Simulationsprogramm zu widerlegen versuchen, d. h. Ortslagekonstellationen suchen, bei denen der kürzeste Reiseweg mindstens zwei Teilstrecken einhält, die sich kreuzen.

Da es bei N unterschiedlichen Orten insgesamt 0.5 * (N - 1)! verschiedene Rundreisewege der besagten Art gibt, ist man mit N >> 10 sehr schnell am Ende seiner Rechenkunst (selbst mit Hochleistungsrechnern). Es soll für die Simulation daher N maximal 12 sein, aber mindestens 4. Bei N = 4 kann man einfach zeigen, dass eine Rundreise mit Wegekreuzung immer länger ist als der einzige Weg ohne Kreuzung. Aber, gilt das auch für N > 4?

Die Kreuzungsfreiheit kann unter Nutzung der Lösung von Aufgabe Nr. 390 (bei c#) (Schnittpunkt zweier Geraden endlicher Länge) nachgewiesen werden. Insgesamt sollen etwa 1.000 zufällige Ortslagekonstellationen der N Orte erzeugt und hinsichtlich ev. vorhandener Kreuzungen untersucht werden.

Viel Spaß!
0 Lösungen
Erzeugung einer Entfernungstabelle
Anfänger - Perl 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ß!
0 Lösungen
Binärzahl enthält maximal eine Folge von Einsen
Anfänger - Perl von JKooP - 23.04.2021 um 15:37 Uhr
Eine als String (Text) dargestellte Binärzahl (0 und 1) soll dahingehend geprüft werden,
ob sie maximal eine Folge von Einsen enthält. Die Länge der Folge ist beliebig.
Dabei kann die Binärzahl auch vorangestellte Nullen enthalten.

Beispiele:
b = "1100"
Lösung: wahr => 1100 (1 Folge)

b = "1010"
Lösung: falsch => 1010 (2 Folgen)

b = "00111000"
Lösung: wahr => 00111000 (1 Folge)

b = "10000001"
Lösung: falsch => 10000001 (2 Folgen)

Schreibe eine Methode/Funktion, die für obige Aufgabenstellung als Ergebnis true/false liefert.

Viel Spaß
0 Lösungen
Schnittpunkt zweier Geraden endlicher Länge
Fortgeschrittener - Perl von hollst - 20.04.2021 um 10:25 Uhr
In der unendlich ausgedehnten euklidischen 2D-Eben wähle man zufällig vier unterschiedliche Punkte P1, P2, P3 und P4. Gedanklich verbinde man P1 und P2 mit einer geraden Linie L12 sowie P3 und P4 mit einer geraden Linie L34.

Man schreibe eine Funktion, die als Rückgabewert ausgibt, ob sich L12 und L34 schneiden in Abhändigkeit von den Anfangs-/Endpunkten P1 ... P4.

Viel Spaß!
0 Lösungen
Bingo-Lotterie (Spielerweiterung)
Fortgeschrittener - Perl von JKooP - 19.04.2021 um 20:17 Uhr
Ich habe die bereits bestehende Aufgabe
"Klassisches Bingo mit verzögert gezogenen Nummern (C# 243, C++ 220, PY 208, …) von maxi72501"
noch einmal aufgegriffen.

Das Spiel soll dahingehend erweitert werden, dass 22 Zahlen gezogen werden und
der vorab erstelle Spielschein (Aufgabe besteht bereits) damit verglichen wird.

Finden sich fünf Treffer in waagerechter, senkrechter oder diagonaler Reihe heißt das BINGO (siehe Bilder).

Als Ergebnis soll die Anzahl der Gewinne (Einfach-, Zweifach- bzw. Dreifach-Bingo) ausgegeben werden.

Viel Spaß
0 Lösungen
Von eins bis neunhundertneunundneunzig
Anfänger - Perl von eisheiliger - 18.04.2021 um 15:43 Uhr
Setze Zahlen in Zahlenworte um und zwar von ‚1 / eins‘ bis ‚999 / neunhundertneunundneunzig‘.
0 Lösungen
Zahl ist Summe von Potenzwerten zur Basis 3
Anfänger - Perl von JKooP - 18.04.2021 um 12:49 Uhr
Gegeben ist eine Integer-Zahl im Bereich von 1 bis 1.000.000.
Es soll geprüft werden, ob sich diese Zahl als Summe von Potenzwerten
zur Basis 3 darstellen lässt. Die Reihenfolge der Exponenten ist unerheblich.

Beispiele:
n = 12
Lösung: wahr => 12 = 3^1 + 3^2

n = 91
Lösung: Wahr => 3^0 + 3^2 + 3^4

n = 105
Lösung: Falsch

Erstelle eine Methode/Funktion, die für obige Aufgabenstellung als Ergebnis true/false zurückgibt.

Viel Spaß