Übungen / Aufgaben zu PHP

0 Lösungen
Große Potenzen und Fakultäten
Anfänger - PHP von hollst - 27.09.2016 um 11:24 Uhr
Man zeige numerisch, dass es (wahrscheinlich) keine natürlichen Zahlenpaare (N, K) mit N >= 1 und K >= 1 gibt,
die folgender Gleichung genügen: (N + K)! = N^N (sprich N hoch N). N und K sollen bei der Simulation jeweils <= 1.000 sein.
0 Lösungen
Bombenbauen für Informatiker
Fortgeschrittener - PHP von eulerscheZhl - 21.09.2016 um 07:43 Uhr
XML Bomben machen sich Ersetzungsregeln in XML Dateien zunutze. Diese Regeln können verwendet werden, um riesige Dateien zu erstellen und den Zielrechner so zum Absturz zu bringen (eine genauere Beschreibung findet sich in der Wikipedia oder bei SemperVideo).

In dieser Aufgabe soll es darum gehen, eine möglichst kleine Bombe zu schreiben, die entpackt eine geforderte Mindestgröße hat.
Die XML Bombe soll dabei dem Format des folgenden Beispiels folgen, Zeilenumbrüche werden als ein Zeichen gezählt.

Beispiel:

Konsolenausgabe:

Größe der Bombe eingeben: 2500000
Bombe mit Größe 2588278 und 285 Zeichen gefunden:
<?xml version="1.0"?>
<!DOCTYPE X [
<!ENTITY a "AAAAAAAAAAAAAAAAAAAAAA">
<!ENTITY b "&a;&a;&a;&a;&a;&a;&a;">
<!ENTITY c "&b;&b;&b;&b;&b;&b;&b;">
<!ENTITY d "&c;&c;&c;&c;&c;&c;&c;">
<!ENTITY e "&d;&d;&d;&d;&d;&d;&d;">
<!ENTITY f "&e;&e;&e;&e;&e;&e;&e;">
]>
<X>&f;&f;&f;&f;&f;&f;&f;</X>
1 Lösung Lösung noch nicht öffentlich
Paarungstabellen für Rundenturniere
Anfänger - PHP von hollst - 01.09.2016 um 12:34 Uhr
Bei Sportarten nach einem System "Jeder gegen Jeden" (bspw. Hinrunde Fußballbundesliga) mit N Teilnehmern (N sei gerade, falls nicht, wird ein "Dummyakteur" hinzugefügt) werden insgesamt N - 1 Runden a N/2 Spiele ausgetragen. Zur Festlegung der Paarungen einer Runde kann auf verschiedene Art und Weise vorgegangen werden, bspw. mittels Auslosung. Allerdings ist das Losverfahren unfair (u. a. keine Balance der Heim- und Auswärtsspiele) und findet aus diesem Grunde so gut wie keine praktische Anwendung. Besser geeignet und bspw. bei Schachturnieren Basis sind sogenannte Paarungstabellen nach Berger (siehe z. B. www.schachfreunde-markgraeflerland.de/media/pdf/Turniersysteme.pdf), nachfolgend als Beispiel für ein Turnier mit 10 Teilnehmern aufgelistet:

1. Runde 1-10 2-9 3-8 4-7 5-6
2. Runde 10-6 7-5 8-4 9-3 1-2
3. Runde 2-10 3-1 4-9 5-8 6-7
4. Runde 10-7 8-6 9-5 1-4 2-3
5. Runde 3-10 4-2 5-1 6-9 7-8
6. Runde 10-8 9-7 1-6 2-5 3-4
7. Runde 4-10 5-3 6-2 7-1 8-9
8. Runde 10-9 1-8 2-7 3-6 4-5
9. Runde 5-10 6-4 7-3 8-2 9-1

Solche Tabellen wurden bereis vor dem "Computerzeitalter" mühevoll per Hand erstellt (siehe z. B. http://www.schachclub-forchheim.de/pdfs/Paarungstafeln.pdf), wobei i. d. R. bei einer Teilnehmerzahl von weit unter 30 aufgehört wurde.

Aufgabe ist es ein Programm zu schreiben, das solche Paarungstabellen nach Berger automatisch generiert, wobei die Teilnehmerzahl nach oben nicht begrenzt sei.
2 Lösungen Lösungen noch nicht öffentlich
Zahlenübersetzer für Mark
Anfänger - PHP von Acel007 - 13.08.2016 um 11:05 Uhr
Fred will seinem Freund Mark, der nicht gut Englisch sprechen kann, aber sich darum bemüht, es zu lernen, ein Programm schreiben, welches eine beliebige eingegebene Zahl (von 1 - 999) in die geschriebene, englische Version übersetzt (1 = one, u.s.w). Doch er kann selber nicht gut programmieren und fragt nun dich um Hilfe. Hilf Fred ein Programm zu schreiben, welches die oben beschriebene Aufgabe erfüllt.
(Die englischen Regeln für gescheieben Zahlen müssen eingehalten werden.)
0 Lösungen
Ist das EULER-e Normal?
Anfänger - PHP von hollst - 12.08.2016 um 15:21 Uhr
Man untermauere die Vermutung, dass die EULER-Zahl e Normal ist. Vermutung
deshalb, weil es bis heute nicht bewiesen werden konnte.

Normal ist eine Zahl im mathematischen Sinne dann, wenn alle
Ziffern und Ziffernblöcke in ihrer Zahlenfolge in absolut gleicher
Häufigkeit auftreten, und dies vollkommen zufällig verteilt. Das heißt,
keine der Zahlen von 0 bis 9 (Digit-Länge = 1) darf in den Nachkommastellen
von e häufiger oder weniger häufig vorkommen als eine andere.

Selbst längere Zahlengruppen wie z. B. 00000 oder 99999 (Digit-Länge = 5) dürfen bei
einer normalen Zahl nicht seltener auftreten als z. B. 12345 oder 14159.

In der angehängten ASCII-Datei "euler_1000000_nk.txt" sind die ersten 1.000.000
Nachkomma-Digits von e als Datenbasis für die Aufgabenstellung beigefügt. Untersucht
werden sollen die Digit-Längen von 1 bis 5.
0 Lösungen
23. Nachkommastelle der EULER-Konstanten
Fortgeschrittener - PHP von hollst - 10.08.2016 um 15:51 Uhr
Die EULER-Konstante e ist im Bereich der angewandten Mathematik die mit Abstand wichtigste reelle Zahl.
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
0 Lösungen
Zahlenpyramide in der Konsole ausgeben
Anfänger - PHP von ah3n0bar6us - 21.07.2016 um 13:38 Uhr
Schreibe ein Programm, das folgende Pyramide zunächst als Liste von Zeilen erzeugt und dann ausgibt. Die Zahlen werden bis auf die größte Ziffer gespiegelt und konkateniert. Die Größe der Pyramide soll vorher abgefragt werden.

0 Lösungen
Dart-501 Taschenrechner
Fortgeschrittener - PHP von hollst - 19.07.2016 um 11:25 Uhr
Dart ist hinsichtlich seiner Spielregeln und Ausführung eine recht überschaubare Sportart. Bei der Version Dart-501 beginnen beide Spieler mit einem Punktestand von 501 und müssen diesen auf 0 herunterschießen, wobei die 0 mit einem sogenannten Doppeltreffer (Double) erreicht werden muss. Die Zielfläche ist eine Kreisfläche, die in zwanzig gleichgroßen Kreissegmenten mit unterschiedlicher Grundwertigkeit aufgeteilt ist [Bild 1]. Neben den Kreissegmenten gibt es noch drei Kreisringe und das Auge. Das Auge ist eine kleine Kreisfläche um den Mittelpunkt der Zielscheibe. Die drei Kreisringe sind der Triple-Ring (entspricht dem Radius der Zielscheibe), der Double-Ring (entspricht dem halben Radius der Zielscheibe) und der Auge-Ring (Kreisring um das Auge). Beim Treffen eines der Triple- bzw. Double-Kreisring-Segmente wird die Grundwertigkeitszahl verdreifacht bzw. verdoppelt. Der Augering wird bei einem Treffer mit 25 Zählern gewertet und das Auge zählt immer 50 Punkte, es gilt als Doppeltrefferfläche (2 x 25).

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].
0 Lösungen
Leibnitz-Reihe rekursiv, endrekursiv und iterativ für die Annäherung von Pi
Anfänger - PHP von ah3n0bar6us - 16.07.2016 um 19:40 Uhr
Schreibe drei Programme zur Annäherung an die Zahl Pi mit Hilfe der Leibnitz Formel rekursiv, endrekursiv und iterativ für die Eingabe einer positiven natürlichen Zahl.

Wikipedie, Leibnitz-Reihe
1 Lösung Lösung noch nicht öffentlich
Bestimmung des kleinsten gemeinsamen Vielfachen (kgV)
Anfänger - PHP von Nachbar - 09.07.2016 um 10:08 Uhr
Schreibe ein Programm zur Bestimmung des kgV zweier natürlicher Zahlen (siehe Beispiel zur kgV-Berechnung). Die Berechnung soll ohne Beteiligung des größten gemeinsamen Teilers erfolgen.

Beispielausgabe:
Zahl 1: 5
Zahl 2: 7

kgV: 35
0 Lösungen
Vielecke mit einem Zollstock legen
Fortgeschrittener - PHP von eulerscheZhl - 06.07.2016 um 15:34 Uhr
Mit einem Zollstock soll ein Vieleck gelegt werden. Es zählt dabei nur das Ergebnis, wenn man von oben auf das Vieleck schaut. Wenn der Zollstock mehr Knickstellen hat, als das Vieleck Ecken, gibt es hierfür eine Vielzahl von Möglichkeiten: man kann mehrere Zollsteckteile übereinander legen und die Richtung wechseln, in der man im Kreis läuft.

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?
0 Lösungen
Schach II: vereinfachte Grundstellung
Profi - PHP von hollst - 01.07.2016 um 11:41 Uhr
Eine bis heute und wahrscheinlich auch für immer unbeantwortete Fage ist, ob eine Schachpartie von der Grundstellung aus bei bestem Spiel und Gegenspiel für eine Partei gewinnbar ist oder stets zum Remis verteidigt werden kann.

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