Übungen / Aufgaben zu Python

Selbst die in der Allgemeinheit bekanntere Kreiszahl pi kann da nicht mithalten.
EULER selbst hat bereits vor dem Jahre 1748 (Bild 1, Introductio in analysin infinitorum, in diesem Buch auf Seite 90) e mit 23 Nachkommastellen angegeben
(bzw. von seinen Schülern zuvor berechnen lassen): e = 2.71828182845904523536028 ...
Eine fantastische Leistung, die sicherlich einige Monate Zeit und Nerven gekostet hat.
Die 23. Nachkommastelle, die 8, muss ein gerundeter Wert sein. Folgende Fragen sollen mit Hilfe von Rechentechnik beantwortet werden:
Wurde die 23. Nachkommastelle von EULER auf- oder abgerundet und welchen Wert hat die 100. Nachkommastelle von e?
Für die Berechnung von e gibt es diverse Formeln, am bekanntesten ist die Aufsummierung aller reziproke Fakultäten der natürlichen Zahlen (e = 1/0! + 1/1! + 1/2! + 1/3! + ...). Der Schwierigkeitsgrad der Aufgabenstellung hängt mit der Umgehung von Rundungsfehlern zusammen. Wer sein Ergebnis abgleichen möchte, kann sich z. B. hier informieren: http://www-history.mcs.st-andrews.ac.uk/HistTopics/e_10000.html

In jeder Runde hat ein Spieler drei Darts, d. h. um "auszuknocken" muss er sich zuvor auf höchstens 170 Punkte heruntergeschossen haben (Knockout möglich mit Triple 20, Triple 20, Auge, also 3*20 + 3*20 + 2*25 = 170). Für 170 gibt es nur diese eine Variante (Sequenz) um direkt auszuknocken, für 169 und 168 sogar überhaupt keine. Wird in einer Runde die 0 unterboten oder die 1 erreicht (niemals mit einem Double auf 0 zu bekommen) bzw. die 0 nicht mit einem abschließenden Double erreicht, wird auf den alten Punktestand zurück gesetzt. Somit hat ein Dartspieler in der Finish-Phase eine Menge Kopfrechenarbeit zu leisten. Z. B. gibt es einige Punktestände, bei denen es über 1000 Möglichkeiten (Sequenzen) für ein Knockout gibt. Hier soll die Computerunterstützung ansetzen.
Schreibe ein Programm, das bei einem Punktestand von unterhalb 171 alle möglichen Knockout-Sequenzen berechnet, speichert und ev. anzeigt [z. B. Bild 2].

Wikipedie, Leibnitz-Reihe

Beispielausgabe:
Zahl 1: 5
Zahl 2: 7
kgV: 35

Um mit einem Zollstock aus vier Teilen ein Dreieck zu legen, gibt es 18 Möglichkeiten (die Zahlen entsprechen den Nummern der Ecken, symmetrische Lösungen sollen als verschieden angenommen werden):
1-2-3-1-2
1-2-3-1-3
1-2-1-3-2
1-3-1-2-3
1-3-2-1-2
1-3-2-1-3
2-3-1-2-3
2-3-1-2-1
2-3-2-1-3
2-1-2-3-1
2-1-3-2-3
2-1-3-2-1
3-1-2-3-1
3-1-2-3-2
3-1-3-2-1
3-2-3-1-2
3-2-1-3-1
3-2-1-3-2
Diese Möglichkeiten sind im Anhang nochmals als animated gif dargestellt.
Wie viele Segmente muss ein Zollstock mindestens haben, um auf mehr als 1000000 Arten ein Fünfeck darstellen zu können?
Wir betrachten hier eine vereinfachte Grundstellung ohne Offiziere (siehe Abbildung), nur die zwei Könige und die Bauern stehen auf ihren Ausgangsfeldern, die Zugregeln sind wie gewohnt, Weiß beginnt. Wir wollen das Spiel für denjenigen als gewonnen ansehen, der als erster einen seiner Bauern bis zur gegnerischen Grundreihe führen konnte. Die Regel "3x gleiche Stellung => REMIS" vereinfachen wir zu "1x gleiche Stellung => REMIS".
Die Aufgabenstellung lautet: Ist die Schachpartie von der vereinfachten Grundstellung aus bei bestem Spiel und Gegenspiel immer gewinnbar oder nicht?
Die Schachregeln wären z. B. hier zu finden: schachregeln

Dabei sollte das Layout des Programms, so aussehen, als wenn man das Spielfeld und die Kreise und Kreuze selbst zeichnet (Also keine perfekten Linien bzw. Kreise). Im Anhang seht ihr, wie es aussehen könnte.
Ein schöner Bonus wäre noch, das Zeichnen zu animieren.

Folgende zwei Randbedingungen: 1) die weißen Königszüge seien Regelkonform, d. h. (z. B.) zwischen weißem und schwarzem König muss stets ein Feld frei sei, u. z. sowohl in diagonaler, horizontaler und vertikaler Richtung. 2) auf seinem Weg zur oberen rechten Ecke darf der weiße König kein Feld betreten, das er bereits einmal betreten hatte (dies würde zu zirkularen Wegen führen mit möglicherweise unendlich vielen Schritten, das sei verboten).
Versuche bitte nicht sofort mit dem 8 x 8 Schachbrett zu beginnen, sondern mit einem kleineren mit 5 x 5 Feldern. Eine mögliche Lösung für diesen Fall ist im Bild dargestellt. Gehe dann zu einem Schachbrett mit 6 x 6 Felder über und erst zum Schluss, wenn du genügend Rechenzeit zur Verfügung hast, zu dem 8 x 8 Felder Brett.

Du hast einen spielsüchtigen Mitbürger getroffen, nennen wir ihn den Banker. Nach einiger Zeit schlägt dir der Banker ein einfaches Würfelspiel vor: du gewinnst, wenn eine gerade Zahl fällt, er, wenn eine ungerade Zahl gefallen ist. Du bist nicht spielsüchtig und erwiders, dass du an einem solchen Spiel, bei dem die Chancen 50 zu 50 stehen, kein Interesse hast. Gewinnen tut nur der, der mehr Glück hat und auf so etwas vertraust du nicht.
Der Banker bleibt hartnäckig. Er schlägt dir vor, dass du nicht nur gewinnst beim Fallen einer geraden Zahl, sondern zusätzlich, wenn die Eins fällt. Hiermit bist du einverstanden, denn deine Chancen sind mit etwa 67 zu 33 wesentlich besser. Doch der Banker sagt: "Halt! Mir ist natürlich klar, dass Du in diesem Fall die bessere Position hast. Als Ausgleich bekommst du im Falle eines Gewinnes aber auch nur 4/6 der Tischgeldes ausgezahlt, der Rest geht an mich zurück." Deine Antwort: "Na, dann sind wir ja wieder wie zu Beginn, ich habe kein Interesse."
Der Banker bleibt am Ball: "Okay, im Falle eines Gewinnes bekommst du nicht nur 66,666... % sondern sogar 70 % des Tischgeldes. Den kleinen Nachteil werde ich mit meinem glücklicheren Händchen schon wieder ausgleichen." Gut, das ist dir plausibel und das Spile geht los.
Jetzt zur Aufgabenstellung: Ist es in der Tat wahr, dass du mit den 70 % (leicht) im Vorteil gegenüber dem Banker bist? Zur Beantwortung der Frage gibt es im Prinzip zwei Wege, den experimentellen und den theoretischen. Wir wollen den experimentellen Weg wählen (Simulation). Sowohl du als auch der Banker haben in jeder Runde ein Grundgeld von 100 €. Der Einsatz bei jeder Würfelung sein 1 € und eine Runde geht über 100 Würfe (somit brauchst du im dümmsten Fall, falls du wirklich jeden der 100 Würfe einer Runde verlieren solltest, trotzdem keine Bankrotterklärung abgeben). Die Frage lautet: Wie oft hast du im Mittel am Ende einer 100-Würfe-Runde mehr als deine 100-€-Startgeldmenge auf deiner Seite?
PS: Falls dir dein Simulationsergebnis irgendwie komisch vorkommt, versuche doch durch Überlegung (theoretischer Weg) herauszubekommen, ob deine Simulation nicht doch richtig sein könnte.

Einführung:
Zitat:
Pig Latin (engl.; wörtlich: Schweine-Latein) bezeichnet eine Spielsprache, die im englischen Sprachraum verwendet wird.
Sie wird vor allem von Kindern benutzt, aus Spaß am Spiel mit der Sprache oder als einfache Geheimsprache, mit der Informationen vor Erwachsenen oder anderen Kindern verborgen werden sollen.
Erklärung:
Zitat:
Beginnt das Wort mit einem Konsonanten, so wird der initiale Konsonant oder Konsonantencluster ans Ende des Wortes verschoben und ein „ay“ angehängt. Zu betrachten ist hierbei nicht die Rechtschreibung, sondern die tatsächliche Aussprache: „Stumme“ Konsonantenbuchstaben, wie z. B. das „h“ in „honor“, sind keine Konsonanten.
loser → oser-lay
button → utton-bay
star → ar-stay
three → ee-thray
question → estion-quay
happy → appy-hay
Pig Latin → Ig-pay Atin-lay
Beginnt das Wort mit einem Vokal oder einem stummen Konsonanten, so wird direkt ein „ay“ angehängt.
eagle → eagle-ay
America → America-ay
honor → honor-ay
Aufgabe:
Schreibt ein Programm welches ein belibiges Wort ins Schweine Latein umwandelt und ausgibt. Auf die Regel mit Stummen H's kann man verzichten.