Entwickler-Ecke

Algorithmen, Optimierung und Assembler - Programmierübungen für experten


Delete - Di 09.03.10 12:52
Titel: Programmierübungen für experten
Guten Morgen,

Ich suche eine komplexe Programmieraufgabe, ich meine, etwas wirklich kniffliges.
Habe im Moment Recht viel freizeit und suche etwas das mich richtig fordert.

Kommentare wie "Denk dir was aus" oder ähnliches werden von mir gleich ignoriert.

Hintergrundinfo:
ich programmiere seit release der Programmiersprache Pascal
Ich bin sehr interessiert an kreativen vorschlägen die ich dann umsetzen kann


Dank im Vorraus

Seniore


elundril - Di 09.03.10 13:08

wie wäre es mit einem programm das den turing test besteht? :mrgreen:

sorry, musste einfach sein^^

lg elundril


Delete - Di 09.03.10 13:25

ich brauche was komplexeres und ernsteres.

Also suche weiterhin nen Vorschlag!

Liebe grüße


F34r0fTh3D4rk - Di 09.03.10 13:29

Schreibe ein Programm, welches zu einer gegebenen Notenfolge eine möglichst gut spielbare Tabulatur für Gitarre ausgibt. Hierbei gibt es natürlich verschiedene Spieltechniken zu beachten.
Ich habe so etwas mal gemacht, aber mein Ansatz war ein Durchprobieren (fast) aller Möglichkeiten, gepaart mit einer Bewertungsfunktion.

Vielleicht schafft man es irgendwie die menschliche Hand zu modellieren und mithilfe eines genetischen Algorithmus einen spielbaren Fingersatz zu erzeugen.

Mein Programm erzeugte auf Eingabe der C-Dur Tonleiter das hier:

Quelltext
1:
2:
3:
4:
5:
6:
7:
        // Test C-Dur Tonleiter
  //-------------------------
  //-------------------------
        //------------------2--4--5
        //---------2--3--5---------
        //---3--5------------------
  //-------------------------

Das lässt sich gut spielen und der Fingersatz ist relativ offensichtlich. Aber das ist auch noch ein relativ einfacher Fall.

Hier gibt es ein paar Infos für Nicht-Gitarristen: http://de.wikipedia.org/wiki/Tabulatur#Beispiel_f.C3.BCr_eine_ASCII-Gitarrentabulatur


Nersgatt - Di 09.03.10 13:38

user profile iconelundril hat folgendes geschrieben Zum zitierten Posting springen:
wie wäre es mit einem programm das den turing test besteht? :mrgreen:

So schwer ist ein Brainfuck (oder auch Miau)-Interpreter ja nun nicht zu implementieren.... :D


Narses - Di 09.03.10 13:55

Moin!

user profile iconelundril hat folgendes geschrieben Zum zitierten Posting springen:
wie wäre es mit einem programm das den turing test besteht?
user profile iconSeniore hat folgendes geschrieben Zum zitierten Posting springen:
ich brauche was komplexeres und ernsteres.

Also suche weiterhin nen Vorschlag!
Also was für echte Experten... :gruebel:
Wie wäre es mit einem kleinen Beispiel-Programm, dass das Turing-Halteproblem umgeht? :think:

cu
Narses


thepaine91 - Di 09.03.10 13:58

Wie wäre es mit einem Chatbot der so ausgereift ist, das man nicht merkt mit einem bot zu schreiben. Bzw. dieser sollte Fragen beantworten können mit hilfe von KI.(s.o.) ;) Das ist was für Experten vorallem da es bis heute noch nicht existiert. Oder ein Neuronales Netz Programmtechnisch verwirklichen.

[Ironie] Vorallem ein Experte wie du, der aber nicht weis wie man bei einem Synedit den Cursor an den Anfang der Seite setzt sollte das mit links schaffen. [/Ironie]


Narses - Di 09.03.10 14:01

Moin!

user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:
Wie wäre es mit einem Chatbot der so ausgereift ist, das man nicht merkt mit einem bot zu schreiben. Bzw. dieser sollte Fragen beantworten können
user profile iconelundril hat folgendes geschrieben Zum zitierten Posting springen:
wie wäre es mit einem programm das den turing test besteht?
:nixweiss:

cu
Narses


thepaine91 - Di 09.03.10 14:04

Ach :D turing Test hies es sorry hab das verschwitzt.


Marc. - Di 09.03.10 14:11

user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:
Wie wäre es mit einem Chatbot der so ausgereift ist, das man nicht merkt mit einem bot zu schreiben. Bzw. dieser sollte Fragen beantworten können mit hilfe von KI. ;).

Der Turing-Test [http://de.wikipedia.org/wiki/Turing-Test] wurde doch bereits erwähnt. :roll:
Edit: Ajax war deaktiviert.

Den Vorschlag von user profile iconF34r0fTh3D4rk könnte man auch dorthin modifizieren, dass zudem ein Algorithmus zur Notenerkennung implementiert wird. Quasi hören, erkennen und richtig notieren. :zustimm:


Gausi - Di 09.03.10 14:12

Wie wäre es damit:

Eingabe: Ein Bild, Foto, Zeichnung, sonstwas.

Ausgabe: Eine Bastelanleitung/Steckvorlage für Ministeck inklusive Einkaufsliste.

Probleme, die dabei zu lösen sind:
Farbreduzierung auf 24 (?) fest vorgegebene Farben, unter der Nebenbedingung, nicht zu pixelig zu werden. Denn 1x1-Steinchen gibt es bei Ministeck nicht einzeln zu kaufen.
Außerdem: Aufteilung eines Rechtwinkligen Polygons in Teilpolygone in dem Verhältnis, wie sie in den handelsüblichen Ministeck-Blisterpackungen zu finden sind.

Hab ich mich mal mit eher sehr mäßigem Erfolg dran probiert und es dann aufgegeben. ;-)


elundril - Di 09.03.10 14:12

user profile iconNersgatt hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconelundril hat folgendes geschrieben Zum zitierten Posting springen:
wie wäre es mit einem programm das den turing test besteht? :mrgreen:

So schwer ist ein Brainfuck (oder auch Miau)-Interpreter ja nun nicht zu implementieren.... :D


Turing-Vollständig <> Turing-Test.

Das eine gibt an ob eine Programmiersprache mindestens das selbe kann wie eine Turingmaschiene (soweit ich das verstanden hab), das andere ob eine KI so stark ist das man nicht mehr zwischen Mensch und PC unterscheiden kann wenn man sich mit einer unterhält zb. ;) welches nun welches ist darfst du selbst rausfinden. :mrgreen:

lg elundril


Thorsten83 - Di 09.03.10 14:22

Wobei es ja wieder eine interessante Frage ist ob eine KI stark (im Sinne der KI-Forschung) sein muss um den Turing-Test zu bestehen :D

Suchst du denn eine Aufgabe die schwierig zu implementieren ist, oder eher ein algorithmisches Problem?


thepaine91 - Di 09.03.10 14:29

Oder was wir schon lange nicht mehr hatten war ein Betriebssystem mit Delphi zu programmieren.


Horschdware - Di 09.03.10 15:04

user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:
Oder was wir schon lange nicht mehr hatten war ein Betriebssystem mit Delphi zu programmieren.
Nanana, pfui, böse. Du sollst doch andere Leute nicht so ärgern. ;-p


Delete - Di 09.03.10 15:51

@ Thorsten83, ich such eine Aufgabe die schwierig zu implementieren ist.
An die anderen Danke für eure Vorschläge, klingt alles sehr interessant, das mit dem Chatbot stammt ja ursprünglich von einem Herrn Weizenbaum. Er nannte sein Chatprogramm "ELIZA". Zu damaligen verhältnissen war Eliza von der KI her schon recht weit, heute würde vermutlich nichtmal mehr ein Grundschüler drauf reinfallen.
Zu dieser sache vom netten user "thepaine91" wobei paine, wenn es denn dann schmerz bedeuten soll *lach ohne e geschrieben wird.

"
[Ironie] Vorallem ein Experte wie du, der aber nicht weis wie man bei einem Synedit den Cursor an den Anfang der Seite setzt sollte das mit links schaffen. [/Ironie]"

Ich hab die frage für nen user reingestellt weil sie ihm nicht beantwortet wurde, niemand ging auf seinen eintrag ein, also stellte ich es nochmal rein.

Liebe Grüße

Seniore


Marc. - Di 09.03.10 16:10

user profile iconSeniore hat folgendes geschrieben Zum zitierten Posting springen:
[Ironie] Vorallem ein Experte wie du, der aber nicht weis wie man bei einem Synedit den Cursor an den Anfang der Seite setzt sollte das mit links schaffen. [/Ironie]"

Ich hab die frage für nen user reingestellt weil sie ihm nicht beantwortet wurde, niemand ging auf seinen eintrag ein, also stellte ich es nochmal rein.

[OT]Worum geht's hier? Warum hast Du sie nicht beanwortet? :nixweiss: :roll: [/OT]

Da "schwierig zu implementieren" relativ und die Aussage seit Release von Pascal zu programmieren nur (schwach) quantitativer Natur ist, wäre es interessant zu erfahren, welche (aus Deiner Sicht) komplexen Programme Du bereits vorzuweisen hast.
In welche Richtung soll das ganze denn tendieren? Etwas Wissenschaftliches (Bsp.: Simulationen)? Etwas Nützliches (Bsp.: Notenerkennung)? Etc.? :)


Delete - Di 09.03.10 16:15

Also,

ich habe mich mit um die Programmierung von Speziellen Programmen für die Raumfahrtsforschung beschäftigt. 1 Programm wird noch heute von der NASA genutzt, auch wenn sich mitlerweile völlig andere Leute um es kümmern.
Ich hatte es gerne gemacht. Nun, wo ich alt bin, habe ich viel Freizeit und suche neue herausforderungen, früher hab ich mich speziell um physikalische Vorgänge gekümmert, programme zur berechnung geschrieben..

Ich möchte jetzt was völlig neues ausprobieren, etwas wo man sich richtig durchfuchsen muss.

Dank im Vorraus


SeSeniore


thepaine91 - Di 09.03.10 16:44

Mir ist durchaus bewusst das pain ohne e geschrieben wird. Hat auch andere hintergründe kann ich dir gerne via pm erklären. ;)

Und falls ich mich bezüglich dieses Beitrages wirklich geirrt haben sollte entschuldige ich mich hiermit. ;)

Wenn deine Kenntnisse denn so fortgeschritten sind ist z.B. Gesichtserkennung ein Thema o.ä.


Thorsten83 - Di 09.03.10 16:47

Hmm leider muss ich mich meinen Vorrednern anschließen, "schwierig zu implementieren" ist ziemlich subjektiv, kann halt von benötigten Sprachkenntnissen über design patterns bis hin zu speziellen Datenstrukturen (etc. pp) reichen.

Da hier ja öfter der Bereich der KI angesprochen wurde: Ich fand's immer witzig "KIs" für Spiele zu programmieren.
Bei Zweispieler-Nullsummenspielen ist da der alpha-beta-Algorithmus das Mittel der Wahl, sieht leicht aus, wird aber tricky wenn man ihn richtig schnell kriegen will. Da hat man halt GUI-Programmierung mit drin, zusätzlich Überlegungen zu dem Spiel (--> Stellungsbewertung, Ruhesuche etc. pp), muss zusehen dass man z.B. die Zuggenerierung schnell hinbekommt, und was ich persönlich schön finde ist zu sehen, wie die KI immer stärker wird.

Bei anderen Spielen kann man beliebig an Heuristiken rumbasteln ;)


Delete - Di 09.03.10 17:00

Danke für die neuen Vorschläge, finds supi spitze klasse, das ihr euch so beteiligt.

ja schwer zu implementieren ist recht sukjektiv da es hal wie gesagt einige möglichkeiten gibt.

Ich finde das mit der KI sehr interessant und denke es wird ein Spiel werden, eins, das für jeden interessant ist.

Bevor ich jetzt extra nen neuen Thread starte "Was für ein Spiel soll es werden?" ;) ich bin ein alter mann, mir fehlt dort einfach die Fantasie.


Dank im Vorraus

Seniore


elundril - Di 09.03.10 17:03

probier das mal *link* [http://us.blizzard.com/diablo3/?rhtml=y] wenns dir zu einfach ist, kannst ja was größeres anfangen. :)


Marc. - Di 09.03.10 17:09

user profile iconSeniore hat folgendes geschrieben Zum zitierten Posting springen:
ich habe mich mit um die Programmierung von Speziellen Programmen für die Raumfahrtsforschung beschäftigt. 1 Programm wird noch heute von der NASA genutzt, auch wenn sich mitlerweile völlig andere Leute um es kümmern.

user profile iconSeniore hat folgendes geschrieben Zum zitierten Posting springen:
Bevor ich jetzt extra nen neuen Thread starte "Was für ein Spiel soll es werden?" ;) ich bin ein alter mann, mir fehlt dort einfach die Fantasie.

Wie wär's denn mit einem kleinen Weltraumspiel a lá "Schieß mich auf den Mond"?. ;)


Delete - Di 09.03.10 17:10

Was macht denn dein Programm für die NASA? Allzu speziell kann es ja nicht gewesen sein, wenn sie es heute noch benutzen.


elundril - Di 09.03.10 17:16

erinnerst du dich an die Rakete die wegen einer fehlenden Umwandlung zwischen Grad und Neugrad abgestürzt ist? :mrgreen:

sorry, musste einfach sein

lg elundril


Marc. - Di 09.03.10 17:18

user profile iconelundril hat folgendes geschrieben Zum zitierten Posting springen:
erinnerst du dich an die Rakete die wegen einer fehlenden Umwandlung zwischen Grad und Neugrad abgestürzt ist? :mrgreen:

:rofl:


Thorsten83 - Di 09.03.10 17:31

Um ein Gefühl für Spielbäume zu bekommen kann man als erstes eine KI für ein triviales Spiel, z.B. TicTacToe, schreiben.

Schach ist schon deutlich anspruchsvoller, da hier viele Dinge berücksichtigt werden müssen, einfacher ist z.B. Dame oder Mühle.
Ich würde definitiv nicht empfehlen, gleich mit Schach anzufangen, mach lieber erstmal die Anfängerfehler bei einem "einfachen" Spiel... ;)


delphi10 - Di 09.03.10 17:52

user profile iconSeniore hat folgendes geschrieben Zum zitierten Posting springen:

Zu dieser sache vom netten user "thepaine91" wobei paine, wenn es denn dann schmerz bedeuten soll *lach ohne e geschrieben wird.
Liebe Grüße

Seniore


Zu dieser Sache vom netten User "seniore" wobei vorraus, wenn es denn dann voraus bedeuten soll *lach nur mit einem "r" geschrieben wird.


Delete - Di 09.03.10 18:01

wo steht vorraus?
und was ist schwerwiegender ein rechtschreibfehler in irgendeinem satz oder ein fehler im nickname? Fass dir mal ann´kopf Delphi10. Außerdem bin ich kein Deutscher, das entschuldigt alle rechtschreibfehler haha :)

und zum NASA Programm, es war eins der grundlegenden Programme, heutzutage ist es schon viel spezieller, aber früher, da war es noch recht algemein, aber es war top.

Zu der Schach Idee, geb ich dir recht, mit ki bin ich noch nicht wirklich weit, bzw. hab ich dazu noch garkeine infos. Ich werde mich die tage darauf konzentrieren mir wissen anzueignen.
Werde dann aber auch mit sowas wie schach anfangen, da ich selber begeisterter schachspieler bin.

Liebe Grüße

Seniore


ub60 - Di 09.03.10 19:22

Vorschlag 1:

Also hier mal eine Idee für ein Programm, was ich selber schon seit vielen Jahren schreiben wollte (und immer fehlt die Zeit:) : Programmiere doch mal einen komplexen Stausimulator.
Auto, Ampeln, Fußgänger usw. als Objekte, Fahrbahnen als (?) irgendwie verkettete Listen. Das ganze mit individuell einstellbaren Größen wie Aggressivität, vorausschauendes Fahren, Fahrziel, Parkdauer, ...
Und das ganze natürlich mit grafischer Oberfläche, damit man sich schön zurücklehnen kann und zuschauen kann, wann der Stau beginnt. Und sich freuen, dass man nicht drin steckt:).

Vorschlag 2:

Unter VB und C# gibt es ein Super-Projekt mit intelligenten Ameisen (http://antme.net/). So was in Delphi zum Programmieren eigener Ameisen würde sicher hier im Forum (und an vielen Schulen) eine große Fangemeinde finden.

ub60


Jakob_Ullmann - Di 09.03.10 20:29

user profile iconF34r0fTh3D4rk hat folgendes geschrieben Zum zitierten Posting springen:
Schreibe ein Programm, welches zu einer gegebenen Notenfolge eine möglichst gut spielbare Tabulatur für Gitarre ausgibt. Hierbei gibt es natürlich verschiedene Spieltechniken zu beachten.
Ich habe so etwas mal gemacht, aber mein Ansatz war ein Durchprobieren (fast) aller Möglichkeiten, gepaart mit einer Bewertungsfunktion.

Vielleicht schafft man es irgendwie die menschliche Hand zu modellieren und mithilfe eines genetischen Algorithmus einen spielbaren Fingersatz zu erzeugen.


Nun, also erstens meinst du ja hoffentlich einen generischen Algorithmus, oder? Gar keine schlechte Idee, das ganze ist eigentlich wie geschaffen für neuronale Netze. Allerdings ist das eher Geschmackssache. LilyPond kann zum Beispiel etwas derartiges, und wahrscheinlich würde das Ergebnis den meisten Gitarristen gefallen, allerdings kann man das meiner Meinung nach nicht verallgemeinern, ohne ein paar Randbegingungen zu beachten. Die Tatsache zum Beispiel, dass du auf einer E-Gitarre mehr greifbare Bünde hast als auf einer akustischen und dass der Hals schmaler ist. Das erachte ich als ziemlich wesentlich.

Der Standard-Ansatz dürfte ja wohl sein, dass sich die Zahlen möglichst geringfügig ändern. Ist aber nicht immer ideal.

Aber wo wir gerade bei Musik sind: Eine grafische Oberfläche für LilyPond, die unter Windows läuft und sich per Tastatur bedienen lässt, wäre mal eine echte Marktlücke.

Oder ein Programm, das algebraisch integrieren kann (also auch die schwierigeren Sachen wie Integration durch Substitution).


F34r0fTh3D4rk - Di 09.03.10 20:56

Ich meine schon genetisch: http://de.wikipedia.org/wiki/Genetischer_Algorithmus
LilyPond kenne ich nicht, dafür aber GuitarPro und TuxGuitar und die lösen dieses Problem selten zu meiner Zufriedenstellung.


delphi10 - Di 09.03.10 21:38

user profile iconSeniore hat folgendes geschrieben Zum zitierten Posting springen:
wo steht vorraus?

das letzte Mal geschrieben heute 16:00
Zitat:

und was ist schwerwiegender ein rechtschreibfehler in irgendeinem satz oder ein fehler im nickname? Fass dir mal ann´kopf Delphi10. Außerdem bin ich kein Deutscher, das entschuldigt alle rechtschreibfehler haha :)
Ja nee, is klar...

Und ich dachte immer, ein Nickname ist so was von individuell, dass er gar nicht falsch sein kann.


dummzeuch - Di 09.03.10 22:08

Wie waere es mit einem Programm, welches automatisch in Strassenbildern Schilder erkennt. Ich wuerde erstmal damit anfangen, dass es ueberhaupt erkennt, wo ein Schild ist. Danach dann zu erkennen, um welches Schild es sich handelt, waere dann die Kuer.

Aber Vorsicht: Daran beissen sich gerade diverse Entwicklerteams die Zaehne aus. Es ist nicht so einfach, wie es erstmal klingt. Ich habe es selbst mal probiert und hatte keine besonders hohe Trefferquote.

Wenn Du es hinbekommst, garantiere ich Dir, dass es international eine Menge Interessenten gibt, die richtig Geld dafuer hinlegen wuerden. Derzeit wird das naemlich in "Hand-"Arbeit durch Menschen erledigt, was ziemlich teuer kommt.


Delete - Di 09.03.10 22:10

user profile iconSeniore hat folgendes geschrieben Zum zitierten Posting springen:
und zum NASA Programm, es war eins der grundlegenden Programme, heutzutage ist es schon viel spezieller, aber früher, da war es noch recht algemein, aber es war top.

Werde doch mal etwas konkreter. Und wie bist du dazu gekommen das zu schreiben?


Delete - Mi 10.03.10 09:36

Guten Morgen


Viele interessante Ideen, viele interssante Dinge die sich mit sicherheit lohnen würden umzusetzen.
Also im vornerein: Den Turing Test werde ich nicht übernehmen *schmunzel
Auf den Loebner Preis bin ich auch nicht wirklich scharf.
Vielmehr würde mich die geschichte mit dem generischen Algorithmus interessieren. Programme wie GuitarPro sind zwar nett aber ich finde sowas ist noch sehr ausbaufähig.
Auf der anderen Seite die Geschichte mit den Straßenschildern die ein Programm finden und erkennen soll.
Ich glaube auch das es da mit Sicherheit viele interessenten gäbe, und interessant finde ich das Thema selber auch. Ich denke ich werde mich diesem Thema witmen.

Zum neugierigen Luckie (lucky?), wenn dich mein Leben und meine Arbeit so interessiert, schau dir meine Seite auf Wikipedia an (musste aber übersetzer drüber laufen lassen) http://sr.wikipedia.org/sr-el/%D0%9C%D0%B8%D0%BB%D0%BE%D1%98%D0%BA%D0%BE_%D0%92%D1%83%D1%87%D0%B5%D0%BB%D0%B8%D1%9B

Viele Dank

Seniore


Gausi - Mi 10.03.10 10:06

Hier mach ich auch dicht.

Ein 80-jähriger Veteran der US-Raumfahrt, Mitarbeiter bei Apollo 13, ausgezeichnet mit der Medal of Freedom, fragt im Delphi-Forum nach, was er noch programmieren könnte und lässt keine Gelegenheit aus, andere (?) User zu beleidigen?

Diese Entscheidung wird intern weiterdiskutiert werden. Wie man da mitreden kann, weißt du ja schon.