Übungen / Aufgaben zu Python

0 Lösungen
Gewinnwahrscheinlichkeit bei Cayley's Mousetrap
Fortgeschrittener - Python von hollst - 13.02.2019 um 10:56 Uhr
Mousetrap ist der Name eines Spiels, das vom englischen Mathematiker Arthur Cayley 1878 erfunden wurde [1].
Wie Cayley auf den Namen Mousetrap (Mausefalle) gekommen ist, ist unbekannt. Das Spiel hat große Ähnlichkeit mit
dem im achtzehnten Jahrhundert in Frankreich beliebten Kartenspiel TREIZE ("treize" heißt übersetzt "dreizehn").

In Cayley's Spiel werden Karten mit den Nummern 1 bis n (z. B. n = 13 (Rommé-Bridge-Canasta-Blatt ohne Joker))
gemischt und zu einem Kreis mit ihren Nummern (Farben) nach oben angeordnet.
Bei z. B. 13 Karten stehen Ass für 1, Bube für 11, Dame für 12 und König für 13.

Dann beginnt der Spieler zu zählen, startend bei der zuerst gelegten Karte und mit der Zahl 1. Hat die erste Karte nicht den Wert 1,
wechselt er zur nächsten Karte im Kreis (Uhrzeigerrichtung) und prüft, ob sie den Wert zwei hat. Dies wird solange fortgeführt,
bis die "Zählzahl" mit dem Wert einer Karte übereinstimmt. In diesem Fall wird die entsprechende Karte aus dem Kreis entfernt und
die Zählung bei der folgenden Karte wieder mit 1 begonnen. Dies wiederholt man solange bis entweder keine Karten mehr
auf dem Tisch liegen (Gewinn) oder beim Zählen die Zahl n + 1 erreicht wurde (Verlust).

Beim französchen TREIZE hat mat Wetten darauf abschließen können, ob eine gegebenen Startmischung zum Gewinn oder zum Verlust führt.

Wir wollen die Gewinn-/Verlustwahrscheinlichkeit programmtechnisch berechnen (n < 13) bzw. abschätzen (13 <= n <= 52).

Warum die Unterscheidung n < 13 und n >= 13? Da Fakultät(13) = 13! = 6.227.020.800 (Anzahl aller möglichen Mischungen bei 13 Karten)
bereits größer ist als z. B. C#-ulong.MaxValue (4.294.967.295) kommen wir sehr schnell an die Grenzen der praktischen Berechenbarkeit.
Daher bei Kartensätzen mit mehr als 12 Karten lediglich eine Abschätzung der Wahrscheinlichkeit. Natürlich kann jeder diese "Grenze"
für sich selber festlegen.

Viel Spaß!

[1] A. Cayley: On the game of Mousetrap. Quarterly Journal of Pure and Applied Mathematics, VOL. XV, 1878, pp 8 – 10
1 Lösung Lösung noch nicht öffentlich
Random Walk der Liouville Serie
Fortgeschrittener - Python von hollst - 16.01.2019 um 16:20 Uhr
Die Liouville Serie ist eine Zahlenfolge, die nur aus den Zahlen +1 und -1 besteht.

Sie beginnt mit {1, -1, -1, 1, -1, 1, -1, -1, 1, 1, -1, -1 ...}. Die ersten 10.000
Glieder sind in der Datei liouville_folge.txt gespeicher und könnten meinetwegen eingelesen werden.

Wer die Glieder der Folge L(n) selber berechnen will, muss wie folgt vorgehen:

1.) Per Definition wird L(1) => +1 gesetzt.
2.) Man zerlege n in all seine Primfaktoren (z. B. 14 = 2 * 7 oder 32 = 2 * 2 * 2 * 2 * 2).
3.) L(n) => +1, falls die Anzahl der Primfaktoren eine gerade Zahl ist, ansonsten L(n) => -1
(also L(14) => +1; L(32) => -1).

Man fasse nun L(n) als eine Schrittfolge auf, die eine Weg in der x-y-Ebene beschreibt.
Ausgehend von der Koordinate (x = 0, y = 0) wird zunächt der x-Wert um Eins erhöht
(entsprechend L(1) = 1), anschließend wird der y-Wert um Eins erniedrigt (entsprechend L(2) = -1)
und immer so fort bis zu L(nmax) (nmax von mir aus 10.000 oder mehr).

Der sich so ergebene Weg (siehe Bild 1 für nmax = 100.000, die Pixelfarbe wechselt zur besseren Illustration alle 10.000 Schritte)
ist gefühlsmäßig ein Zufallsweg (Random Walk). Ob dem wirklich so ist, weiß man bis heute nicht.

Die Programmieraufgabe bestehe nun darin, den Liouville-Weg graphisch darzustellen.

Falls jemand fragt "Was soll der Unfug?": Nun, man geht davon aus, das die Liouville Serie ein Schlüssel
zur Lösung der Riemann-Hypothese (RH) sein könnte. Bekanntlich sind zum Beweis bzw. zur Widerlegung der RH
noch immer eine Million US-Dollar ausgeschrieben.

Also, dann viel Erfolg! Ich drücke die Daumen für den Einemilliongewinn.
0 Lösungen
Texte auf Unterschiede prüfen, diese dann Ausgeben
Anfänger - Python von Exception - 12.01.2019 um 08:49 Uhr
Hallo zusammen,

heute sollt ihr zwei Texte miteinander vergleichen und etwaige Unterschiede herausfinden.

Die gefundenen Unterschiede sollen dann in beiden Texten markiert werden (farblich o.ä.).
Sollten beide Texte identisch sein, kann dies auch per Messagebox o.ä. ausgegeben werden.
Es ist im Endeffekt WinMerge für Arme.

Wer absolut keine Vorstellung hat, wie das später in etwa aussehen kann, der möge hier klicken.

Viel Spaß und ein schönes Wochenende :)
0 Lösungen
Geografische Daten von Städten abfragen und ausgeben bzw abspeichern
Fortgeschrittener - Python von ZRX88 - 01.01.2019 um 13:43 Uhr
Die API https://www.distance24.org/api.xhtml bietet einen API Endpunkt zum Abfragen von Daten zu Städten.

Das Ziel ist, dass mehrere Städte ( beispielsweise Berlin, Hamburg und München) abgefragt werden, dann die Entfernung zwischen den Städten in der Console ausgegeben wird. Dazu soll für jede Stadt zusätzliche Infos wie Bevölkerung und die unterschiedlichen Travelguides ausgegeben werden.

Optional sollen die aufgelisteten Punkte als Datei abgespeichert werden. Wer will kann es auch als drei separate html Dateien abspeichern.
3 Lösungen Lösungen öffentlich
Teufelskreis einer selbstbezüglichen Aussage
Anfänger - Python von hollst - 17.12.2018 um 18:46 Uhr
Die folgende Aussage sei gegeben als String:

"Dieser Satz hat vierzig Buchstaben sowie einen Punkt."


Die Aussage ist natürlich falsch, denn der Satz hat tatsächlich fünfundvierzig Buchstaben.

Ersetzen wir nun in der Aussage das Wort "vierzig" durch "fünfundvierzig" bleibt die Aussage aber trotzdem falsch,

denn der neue Satz hat zweiundfünfzig Buchstaben. Schöner Teufelskreis, oder?


Schreibe ein Programm mit dem überprüft wird, ob es überhaupt eine (ausgeschriebene) Zahl gibt, die oben zu einer wahren Aussage führt.

Viel Spaß!

6 Lösungen Lösungen öffentlich
Body-Mass-Index (BMI)
Anfänger - Python von hollst - 20.11.2018 um 18:23 Uhr
Der BMI ist eine (umstrittene) Kenngröße zur Ermittlung des eigenen Über-/Untergewichtszustandes:

BMI = Körpermasse (kg) / Körpergröße zum Quadrat (m**2).

Er wird wie folgt interpretiert:

Starkes Untergewicht < 16
Mäßiges Untergewicht 16 – < 17
Leichtes Untergewicht 17 – < 18,5

Normalgewicht 18,5 – < 25

Präadipositas 25 – < 30

Adipositas Grad I 30 – < 35
Adipositas Grad II 35 – < 40
Adipositas Grad III ≥ 40

Man schreibe ein Programm, das die zwei Basisdaten (Körpermasse und Körpergröße) entgegennimmt und den
Zustand (Starkes Untergewicht, Mäßiges Untergewicht ... Adipositas Grad III) als Ergebnis mitteilt.

Viel Spaß!

3 Lösungen Lösungen öffentlich
Binärzahlen ohne Doppelnull
Anfänger - Python von hollst - 20.11.2018 um 09:55 Uhr
Es sein z. B. N = 10.000.

Man schreibe ein Programm, das alle natürlichen Zahlen kleiner N auflistet,
die in ihrer binären Repräsentation keine zwei aufeinander folgende Nullen besitzen.

Anmerkung: Führende Nullen werden nicht berücksichtigt, die erste natürliche Zahl, die nicht in der Liste wäre,
ist somit die 4 (4-dezimal = 100-binär).

Viel Spaß!
0 Lösungen
Auszahlung beim Würfelspiel
Fortgeschrittener - Python von telematiker - 05.11.2018 um 20:55 Uhr
Servus Gemeinde,
schreibe ein Programm, das die Auszahlung eines Würfelspiels simulieren soll.
Eingaben sind:
Beliebige Anzahl von Spielern (spieler)
Beliebige Anzahl von Würfelrunden (runden)
Beliebiger Preis pro Runde (preis)
Verarbeitung:
Wenn ein Spieler eine Runde verliert, sollen allen anderen der (preis) pro gut geschrieben werden und dem Verlierer der (preis) abgezogen werden.
Ausgabe:
Es wurden (runden) Runden gespielt mit (spieler) Preis pro Runde war (preis)
Spieler (spieler) hat (guthaben / verlust) €

Beispiel:
Es wurden 5 Runden gespielt mit 3 Spielern Preis pro Runde war 0,50 €
Spieler 1 verliert 3 Runden = -2,00 €
Spieler 2 verliert 2 Runden = -0,50 €
Spieler 3 gewinnt 5 Runden = +2,50 €
3 Lösungen Lösungen öffentlich
Array Vorkommen programmieren
Anfänger - Python von Bryan - 31.10.2018 um 20:20 Uhr
Hallo Zusammen

Kann Jemand von Euch mir da weiter helfen?

Fragestellung des Vorkommen.

Gegeben ist ein Array zum Beispiel mit Zahlen als Werten:
{2, 17, 10, 9, 16, 3, 9, 16, 5, 1, 17, 14}
Schreiben Sie ein Programm, das von einem Array bestehend aus Zahlen prüft, wie viele dieser
Zahlen durch 3 teilbar sind.
Zudem sollen am Schluss die entsprechenden Zahlen ausgegeben werden. Das Programm soll für
beliebige Arrays funktionieren.

Vielen Dank für eure Lösung
0 Lösungen
Objekterkennung in einem Netz mit hexagonalen Zellen (hex-CCL)
Fortgeschrittener - Python von hollst - 19.10.2018 um 14:14 Uhr
Gegeben sei ein (quasi unendlich ausgedehntes) Netz/Gitter mit hexagonalen Zellen (siehe Bild_black_white),
die entweder (zufällig) leer (Weißmarkierung) oder belegt sind (Schwarzmarkierung).

Jede Zelle hat sechs unmittelbare Nachbarzellen. Ist bei einer belegten Zelle eine oder sind mehrere Nachbarzellen gleichfalls belegt,
so werden die entsprechenden Zellen zu einem Zellcluster vereint. Auf diese Weise entstehen im Netz/Gitter
geometrisch unterschiedlich strukturierte Objekte, die vollständig von leeren Zellen umgeben sind.

Die Programmieraufgabe besteht darin, die Anzahl der so konstruierten Objekte zu zählen und unterschiedliche Objekte
mit unterschiedlichen Farben zu markieren (siehe Bild_color_labeled).

Wer sich zu der Problematik etwas belesen möchte, google bitte nach CCL oder connected-component labeling.
Dort wird allerdings in der Regel nicht mit hexagonalen sondern mit quadratischen Zellen (Pixeln) hantiert.

Viel Spaß!
3 Lösungen Lösungen öffentlich
Übung zu For-Schleifen
Anfänger - Python von Blasius18 - 27.09.2018 um 18:41 Uhr
Die Fakultät einer Ganzzahl in den Grenzen von 0<=n<=60
als Konsolenanwendung umsetzen.


Der Anwender wird aufgefordet, eine Zahl in den Grenzen von 0 bis 60 einzugeben.
Das Programm errechnet den Wert und gibt ihn wieder aus.
Um die Entwicklung besser verfolgen zu können wird in jedem Schleifendurchgang der Aktuelle wert der Fakultät beim ,i-ten` schleifendurchgang ausgegeben.

Zusatzfeature (kann..)
gibt der Nutzer eine Zahl > 60 ein, gibt's einen Hinweis und er wird erneurt zur Eingabe einer Zahl 1 < zahl < 60 aufgefordert.
hat er 3 mal eine falsche Zahl eingegeben, bricht das Programm ab.
0 Lösungen
Rundflug über Deutschland
Fortgeschrittener - Python von hollst - 11.09.2018 um 10:19 Uhr
Angenommen, ihr wollt mit eurer Einmot einen Rundflug derart
über Deutschland machen, dass ihr im Direktflug in jeder Landeshauptstadt
der 16 Bundesländer genau einmal landet, dort auftankt und dann weiterfliegt.
Start- und Endflughafen/-platz sei der eurer eigenen Landeshauptstadt.

In welcher Reihenfolge sind die Flugplätze anzufliegen, wenn die Gesamtflugstrecke
die kürzest mögliche sein soll?

Nun gut, es gibt da insgesamt 15! = 1.307.674.368.000 verschiedene Möglichkeit.
Um euren Rechner (etwas) zu entlasten, vereinfachen wir die Sache: Die zwei
Landeshauptstädte Mains und Wiesbaden bzw. Berlin und Potsdam werden auf Grund
ihrer geringen Entfernung zueinander zu jeweils einer Stadt zusammengefasst
(Mains-Wiesbaden und Berlin-Potsdam). Außerdem hat Potsdam je sowieso keinen Flughafen,
dort setzt man bekanntlich auf BER für die Zukunft. Gut, soll man in Preußen
weiter träumen und hoffen.

Für die Aufgabe braucht ihr natürlich eine Entfernungstabelle. Nehmt dafür entweder
einen Autoatlas (die Abweichungen Luftlinie/Staßenlinie seien vernachlässigt) oder
googelt nach "Entfernungstabelle", es gibt diverse Tools davon im Netz. Ihr könnt natürlich
auch die 16 geographischen Ortskoordinaten der Landshauptstädte als Basis nehmen und
damit selbst eine Entfernungstabelle konstruieren.

Viel Spaß!