Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

  • Hallo,
    ich möchte mir ein XProfan-Programm zum Lösen von Sudoku-Rätseln erstellen. Dafür benötigt man die Rekursion.
    Ein Beispiel wie sowas geht, gibt es in Python programmiert. Ich habe eine XProfan-Programmdatei erstellt, welche die Lösung
    mit einem Pythonteil, welches von meinem Sohn und mir angepasst wurde, durchführt. Die Ein- und Ausgaben erfolgen mit
    dem XProfanteil. Das kann aber nicht eine endgültige Lösung sein. Doch sie funktioniert einwandfrei.
    Das Problem ist, Python muss installiert sein, damit überhaupt eine Lösung des Rätsels möglich ist. Bei mir geht das. Aber
    andere User müssten sich um die Installation von Python kümmern.
    Ich kriege es nicht hin, alles in XProfan zu programmieren, so dass es läuft.
    Zur Ansicht hänge ich die Python- und die XProfanversion an.
    Wer interessiert ist, und die Rekursion lösen will und kann, dem stelle ich mein XProfanprogramm zum Probieren zur Verfügung,
    weil dort bereits die Ein- und Ausgaben für ein 9er und ein 12er-Sudoku enthalten sind.
    An der fertigen Lösung wäre ich allerdings interessiert.


    Windows 10 Pro, 64 Bit, 6 GB, Notebook DELL Vostro 3550


    Vielen Dank im voraus


    Das Programm wird natürlich, wenn überhaupt, immer Open Source sein. Es ist für mich nur Beschäftigung, bin Jahrgang 1930.


    Bei den Anhängen muss die 2. Endung (.pdf) entfernt werden Die Originalendungen wurden nicht akzeptiert.

  • Die mögliche Rekursionstiefe von XProfan ist nicht überwältigend, zumindest nicht die von XProfan-11.2a free. Ich selbst hatte mal einen Sudoku-Löser (ohne guten Eingabeteil) aus den Rosetta code Seiten nach XProfan portiert, siehe Beitrag 96 im "Algorithmen"-Kapitel XVII. Vielleicht lässt sich daraus ja was Vernünftiges basteln.
    Gruss

    HP255G7:Win10pro2.004,4*AMD Ryzen3200U@2.60GHz,6+2GB-RadeonVega/237GBSSD:intlDVDRW,3xUSB3 ext4TB-HDX,XProfanX3+Xasm/Xpse

  • Hallo P. Specht,
    habe mir Deine Überarbeitung ausführlich angesehen. Konnte für ein 9er-Sudoku eine Eingabe erstellen, alles funktioniert einwandfrei.
    Mein Problem ist aber das 12er-Sudoku. Leider ist dafür der Befehl: Board[] = %111111111 nicht geeignet.
    Eine Änderung in Board[] = %111111111111 funktioniert nicht, weil dieses Array nur einstellige Zahlen verarbeiten kann. Insofern komme ich nicht weiter. Die Eingabe für ein 12er-Sudoku ist fertig.
    Danke für Dein Programm.
    Gruß :cry:

  • Hallo,
    endlich habe ich ein Profan-Programm erstellt, um 9er- und 12er-Sudokus zu lösen.
    Ich werde es hier mal als Anhang beifügen. Sollte jemand eine bessere und vor allem schnellere Lösung finden, wäre ich erfreut davon zu hören bzw. zu partizipieren.
    Im Mai d. J. hatte ich hier mal ein Anfrage gestellt, wie man per Rekursion das Problem löst. Jetzt habe ich eine Lösung.


    Grüße an Alle, die sich für das Thema interessieren.

  • Ich hab nur mal kurz reingeschaut. Du nutzt viele While-Schleifen und erhöhst immer wieder eine Variable bis sie einen Wert überschreitet. Es wäre eleganter eine Whileloop-Schleife zu nutzen oder, noch etwas schneller, For-Schleifen.

    XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
    Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
    TerraMaster F4-420 mit 14TB
    XBox Classic/360S/Series X/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
    OnePlus 6 8GB/256GB
    jacdelad.bplaced.net

  • Danke für die Antwort Jac de Lad,
    zu For-Schleifen kann ich nur feststellen, dass sie in der Hilfe zu XProfan X2 nicht erwähnt werden.
    Ich unterstelle mal, dass sie, wie in der Hilfe erklärt, durch While-Schleifen zu ersetzt wurden.


    Wegen WhileLoop muss ich mal gucken.
    :top:

  • Hallo,
    ich habe gerade ein wenig im Quelltext gestöbert. Was mir sofort aufgefallen ist:
    - Du benutzt mehrfach eine Variable j für For-Schleifen und setzt den Wert für j direkt vor der Schleife auf 1. Die Schleife überschreibt den Wert sowieso mit dem Startwert, also ist die Zuweisung nicht nötig.
    - Mit einer anderen Schriftart, z.B. Courier, wäre das Sudoku etwas besser lesbar, weil da alle Zeichen den gleichen Abstand haben (auch Leerzeichen).
    - Mit der Windows-API-Message EM_SETLIMITTEXT kannst du ein Editfeld so limitieren, dass nur ein Zeichen eingegeben werden kann. Falls du dich noch nicht mit APIs auskennst bitte den Abschnitt in der Hilfe lesen und falls immer noch Bedarf besteht einfach fragen.
    - Mittels Subclassing könntest du verhindern, dass in ein Editfeld Zeichen eingetragen werden, die keine Zahlen sind. Auch hier kann ich dir weiterhelfen (oder andere hier).
    - Als kleine Idee, ich würde das machen: Ich würde nach jeder Eingabe abfragen ob in einer Zeile oder Spalte eine Zahl mehrfach vorkommt und eine Warnung ausgeben (keine Messagebox, sondern zum Beispiel ein Icon recht von der Zeile/unter der Spalte oder sowas in der Art).
    - Ich würde nach dem Start bereits die Einagebefelder anzeigen lassen, da kann man gleich loslegen.
    - Eine Speicher-/Ladefunktion wäre noch sehr cool.
    - Wie wäre es anstelle des Menüs Buttons rechts vom Sudoku zu platzieren? Da wären die einzelnen Funktionen leichter zu erreichen.


    Ansonsten schon ganz solide. Bitte sieh meine Vorschläge auch nicht zu kritisch, es ist ja dein Produkt und es gefällt mir schon sehr gut.

    XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
    Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
    TerraMaster F4-420 mit 14TB
    XBox Classic/360S/Series X/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
    OnePlus 6 8GB/256GB
    jacdelad.bplaced.net