Interessante Programmieraufgaben?

Hallo,

gibts irgendwo ein Forum, wo „interessante“ Programmieraufgaben zu finden sind?

z.B. hat mir letztens einer erzählt, es gäbe sowas wie automatische Sternennavigation, Kamera guckt in den Sternenhimmel, und sagt Dir, wo du bist. Das auch mal zu versuchen, war echt interessant.
Steganographie in mp3, bmp, docs, oder txt-files geht auch in die Richtung interessant.

Mit „nicht interessant“ meine ich z.B. zum hunderttaustendsten mal einen Bubble-Sort schreiben, ein Stundenplanerstellungsprogramm, und sowas.

Es müssen gar nicht hochtheoretische ungelöste Probleme der Informatik sein, sondern … naja… interessant halt.

Gruss, Marco

Hallo Marco,

mir geht seit ein paar Monaten ein Projekt durch den Kopf, das ich aber noch nicht angefangen habe. Ich bin mir auch nicht sicher, ob es für mich überhaupt realisierbar ist.

Ein Virenschutz für Windows, der auch funktioniert. :smile:

Kein Virenscanner, sondern eine Überwachung der Prozesse und aller ausführbaren Dateien auf der Festplatte.

Ich stelle mir das so vor, daß in einer verschlüsselten Datenbank bekannte Namen, die üblichen Verzeichnisse, Längen und Checksummen von Anwendungen stehen. Das Programm soll den Anwender dann auf Anomalien aufmerksam machen und angeben, warum die Meldung kommt, beispielsweise weil der Name einer Systemdatei in einem Verzeichnis auftaucht, in das es nicht gehört. Der Anwender soll dann entscheiden, ob dieses Programm ausgeführt werden darf.

Das Programm soll alle Aufforderungen, einen Prozess zu starten abfangen, suspendieren, prüfen ob der Prozess ausgeführt werden darf und erst dann die Suspendierung entweder aufheben oder melden daß ein unautorisierter Prozess gestartet werden sollte. Ich hoffe, daß Schadsoftware so daran gehindert werden kann, ausgeführt zu werden.

Die üblichen Virenscanner reagieren ja nur auf Schadsoftware, die sie kennen. Oft erst, wenn es schon zu spät ist. Das Programm soll auf alle Software reagieren und nur die ausführen lassen, von der bekannt ist, daß es sich nicht um Schadsoftware handelt.

Wenn Dir die Idee gefällt und Du Dich damit befassen willst, erzähle es mir bitte, damit wir nicht unnötigerweise gleichzeitig das selbe Programm schreiben. :smile:

Gruß, Rainer

Moien

z.B. hat mir letztens einer erzählt, es gäbe sowas wie
automatische Sternennavigation, Kamera guckt in den
Sternenhimmel, und sagt Dir, wo du bist.

Was hält dich davon ab? Webcam, einige Sternenkarten und ein bisschen Wissen zu Pattern Matching reichen.

Steganographie in mp3, bmp, docs, oder txt-files geht auch in
die Richtung interessant.

Auch das ist drin (zumindest für Bild und Ton. Bei txt und doc wird es richtig komplexer).

Es müssen gar nicht hochtheoretische ungelöste Probleme der
Informatik sein, sondern … naja… interessant halt.

Man könnte auch Zeug wie das http://www.youtube.com/watch?v=IgBQCoEfiMs oder (deutlich einfacher) das http://www.youtube.com/watch?v=c-SSu3tJ3ns nachbauen.

Fast alle Komponenten sind gut dokumentiert und nachbaubar oder gleich als Opensoucre verfügbar. Die Basisbausteine für das erste findet man in libsift, die für das 2. in jimage. OK, man sollte das Resultat nicht komerizell nutzen da alle diese Systeme zumindest in Teilen patentiert sind.

cu

Hallo,

gibts irgendwo ein Forum, wo „interessante“
Programmieraufgaben zu finden sind?

Ich finde es z.B. relativ interessant, Compiler oder Interpreter zu schreiben. Dafür braucht man nicht allzu viel Theorie, und man lernt die Sprache, für die man den Compiler baut, sehr genau kennen. Und man halt (zwischen)Ergebnisse.

Es gibt (auch sonst) sehr viele Open Source-Projekte, die sich über Patches freuen, und wo man interessante Funktionen implementieren kann.

Grüße,
Moritz

gibts irgendwo ein Forum, wo „interessante“
Programmieraufgaben zu finden sind?

such dir doch bei sourceforge|freshmeat|pear orphaned projekte.

Hallo Marco,

ich habe mal angefangen einen Editor für Organigramme zu schreiben. Klingt erstmal banal, aber: Beim Zeichnen des Organigramms hab ich dann aufgegeben.

Als Basis hab ich die Eigenschaften auf MS-EXCEL (ode MS-Office) für solche Objekte verwendet (links/rechts hängend etc.) und zugelassen, das die Größe der Knoten/Blätter unterschiedlich sein kann. Die Quelldaten kann man für die Erfassung als Tree darstellen. Die Herausforderung ist aber eine optimierte Ansicht, wie sie ja für Organigramme üblich ist.

Dabei sind unterschiedliche Längen und Breiten der Äste in zu berücksichtigen. Die aber in Abhängigkeit zu ihren Kollegen zu betrachten sind, von denen man erstmal auch nicht sagen kann, wo die sind. Wie gesagt, ich hab’s dann aufgegeben.

Als Hilfe hab ich dann per EXCEL ein Organigramm-Objekt erstellen lassen und hab dann „abgekupfert“, also das so erstellte Layout gezoomt und in EXCEL Zellen und Linien übersetzt.

Klappt so leidig, aber MS kriegt die Darstellung des Org-Objektes auch nicht optimal hin. Oftmals liegen Knoten/Blätter übereinander. Das wurmt mich halt immernoch. Im Moment ist aber der Bedarf dafür nicht mehr da (grins).

Anwendungen gibt’s sicherlich genug: Z.B. wollte jemand hier aus dem Forum das zur Darstellung von Ahnentafeln einsetzen.

Ich betrachte das als Herausforderung! Unbekannte Strukturen in ein optimales Layout zu übersetzen, ohne Überlappungen und trotzdem möglichst dicht.

mfg

Dirk.Pegasus

Hallo Marco,

Ich mache gerade ein Include-Feature für HTML, mit C++. Der Zweck ist:
Header, Navigation und Footer werden kopiert und bei jedem Artikel redundant eingefügt. Später soll das ein CSS-Layout mit 2 Spalten sein (die übliche Navi-Artikel-Kombination), Kurzfassung:

// gibt die gesamte Datei als char\* null-terminiert zurueck:
char\* openFile(const char \*path);

FILE \*out = fopen("artikel.htm", "wt");
fprintf (out,
 "",
 openFile("header.htm"),
 openFile("navi.htm"),
 openFile("obst/aepfel.htm"),
 openFile("footer.htm")
 );
fclose(out);

Der Artikel „aepfel.htm“ hat so nur den reinen Text drin, mit den bekannten Vorteilen.

Jetzt kann man das natürlich weiter ausbauen:

1
Ein Funktion schreiben, welche die Navi als char-Zeiger zusammen baut und retourniert.

2
Einen CSS-Generator, bei dem ich globale Konstante habe, so viele ich nur will. Ich mache mir Objekte mit Schlüssel-Werte-Paaren, und schreibe sie in eine *.css, oder auch eine *.h mit String-Listen, o.ä., die ich beim nächsten Mal dann einbinde.

2a
Oder ich schreibe Konstante in meine *.css:

/\*
#define bottom\_margin "1.2em"
#define link\_color "darkgreen"
usw.\*/

Jetzt braucht man nur noch eine Navi-Klasse, welche die *.css öffnet, die Konstanten einliest und die Bezeichner der Define-Konstanten durch die Werte ersetzen.

lg
Martin B

Hallo Moritz,

Ich finde es z.B. relativ interessant, Compiler oder
Interpreter zu schreiben. Dafür braucht man nicht allzu viel
Theorie,

Ich denke mal, Assembler muß man schon können, um den Code auf Maschinen-Sprache umzusetzen. Zumindest bei C++ - Compilern ist es doch so m.W…
Und einen Linker brauchen wir, der das noch auf binär umsetzt. Wüsste ich auch nicht, wie das geht.

Wie machst Du den Code-Parser, einfach so:

while (code[i] != ' ') {;}

und dgl., oder nimmst Du Regexe dafür?

lg
Martin B

Jetzt braucht man nur noch eine Navi-Klasse, welche die
*.css öffnet,

sollte natürlich heißen: eine Klasse, das hat mit der Navi nichts zu tun.

Martin B

Ein kleines Teilproblem habe ich schon mal bearbeitet, und zwar ein Programm, das unter einem Vorgegenen Root-Verzeichnis die Subdirectories durchsucht und alle Dateiinformationen verschlüsselt und gepackt irgendwo ablegt.

Allerdings damals mit der Intension Asynchrone Synchronisation von Dateisystemen durchzuführen. So nach dem Motto: A: Ich habe in meinem Baum die Dateien … , was ist bei Dir neuer? B: Ich haette folgende Dateien: Die neueren werden dann übertragen.

Da müsste man die Datumsinformation um einen Hashwert ergänzen und hätte zumindest mal die Information darüber, wenn unerlaubterweise sich ein exe- oder com-hashwert ändert.

Ins Betriebssystem tiefer eingreifen, dazu fehlt mir leider das Wissen :smile:

Wenn Dich die Dateien interessieren, sende ich Dir gerne den Quellcode.

Das mit den Hash-informationen-Baum werd ich auf jeden Fall programmieren, das könnte interessante weitere Anwendungen zulassen.

Gruss, Marco

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

Ein kleines Teilproblem habe ich schon mal bearbeitet, und
zwar ein Programm, das unter einem Vorgegenen Root-Verzeichnis
die Subdirectories durchsucht und alle Dateiinformationen
verschlüsselt und gepackt irgendwo ablegt.

ja, das war mein erster Versuch eine rekursive Prozedur zu schreiben, hab ich auch. :smile:

Allerdings damals mit der Intension Asynchrone Synchronisation
von Dateisystemen durchzuführen. So nach dem Motto: A: Ich
habe in meinem Baum die Dateien … , was ist bei Dir neuer?
B: Ich haette folgende Dateien: Die neueren werden dann
übertragen.

Da müsste man die Datumsinformation um einen Hashwert ergänzen
und hätte zumindest mal die Information darüber, wenn
unerlaubterweise sich ein exe- oder com-hashwert ändert.

Ins Betriebssystem tiefer eingreifen, dazu fehlt mir leider
das Wissen :smile:

Genau da hänge ich zur Zeit auch noch ein wenig. Die Aufforderung an das BS, ein Programm auszuführen muss abgefangen werden und wenn das Programm noch nicht bekannt ist, die Ausführung verhindert werden. Das habe ich noch nicht, alles andere ist reine Tipparbeit.

Wenn Dich die Dateien interessieren, sende ich Dir gerne den
Quellcode.

Danke für das Angebot, den Teil habe ich auch schon, aus demselben Grund wie Du übrigens. :smile:

Gruß, Rainer

Moien

z.B. hat mir letztens einer erzählt, es gäbe sowas wie
automatische Sternennavigation, Kamera guckt in den
Sternenhimmel, und sagt Dir, wo du bist.

Was hält dich davon ab? Webcam, einige Sternenkarten und ein
bisschen Wissen zu Pattern Matching reichen.

Naja, etwas Mathematik wäre auch noch gut, weil, wenn die Muster aus Punktemengen mit verschiedenen Intensitäten bestehen, kann man Symmetrien ausnutzen, die den Standard-Matching-Algorithmen um den Faktor so ungefähr 1000.000 überlegen sind :smile:

Außerdem sind Wolken und störende Lichtpunkte zu berücksichtigen.

Steganographie in mp3, bmp, docs, oder txt-files geht auch in
die Richtung interessant.

Auch das ist drin (zumindest für Bild und Ton. Bei txt und doc
wird es richtig komplexer).

Man braucht nur gute Ideen: Verstecke im reinen Ascii-txt file in den Zeilenumbrüchen. Einmal mit char(13),char(10) und einmal nur mit char(10)
Jeder Zeilenumbruch ein Bit. :smile:

Wenn man die Texte an sich verändern oder extra zum Zweck der Steganographie entwerfen kann, dann ists eigentlich gar kein richtig technisches Problem mehr.

Da kann man mit Hilfe von Rechtschreibfehlern (Lade Duden aus e-Book) oder mit Hilfe der Benutzung von seltenen Synonymen (da hab ich auf anhieb keine Idee zum automatisieren) auch immer mal ein Bit irgendwo dazwischenmogeln.

Es müssen gar nicht hochtheoretische ungelöste Probleme der
Informatik sein, sondern … naja… interessant halt.

Man könnte auch Zeug wie das
http://www.youtube.com/watch?v=IgBQCoEfiMs oder (deutlich
einfacher) das http://www.youtube.com/watch?v=c-SSu3tJ3ns
nachbauen.

Das ist mal wirklich interessant. Da werd ich mich mal drauf stürzen. Danke!

Gruss, Marco

Danke für das Angebot, den Teil habe ich auch schon, aus
demselben Grund wie Du übrigens. :smile:

Naja… das nächste Mal dann :smile:

Gruss, Marco

Hallo,

gibts irgendwo ein Forum, wo „interessante“
Programmieraufgaben zu finden sind?

Ich finde es z.B. relativ interessant, Compiler oder
Interpreter zu schreiben. Dafür braucht man nicht allzu viel
Theorie, und man lernt die Sprache, für die man den Compiler
baut, sehr genau kennen. Und man halt
(zwischen)Ergebnisse.

Google mal nach „repsub“ :smile:

Die Sprache setze ich sogar tatsächlich ein …

Gruss, Marco

hi ich wäre wirklich sehr glücklich wenn du das machen würdest was ich oben gefragt habe… das mit den automatisierten bildausschnitten, so mit ner kleinen eingabefläche…

D

*büdde*

MfG Hansen

Hallo Marco,

ich habe mal angefangen einen Editor für Organigramme zu
schreiben. Klingt erstmal banal, aber: Beim Zeichnen des
Organigramms hab ich dann aufgegeben.

Als Basis hab ich die Eigenschaften auf MS-EXCEL (ode
MS-Office) für solche Objekte verwendet (links/rechts hängend
etc.) und zugelassen, das die Größe der Knoten/Blätter
unterschiedlich sein kann. Die Quelldaten kann man für die
Erfassung als Tree darstellen. Die Herausforderung ist aber
eine optimierte Ansicht, wie sie ja für Organigramme üblich
ist.

Dabei sind unterschiedliche Längen und Breiten der Äste in zu
berücksichtigen. Die aber in Abhängigkeit zu ihren Kollegen zu
betrachten sind, von denen man erstmal auch nicht sagen kann,
wo die sind. Wie gesagt, ich hab’s dann aufgegeben.

Als Hilfe hab ich dann per EXCEL ein Organigramm-Objekt
erstellen lassen und hab dann „abgekupfert“, also das so
erstellte Layout gezoomt und in EXCEL Zellen und Linien
übersetzt.

Klappt so leidig, aber MS kriegt die Darstellung des
Org-Objektes auch nicht optimal hin. Oftmals liegen
Knoten/Blätter übereinander. Das wurmt mich halt immernoch. Im
Moment ist aber der Bedarf dafür nicht mehr da (grins).

Anwendungen gibt’s sicherlich genug: Z.B. wollte jemand hier
aus dem Forum das zur Darstellung von Ahnentafeln einsetzen.

Ich betrachte das als Herausforderung! Unbekannte Strukturen
in ein optimales Layout zu übersetzen, ohne Überlappungen und
trotzdem möglichst dicht.

Sowas hab ich auch mal probiert, allerdings dann ebenfalls aufgegeben, aber wegen Zeitproblemen. Die Idee war ungefähr so:

  1. Plaziere die Knoten nach einem Zufallsmuster und zeichne die jeweiligen Kanten (noch in falscher Länge).
  2. Jeder Knotenpunkt erfärt nun eine Kraft in die Richtung der Kanten. Ist die Kante zu kurz, drückt sie den Knoten, ist sie zu lang, zieht sie am Knoten.
  3. das ganze animieren und gucken, was rauskommt.
  4. Funktionierts nicht (was meistens der Fall ist), dann probiere das Ganze in einem Raum mit einer Dimension mehr. Dabei muss eine Kraft eingebaut werden, die den Graphen plattdrückt. (also orthogonal in die ersten beiden Dimensionen).

Das hat zwar funktioniert aber schon für ein Organigramm mit 80 Knoten so aufwändig, dass man eine Stunde einen 3.4 GHz -Rechner beschäftigen kann.

Man kann zwar noch an den Kräften und an der Simulation rumoptimieren, aber viel hat das (bei mir) auch nicht gebracht.

Ich glaube, das Problem ist so kompliziert, weil es echt viele verschiedene Lösungsansätze gibt, und man wahrscheinlich immer einen Graphen findet, bei dem ausgerechnet der gewählte Lösungsansatz schlecht ist.

Ich hab jedenfalls bei mehreren Graphenzeichenprogrammen immer einen gefunden, bei dem der Algorithmus versagt oder ein ziemlich blödes Ergenis liefert :smile:

Gruss, Marco

3D-Turtle

Hallo,

gibts irgendwo ein Forum, wo „interessante“
Programmieraufgaben zu finden sind?

Programmier doch mal ein 3D-Turtlegrafik-Programm

Wenn Dir das nicht reicht, ein 4D-Turtle.

Ansonsten habe ich mal versucht ein Magic-Eye 3D-Animationsprogramm zu schreiben. Mit dem „normalen“ Algorithmus geht das nicht, weil sich für eine Höhenpunktänderung gleich ein ganzer Haufen Pixel ändert. Lösung dafür habe ich keine gefunden.

Nick

Hallo Marco!

Tja, was „interessant“ ist, ist auch Geschmackssache.

Ich finde, daß Algorithmen einen interessanten Aspekt
beim Computer bilden. Nicht alle, aber ein paar Bereiche:

Rekursive Sachen sind meistens interssant, bspw.
für dein „fades“ Bubblesort. Wenn du dich für
(eigentlich idiotische) Sortieralgorithmen interessierst

  • es ist faszinierend, wie viele Methoden es gibt, und daß
    die besten davon keinesfalls Quick-Sort-Genieleistungen
    sind, sondern simplere Verfahren.

Rekursion betreffend gibt´s weiters das unendlich alte Türme
von Hanoi, oder aber für Brute-Force Spielzugsberechnungen
(Tic-Tac-Toe, Reversi, etc. bis hin zu Schach), Strategien
und Bewertungen inklusive…
und natürlich für Fraktale aller Art, d. h.
auch Musik-Fraktale, die vielleicht mal
irgendjemand so hinkriegt, daß das Ergebnis
so gut klingt, wie die Grafiken aussehen…

Generell einen Synthesizer zu programmieren ist
interessant. Du kannst neue Klänge entdecken.

Kompressionsalgorithmen sind auch nicht so
uninteressant. Vor allem, weil es ja scheinbar doch
noch Menschen gibt, die da immer noch neue Verfahren
entwickeln (sei es mit loss oder lossless).

Grafische Algorithmen (2D, 3D) sind interessant.
Vor allem, wenn sie schnell und fehlerfrei sein sollen.
(Schon mal ein simples FILL probiert? :smile:

Mustererkennung ist interessant. KI ist generell interessant.

Spieltheorie ist hochinteressant. Systeme zu simulieren,
da kannst du dich wegprogrammieren!

Falls dir wirklich fad sein sollte: schreib mir, und
ich decke dich mit Aufgaben ein. (War nur Spaß :smile:

Das fällt mir so auf die schnelle ein, aber ich bin
mir sicher ich würde noch ein paar Sachen finden,
die interessant sind. Jedenfalls für mich.

Hoffe dir ein paar Anregungen gegeben zu haben.

Schöne Grüße,
Didi