Anlässlich des Euler-Projekts stellt sich mir die Frage: "Was kommt (auf Dauer) ins Squeak-Image, wofür reicht der Workspace?"
Meiner Meinung nach sollten häufig gebrauchte Werkzeuge (Prädikate wie istPalindrom, istPandigital usw. oder Funktionen wie teilersumme, primfaktoren etc.) ins Image, aber nicht die Lösungen einzelner Euler-Probleme. Diese lassen sich bequem im Workspace entwickeln und später in einer Textdatei aufbewahren, das Image sollte damit meines Erachtens nicht belastet werden. (Es ist sowieso schon so unaufgeräumt.) Was meinen die Gelehrten dazu? R. Baumann |
On Tue, 16 Nov 2010 10:08:29 -0800 (PST)
"R. Baumann" <[hidden email]> wrote: > Anlässlich des Euler-Projekts stellt sich mir die Frage: "Was kommt (auf > Dauer) ins Squeak-Image, wofür reicht der Workspace?" > > Euler-Probleme. > > Was meinen die Gelehrten dazu? Ich bin kein Gelehrter, habe aber trotzdem eine Meinung. Was im Image ist, kann ich finden. Und es wäre doch ganz schön, wenn man Euler17 solve oder Euler42 browse sagen könnte, oder nicht? s. |
Ja, aber die verschiedenen Teile der Lösung (Prozeduren, Methoden) wären auf unterschiedliche Klassen (z. B. Integer, String) verteilt. Wo im System würde man eigentlich die Lösungen (Algorithmen) der verschiedenen Probleme des Euler-Projekts unterbringen?
R. B. |
On Tue, 16 Nov 2010 12:41:31 -0800 (PST)
"R. Baumann" <[hidden email]> wrote: > > Ja, aber die verschiedenen Teile der Lösung (Prozeduren, Methoden) wären auf > unterschiedliche Klassen (z. B. Integer, String) verteilt. Wo im System > würde man eigentlich die Lösungen (Algorithmen) der verschiedenen Probleme > des Euler-Projekts unterbringen? > R. B. Gibt's nicht sowas wie Namespaces oder Packages, womit man solche Sachen organisieren kann? Dann könnte man ja ein Package je Problem anlegen, in dem die spezifischen Algorithmen zu finden sind, und ggf. auf ein "EulerBase" für allgemein Interessantes verweisen. s. |
Das ist sicher ein guter Hinweis. In Squeak gibt es sogenannte Kategorien, und zwar Klassenkategorien und Methodenkategorien. Man könnte, diesem Hinweis folgend, eine Klassenkategorie "Eulerprojekt" anlegen und darin eine Klasse "Eulerlösungen". In dieser Klasse zu jeder Aufgabe, etwa zu Aufgabe 74, eine Methodenkategorie "Euler-074".
Zu Aufgabe 74 gibt es drei Methoden, nämlich "faksumme", "kettenlänge" sowie die Hauptmethode, welche die gesuchte Lösungszahl errechnet. Aber die beiden ersteren müssen in der Klasse Integer implementiert werden, weil sie auf ganzen Zahlen operieren, und wie mit der dritten zu verfahren ist, weiß ich überhaupt nicht. Vielleicht kann einer der Squeak-Experten weiterhelfen. R. B. |
On Wed, 17 Nov 2010 01:46:58 -0800 (PST)
"R. Baumann" <[hidden email]> wrote: > > Das ist sicher ein guter Hinweis. In Squeak gibt es sogenannte Kategorien, > und zwar Klassenkategorien und Methodenkategorien. Man könnte, diesem > Hinweis folgend, eine Klassenkategorie "Eulerprojekt" anlegen und darin eine > Klasse "Eulerlösungen". In dieser Klasse zu jeder Aufgabe, etwa zu Aufgabe > 74, eine Methodenkategorie "Euler-074". > > Zu Aufgabe 74 gibt es drei Methoden, nämlich "faksumme", "kettenlänge" sowie > die Hauptmethode, welche die gesuchte Lösungszahl errechnet. Aber die beiden > ersteren müssen in der Klasse Integer implementiert werden, weil sie auf > ganzen Zahlen operieren, und wie mit der dritten zu verfahren ist, weiß ich > überhaupt nicht. Du fragst einen Integer nach seiner faksumme und seiner kettenlänge. Wen fragst du nach der Lösung der Euleraufgabe? Das _könnte_ je nach Aufgabe ein Integer sein, aber dann wird es in der Tat schwierig, den Überblick zu behalten. Deswegen mein ursprünglicher Vorschlag, eine Klasse je Aufgabe anzulegen. Dort kannst du dann evtl. "teure" Ergebnisse zwischenspeichern und so Verwaltungskram erledigen. Aufgabe74 new faksumme: 42; kettenlänge: 56; lösung. und die Methoden würden auf die "richtigen" Implementationen verweisen. fakSumme: anInteger ^anInteger fakSumme Auf die Art hast du einen einheitlichen Zugang für alle Aufgaben und findest mit ein paar Klicks die Arbeitstiere. s. |
In reply to this post by R. Baumann
"R. Baumann" <[hidden email]> writes:
Hallo Rüdeger, ich habe eine Kategorie Enno-Euler. In dieser Kategorie habe ich zu jedem Problem eine Klasse, die ich ProblemXY nenne. Zu jeder Klasse habe ich dann ein initialize-release Protokoll in dem sich eine Methode initialize befindet, die nur ^self solveA bzw. eine der anderen solve-Varianten aufruft. Die solve- Methoden könnte man unter arithmetic einsortieren, muss man aber nicht So kann ich Problem1 new mit Alt-p aufrufen und direkt die Lösung sehen Hilfsmethoden, die immer wieder benötigt werden kann man zu Integer oder dergleichen hinzufügen. Das ist durchaus sinnvoll. isPalindrome, kann man sogar in Integer UND String unterbringen. Bis dann Enno PS: Monticello kann auch Änderungen an Standardklassen verwalten. Mal unter dem Begriff extend existing classes in diesem PDF gucken. https://gforge.inria.fr/frs/download.php/27018/Monticello.pdf > Das ist sicher ein guter Hinweis. In Squeak gibt es sogenannte Kategorien, > und zwar Klassenkategorien und Methodenkategorien. Man könnte, diesem > Hinweis folgend, eine Klassenkategorie "Eulerprojekt" anlegen und darin eine > Klasse "Eulerlösungen". In dieser Klasse zu jeder Aufgabe, etwa zu Aufgabe > 74, eine Methodenkategorie "Euler-074". > > Zu Aufgabe 74 gibt es drei Methoden, nämlich "faksumme", "kettenlänge" sowie > die Hauptmethode, welche die gesuchte Lösungszahl errechnet. Aber die beiden > ersteren müssen in der Klasse Integer implementiert werden, weil sie auf > ganzen Zahlen operieren, und wie mit der dritten zu verfahren ist, weiß ich > überhaupt nicht. > > Vielleicht kann einer der Squeak-Experten weiterhelfen. > > R. B. |
Free forum by Nabble | Edit this page |