Ich stimmte zu, Software für den Vater eines Freundes zu schreiben, als ich ein Student des ersten Jahres war. Es war für die Ressourcenplanung. Ich habe es damals nicht bemerkt, aber es stellte sich heraus, dass es ein NP-vollständiges Problem war.
Glücklicherweise war es einfach akzeptabel, eine Lösung zu finden - sie musste nicht die optimale Lösung finden. Es machte Spaß, Heuristiken zu schreiben - eigentlich eine Reihe von ihnen -, die während des laufenden Programms geändert werden konnten und versuchten, das Problem zu lösen.
Ich hatte eine Lösung in einem Sommer gemacht, aber dann jedes Jahr an neuen Versionen gearbeitet. Meine großen Pläne, es zu verkaufen, fielen flach aus. Ich war ein besserer Entwickler als ein Vermarkter.
Es hat viel Spaß gemacht und mich früh über die reale Welt der Entwicklung gelehrt - (Endbenutzer, Anforderungserfassung, Tests, usw. - viele der Dinge, die Sie nicht in undergy CS bekommen)
Um Ihre Frage zu beantworten - es war für einen Lehrer, der Schüler für spezielle Unterweisung zu planen hatte. Er war Logopäde und Audiologe - aber es könnte auf jedem ähnlichen Gebiet angewendet werden. Er hatte Lehrer-, Klassen- und Schüleraktivitäten zur Verfügung und musste einige Male pro Woche mit Schülern zusammentreffen. Es ist das Rucksackproblem oder irgendeine Anzahl anderer ähnlicher/äquivalenter Planungsprobleme.
Es stellte sich heraus, dass es einfach in Ordnung war, eine Lösung zu bekommen - wir mussten nichts maximieren oder minimieren - wir mussten nur alle Studenten unterbringen.
Ich kann mich nur erinnern, nicht in der Lage zu sein, Testfälle zu lösen, die ich für Szenarien benutzt habe - all die Probleme, die er über die Jahre hinweg gelöst hat.
Ich konnte es nie vermarkten - hauptsächlich weil ich keine Ahnung hatte, was ich tat und ich nicht sicher war, wie ich meinen Markt/Käufer erreichen könnte.
+1 für "nicht sehr gut definiert "- in der realen Welt scheint dies ein viel häufigeres Problem zu sein. –