Programmierwettbewerbe

i_hasser

Grand Admiral Special
Mitglied seit
06.06.2002
Beiträge
18.964
Renomée
85
Standort
IO 0x60
Hi

Im Off-Topic war es ja schon so ein bisschen Normalität, dass ab und zu um die Wette programmiert wurde. Insgesammt gibts dort schon 4 Wettbewerbe, und ich seh keinen Grund warum es das schon gewesen sein soll ;D

Ich würd sagen hier können wir mal alle Ideen zusammentragen - wenn genug da sind gibts eine Abstimmung und einen neuen Wettbewerb.


Alle Wettbewerbe in der Übersicht:

Fibonacci-Coding
Primzahlen
Zahlen faktorisieren
Mandelbrot Algorithmus
Palindrom Zahlen
Primzahlzerlegung

Sortieralgorithmen

Neue Wettbewerbe werd ich hier mit dazuschreiben - also praktisch als Übersicht.

PS Es hindert euch auch niemand daran für einen alten Bewerb Code zu schreiben.
 
Zuletzt bearbeitet:
Wie wär's mit etwas ganz einfachem zu Beginn: Dem zerlegen einer beliebig großen Zahl in zwei Primzahlen. Also nicht im Primzahlfaktoren sondern in zwei eindeutig bestimmte Primzahlen, die miteinander multipliziert die gegebene Zahl ergeben.
Dies ist beispielsweise wichtig zum Knacken von asymmetrischen Verschlüsselungsverfahren wie RSA.

Als kleines Beispiel sei die Zahl 221 gegeben, die beiden gesuchten Primzahlen wären in dem Fall 13 und 17. Natürlich macht man sowas dann nicht für so kleine Zahlen, sondern für 2^32-bit oder gar 2^64-bit.
 
Ver- und Entschlüsselung ist aber auch eine der wenigen Anwendungsmöglichkeiten solcher mathematischen Probleme.
Also ich werd' mich von solchen Wettbewerben gepflegt fernhalten, da ich 1. kein extremes Mathegenie bin und 2. deutlich interessantere Sachen zum Programmieren kenne.
 
Jeder kann Vorschläge einbringen, und letztendlich entscheidet nicht nur die Mathematik über die Geschwindigkeit.
 
Ich dachte eigentlich eher, dass es hier nur Vorschläge gibt. Wenn ein neuer Wettbewerb zustande kommt (ihr könnt natürlich auch Eigeninitiative zeigen und selbst Threads dazu aufmachen - aber bitte nicht für jede kleinigkeit was neues ;)) verlinke ich den ganz oben, so haben wir hier immer eine schöne Übersicht über die Wettbewerbe.

Ich werd vielleicht auch noch Ranglisten mit den aktuellen Ergebnissen dazustellen - mal sehen wie die Resonanz ausfällt, also ihr entscheidet ;)


Zu dem Vorschlag hab ich aber gleich mal eine Frage - ist es überhaupt möglich jede nicht-primzahl durch das Produkt 2er Primzahlen darzustellen?
 
Also wäre es das Ziel ein Prog zu schreiben, dass für sehr große Zahlen (so in der Größenordnung ~1e8 oder größer) gültige Zerlegungen findet.

Nachher mach ich einen Thread auf, jetzt muss ich mich erstmal durch ein paar Seiten hacken *chatt*
 
Ich hab mir das ganze so gedacht. Man nehme zwei sehr große Primzahlen und multipliziere sie. Das Ergebnis dieses Produkts werden wir hier öffentlich im Forum posten und diese Zahl wird jeder als Eingabe nehmen. So hat jeder die gleichen Grundbedingung, nämlich die gleiche Zahl. Und da diese Zahl als Produkt zweier Primzahlen entstanden ist (ich dachte an zwei Primzahlen mit irgendwo zw. 10 und 20 Stellen), wird sie auch eindeutig in diese zwei Primzahlen zerlegbar sein.
 
Neuer Link ist oben drinnen. Ich fang nachher gleich mal an.

Im Primzahlwettbewerb gibts übrigens viel Code zum Ansehen und Kopieren, könnte nützlich sein ;)
 
man sollte eine ganze liste zur verfügung stellen.

es gibt primzahlzerlegungen die auf einer monte-carlo-methode beruhen.
die findet vielleicht bei einer primzahl erst nach 30 minuten eine lösung bei einer anderen aber schon nach 5.


wir hatten damals folgende zahlen zu faktorisieren.
die letzten 3 waren harte Nüsse:


1949565409282837
312133288776418481
11081452861688528621
6864244079350478607287
138773836209286437923293
61798910261151363714617153
3358500928964816112058189853
650529245210957430247918523942340626129
28339826101942000804055230346650049277843956381969
243638409309477122250881359985207551959463158319672956302461
 
Naja, die Frage ist, ob sich diese Zahlen eindeutig durch das Produkt zweier Primzahlen darstellen lassen. Jede Zahl lässt sich faktorisieren, aber nicht jede Zahl lässt sich als Produkt zweier Primzahlen darstellen.
 
das sind alles produkte von 2 primzahlen, errechnet mit maple 9.

bei den letzten haben wir durchschnittlich 10-30 minuten gebraucht diese zu faktorisieren in maple.

Ich erhoffe mir das das ganze in c wesentlich flotter rennt.
 
*lol* Java kommt nicht mal mit der kleinsten oben angegebenen Zahl zurecht ;D Ich werd wohl zwangsweise auf das recht lahme BigInteger zurückgreifen müssen.
 
So langsam brauchen wir mal wieder ein paar neue Ideen... möglichst mal was ohne große Zahlen ;)

Ich glaub bisher hat wirklich alles den 2^32 Rahmen gesprengt.
 

Ich bin sogar der Meinung, dass jetzt mal was "unmathematisches" kommen sollte.
(wenn man das überhaupt sagen kann, ganz ohne geht's ja nicht ;D )

Hier mal ein paar Vorschläge, die allerdings in etwas Arbeit ausarten könnten:
- Funtions-Plotter
- Komprimierung von einer (Text-)Datei o.Ä.
- Textverschlüsselung
- vielleicht eine Simulation von irgendwas (z.B. Ball in einem rotierenden Würfel)

Solche Sachen würden mich interessieren.
Geht halt nicht immer als Wettbewerb auf Zeit aber ist mal was anderes als immer nur
"pure" Mathematik (und sprengt den 2^32 Rahmen nicht)
 
Naja...

Funktionsplotter: Was soll man da großartig programmieren?

Komprimierung von einer (Text-)Datei o.Ä.: Ja, das wäre mal interessant.

Textverschlüsselung: Gibts Verfahren wie AES die sicher sind. Solche selbstgeschriebenen Dinger haben zu 99.95% irgendwo eine Schwachstelle.

vielleicht eine Simulation von irgendwas (z.B. Ball in einem rotierenden Würfel): Ja, das wäre aber wieder mathematisch ;)
 
Moin,

promille.jpg


also wenn ich auf Start klicke geht ein Timer los der zufallig bestimmt wann das signal rot wird! wenn signal rot ist geht der andere Timer los der die zeit misst bis ich auf bestätigen klicke! dann wird das Feld "fahrtüchtigkeit" farbig (wobei das prog dann entscheidet welche farbe an zuzeigen ist Farbe Grün, Gelb, Rot) wärend dessen wird auch die vezögerung in ms angezeigt!

mfg
Schmokkie
 
Original geschrieben von Schmokkie
also wenn ich auf Start klicke geht ein Timer los der zufallig bestimmt wann das signal rot wird! wenn signal rot ist geht der andere Timer los der die zeit misst bis ich auf bestätigen klicke! dann wird das Feld "fahrtüchtigkeit" farbig (wobei das prog dann entscheidet welche farbe an zuzeigen ist Farbe Grün, Gelb, Rot) wärend dessen wird auch die vezögerung in ms angezeigt!
Weiß nicht, ob dazu der normale Windows-Timer (der VB-Timer ist am Ende nix anderes) geeignet ist. Der Windows-Timer hat im günstigsten Fall eine Auflösung von 10 ms, meistens ist sie aber schlechter. Ich könnte mir vorstellen, dass das schon zu ungenau ist. Deshalb müsste man da wennschon den High-Resolution-Timer von Windows bemühen.
Wie's diesbzgl. unter anderen OS aussieht, weiß ich nicht.

(das mal als Hinweis)
 
Und Ziel ist es nun durch geschickte Optimierungen dem User eine möglichst lange Reaktionszeit unterzujubeln?

Nein, mal ernst ;) - was könnte man da optimieren?
 
So, jetzt hab ich mal den Sortieralg Thread dazugepackt. Hätte ehrlich nicht gedacht, dass sich da so schnell was schnelleres als zb. Mergesort oder Radixsort finden würde.
 
Mir ist mal wieder was eingefallen. Eigentlich was total simples, es gibt ja diverse Möglichkeiten um den Viginere-Algorithmus schneller als per Brute Force zu knacken.

Die Verfahren selbst haben sich alle bewährt und gibts frei im Internet nachlesbar, interessant wäre es ja aber mal sowas auf Geschwindigkeit zu optimieren.

Also wir haben einen Text der mit einem Key verschlüsselt ist, und lassen den mit einem (oder mehreren) der Algorithmen knacken. Nach den Algorithmen ist der eigentliche Key definitiv mit bei der Lösung, interessant ist nun wie lange das ganze dauert.


Ist mal was anderes und imho recht vielseitig. Wie sieht's aus?
 
Alternativ könnten wir uns auch einfach irgend einen Algorithmus vorgeben und den dann per Assembler schwerst auf irgendeine CPU optimieren - wäre mal was anderes als das bisherige Suchen nach besseren Algorithmen.

Och kommt schon, irgendwer hier muss doch noch Lust zum Proggen haben?!? D'Espice, wo bist du???
 
Einen wunder schönen guten Morgen!

Ich komme vielleicht etwas spät, aber die Idee solcher Wettbewerbe finde ich persönlich ganz gut! Besonders da man die Codes anschließend ja Diskutiert, so das jeder seinen Nutzen daraus ziehen kann. Sollte in der nächsten Zeit so etwas noch mal veranstaltet werden wäre ich gerne dabei. ;) Es sollte dann allerdings nicht auf Zeit sein, da ich unter der Woche immer Relative viel zutun habe.

Wie sieht es da mit Programmiersprachen aus? Sind die in irgendeiner Form beschränkt? Oder sind spezielle Sprachkonstrukte dann nicht erlaubt?
 
Ging ja bisher auch nicht auf Zeit ;).

Die Sprachen sind eigentlich recht frei. Aber natürlich hast du mit C/++ den Vorteil, dass ein gleicher Algorithmus praktisch immer schneller ist als in einer anderen Sprache (mal von Assembler abgesehen).

Konstrukte sind natürlich auch alle frei. Allerdings ist es schneller OO zb. in C, spezifisch auf den Zweck abgerichtet, zu benutzen, als in C++.
 
Zurück
Oben Unten