Möchte ein Sudoku-Programm erstellen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Möchte ein Sudoku-Programm erstellen

Beitrag von marcelx »

Hallo,

ich bin ganz neue hier und habe pureBasic gefunden, nach dem ich nach ein neue Sprache gesucht habe.
Ich komme mehr von Linux/Java ... und mache meine erste Schritte aus Windows (was Software Entwicklung angeht).

Was ich bei pureBasic gut finde ist, das ich damit Executable für Windows erzeugen kann.

Mein Vorhaben ist ein suduko-Program zu realisieren (kenne ich von Java).
Mit Erzeugung + Lösung und ein Möglikeit ein "Vordruck" zu erzeugen.

Mal sehe wie es klappt (ich habe pureBasic noch nicht installiert)

Salut
Marcel

Änderung von WPö: Thementitel angepaßt.
Win-10, PB 5.31 (Windows - x86)
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: neue und suduko-Program

Beitrag von Andesdaf »

Willkommen an Board,

Hast du auch eine Frage oder war das einfach nur ein "Hallo, ich bin neu hier"?
Win11 x64 | PB 6.20
Benutzeravatar
WPö
Moderator
Beiträge: 669
Registriert: 27.05.2008 12:44
Wohnort: Oberland
Kontaktdaten:

Re: neue und suduko-Program

Beitrag von WPö »

Hallo!

Erstmal willkommen hier im Forum, auch zu Purebasic. Woher kommst Du?
Wenn Du bessere Hilfe von Anfang an willst, schreib doch mal Deine Rechnerausstattung in die Signatur.

Gruß - WPö
Ich glaube nur der Statistik, die ich selbst gefälscht habe!
Meine Netzpräsenz: WPö.de
PB5.31 auf LMDE und Pentium T7200 2,00GHz, 4GB DDR2, ATI X1400.
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: neue und suduko-Program

Beitrag von marcelx »

Na ja, beides.

Ich habe nicht vor heute Abend los zu legen.
Ich muss mich zu erste zurecht finden mit die für mich neue Syntax (und ohne OO)
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: neue und suduko-Program

Beitrag von marcelx »

Es geht schon los:
> Woher kommst Du?
Wie meist Du das? (ich komme auf Frankreich)
Zweite:
wie geth das mit der Signatur?

Muss leider Schluss machen (es gibt was zum essen)
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: neue und suduko-Program

Beitrag von RSBasic »

Herzlich Willkommen marcelx,


kannst ja erstmal reinschauen,wie die Syntax aufgebaut ist und wie ein Sudoku-Spiel aufgebaut ist:
http://www.purebasic.fr/german/viewtopi ... 11&t=19974
http://www.purebasic.fr/german/viewtopi ... 12&t=15919
http://www.purebasic.fr/german/viewtopi ... =12&t=5735

Viel Spaß :allright:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
WPö
Moderator
Beiträge: 669
Registriert: 27.05.2008 12:44
Wohnort: Oberland
Kontaktdaten:

Re: neue und suduko-Program

Beitrag von WPö »

Frankreich - na, dann sehen wir mal über den eigentümlichen Sprachduktus hinweg. 8)

Sobald Du angemeldet bist, siehst Du unter dem Seitenkopf Persönlicher Bereich, darin in Optionen das Profil, darin Signatur ändern.
Da gibst Du ein paar Infos ein und klickst auf Absenden. Dann klappt es.

Gruß - WPö
Ich glaube nur der Statistik, die ich selbst gefälscht habe!
Meine Netzpräsenz: WPö.de
PB5.31 auf LMDE und Pentium T7200 2,00GHz, 4GB DDR2, ATI X1400.
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: neue und suduko-Program

Beitrag von Mok »

marcelx hat geschrieben:und ohne OO
Stimmt fast!
In PureBasic gibt es zwar keine Klassen, aber es gibt Structures, von denen auch geerbt werden kann.
Beispiel:

Code: Alles auswählen

JAVA:
public class Test{
    int a, b;
    boolean c = false;
    public Test (int a, int b, boolean c) {
        this.a = a; this.b = b; this.c = c;
    }
    public void printVar() {
        System.out.println("a: "+a);
        System.out.println("b: "+b);
        System.out.println("b: "+b);
    }
}

Code: Alles auswählen

PUREBASIC:
Structure Test
    a.i
    b.i
    c.l
EndStructure
; Konstruktor gibt es nicht, aber es gibt:
Define var.Test
var\c = #False
; klassenspezifische Methoden gibt es auch nicht, aber es gibt Procedures
Procedure PrintVar()
    PrintN("a: "+Str(a))
    PrintN("b: "+Str(b))
    PrintN("c: "+Str(c))
EndProcedure

;BSP für Vererbung
Structure SubTest Extends Test
    d.s
EndStructure

Define var2.SubTest
var2\a = 4
var2\d = "Hallo Welt"
MfG, Mok

PS: Auch von mir: Herzlich Willkommen oder eben bienvenue! :allright:
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: Möchte ein Sudoku-Programm erstellen

Beitrag von marcelx »

Bevor ich mit pureBasic-Code los lege :

Ich habe mir ein Überblick verschafft über Algorithmus für sudoku
und die PB-Programm beim mir ausgeführt.
http://www.purebasic.fr/german/viewtopi ... 12&t=15919
Die Ausführungszeit ist sehr langsam.

Ich habe überlegt wie ich ein sudoku + Lösung so realisieren kann:

A) ein fertigt gelöst sudoku (LOESUNG) erzeugen als Array
Dafür habe ich ein LösungsWeg (siehe unten).
Die Frage ist: wie eindeutig ist er?

B) einer Maske (MASKE) als 9X9 Array mit 0 und 1:
In Abhängigkeit der Schwierigkeitsgrad, werden 0 und 1 verteilt:
001 010 000
100 001 110
011 100 000
...
- Da habe ich mir noch keine Gedanke gemacht wie zu realisieren

C) Aus den Array LOESUNG werden die Zellen in eine neue Array (SUDOKU) übernommen, wen die dazugehörige Zelle aus den Array MASKE auf 1 gesetzt sind.
Die anderen Zellen bleiben leer.
Da habe ich mir auch keinen Gedanken gemacht.
Gibt eine PB-Funktion für so was?

Sonst noch offen ist für mich:
- Ist der erzeugt und zu lösende suduko lösbar?
- Gibt es eine eindeutige Lösung?

Hier mein Ansatz für A:
=======================

Das ganze 9x9-sudoku schreibe ich in ein 9x9 Array (Block).
Gedankliche, teile ich den sudoku in 3x3 Feldern (A .. I)
Eine Zelle ist ein Stelle mit ein Zahl (1 .. 9) in den array.

Und so sehe ich mein sudoku:

Code: Alles auswählen

+-+-+-+-+-+-+-+-+-+
|     |     |     |
|  A  |  B  |  C  |
|     |     |     |
+-+-+-+-+-+-+-+-+-+
|     |     |     |
|  D  |  E  |  F  |
|     |     |     |
+-+-+-+-+-+-+-+-+-+
|     |     |     |
|  G  |  H  |  I  |
|     |     |     |
+-+-+-+-+-+-+-+-+-+
1.) im Block A, E und I schreibe ich zufällige Zahlen von 1 .. 9
und bekomme z.B.:

Code: Alles auswählen

+-+-+-+-+-+-+-+-+-+
|4 2 6|     |     |
|1 7 9|     |     |
|8 5 3|     |     |
+-+-+-+-+-+-+-+-+-+
|     |1 3 8|     |
|     |4 6 9|     |
|     |7 2 5|     |
+-+-+-+-+-+-+-+-+-+
|     |     |3 8 6|
|     |     |5 2 9|
|     |     |7 1 4|
+-+-+-+-+-+-+-+-+-+
2.) in der Reihenfolge D, H, G, B, F und G schreibe ich zufällige Zahlen von 1 .. 9, welche in der Spalte und Zeile der dazugehörige Zelle nicht vorhanden sind und noch nicht in den zugehörige Block

Code: Alles auswählen

+-+-+-+-+-+-+-+-+-+
|4 2 6|     |     |
|1 7 9|< 4. |< 6. |
|8 5 3|  v  |  v  |
+-+-+-+-+-+-+-+-+-+
| ^   |1 3 8|     |
| 1.> |4 6 9|< 5. |
|     |7 2 5|  v  |
+-+-+-+-+-+-+-+-+-+
| ^   | ^   |3 8 6|
| 3.> | 2.> |5 2 9|
|     |     |7 1 4|
+-+-+-+-+-+-+-+-+-+

z.B für D
+-+-+-+-+-+-+-+-+-+
|4 2 6|     |     |
|1 7 9|     |     |
|8 5 3|     |     |
+-+-+-+-+-+-+-+-+-+
|7 9 2|1 3 8|     |
|5 8 1|4 6 9|     |
|6 3 4|7 2 5|     |
+-+-+-+-+-+-+-+-+-+
|     |     |3 8 6|
|     |     |5 2 9|
|     |     |7 1 4|
+-+-+-+-+-+-+-+-+-+
Soweit so gut und Hilfen/Kommentaren erwünscht.
Merci et salut
Marcel
Win-10, PB 5.31 (Windows - x86)
Antworten