Auslöser dieses Programm zu entwickeln ist ein Rätsel von Sam Loyd.
"Die Schlacht von Hastings".
Alle Geschichtsstudenten wissen um die Umstände der Schlacht am 14.10.1066.
Die fragliche Stelle, auf die Professor Henry Dudeney verweist, lautet:
"Harolds Mannen waren in Reih und Glied aufmarschiert und bildeten 13 Quadrate,
jedes mit der gleichen Anzahl Männer, und wehe dem verwegenen Normannen,
der gewagt hätte, ihre Befestigungen zu betreten, denn schon ein einziger
Stoß eines angelsächsischen Kriegsbeil würde genügen, seine Lanze zu brechen
und seinen Panzer zu durchbohren."
Zeitgenössische Experten stimmen darin überein, daß die Angelsachsen tatsächlich
in dieser unbeweglichen Formation gekämpft haben.
In
Carmen de Bello Hastingensi, einem Gedicht, das von Guy, dem Bischof von Amiens,
stammen soll, ist davon die Rede, daß die
Angelsachsen wie eine Mauer so fest standen.
Und Henry of Huntingdon spricht vom Viereck wie für eine Burg und für die Normannen undurchdringbar.
Wenn Harolds Streitkräfte in 13 Quadrate geteilt würden, die einschließlich ihm selbst ein einziges großes
Quadrat bilden, wieviel Männer müssen es dann gewesen sein?
Diese Aufgabe borgte sich Loyd von Henry Dudeney, dem britischen Rätselexperten, aus und veränderte
sie erheblich, einmal um sie leichter zu machen, und zum anderen, um ihre historische Glaubwürdigkeit
zu stützen. Dudeneys Version, die in seinen
Amusements in Mathematics zu finden ist, hat 61 Quadrate
mit Männern anstelle von 13.
Das allgemeine Problem von der sich die Aufgabe ableitet, wurde als erstes von Fermat vorgestellt,
obwohl das Ganze als Pellsche Gleichung bekannt wurde.
Der Wert für D kann maximal 9 Stellen betragen. Eine Lösung wird angezeigt bzw. eine Überlaufmeldung.
Unterstützung bei der Kettenbruchberechnung erhielt ich von
Mathematiker.
Viel Spaß beim Testen.
Gruß Fiete
heute ist Welt-Autismus-Tag!
Edit 1: Der Wert für D kann jetzt 9-stellig sein, es ist eine neue Langzahlversion implementiert.
Ich habe von Extended jetzt auf Int64 umgestellt. Der Algorithmus wurde verbessert, jetzt wird nur noch
überprüft ob Index gerade oder ungerade ist.
Es gibt immer eine Lösung. Für D=410286423278424 habe ich "out of Memory" - Meldung erhalten, Delphi 6.
Die Kettenbruchperiode ist größer 70.000.000, mit einem 64-Bit Delphi gibt es wohl eine Lösung.