www.mikrocontroller.net

Forum: PC-Programmierung Sudoku


Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nachdem ich vorgestern eine nette unterhaltung mit einem
"software-guru" sprich telematik-studenten hatte, der meinte c sei
unnötig und veraltet und einen sudoku-solver kann man darin auch nicht
vernünftig schreiben hab ich in 3h einen hingeklatscht...

nachdem meine lösung um gut 150  zeilen weniger code beinhaltet wie die
beispiel-lösung vom telematiker-prof glaub ich sie dürfte auch nicht
sooo schlecht sein ;)

jetzt bräucht ich ein "paar" sudokus zum testen... es hat nicht
zufällig jemand welche in einer file??? tippen ist sooo anstängend g

73

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ...unterhaltung mit einem "software-guru" sprich
> telematik-studenten hatte, der meinte c sei unnötig und
> veraltet...

Was hält er denn für besser? Frag ihn mal, in was
Compiler/Interpreter/Runtime-Environment seiner Sprache wohl
geschrieben sind, oder der Kernel des Betriebssystems, unter dem das
läuft.

Autor: Dirk Schnitzler (dirk_schnitzler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Solche Aussagen halte ich auch immer für sehr fragwürdig. Vielleicht war
er durch seine Glückshormone, "seine Sprache" endlich zu beherrschen,
so aufgebracht, daß er (´Tschuldigung) so´n MIST erzählt hat...*g
(Fast) Jede Sprache hat ihre Berechtigung zur Existenz und ist für
einen oder mehrere Zwecke geschaffen.
Viele Programmierer, die ich kenne, schwärmen von der "Schönheit" der
C-Syntax. Andere fluchen den ganzen Tag, wenn sie´s lernen müssen ;).
Aber schau dir mal den Werdegang von C an und dann beurteile selbst, ob
man damit was anstellen kann/konnte, oder nicht. Oder ob es mittlweile
"sinnvollere" Alternativen gibt...

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tja der meinung bin ich ja auch... und son sudoku-solver halte ich für
sehr praktisch.. da werd ich mir noch ein bisserl code dazubasln und
alles auf einen avr packen.. dann hab ich einen tragbaren sudokusolver
und erspar mir viel ärger in der mensa G

aber leider hat anscheinend niemand einige sudokus in irgendeiner
file... mal schaun vielleicht ergoogle ich noch was ...

73

Autor: Dirk Schnitzler (dirk_schnitzler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"aber leider hat anscheinend niemand einige sudokus in irgendeiner
file..."

*LOL
Ich hab das Zocken aufgegeben, seitdem ich meinen alten Amiga
hergegeben habe ;) Und Kniffel kann man "zur Not" auch mit einem
Blatt Papier spielen...
Sag´ bescheid, wenn du ´n Kniffel programmiert hast!

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich glaube da missversteht mich jemand... das teil soll die dinger nur
lösen und  demonstrieren, dass c bei solchen aufgaben nicht zu
unterschätzen ist ;)

73

Autor: Dirk Schnitzler (dirk_schnitzler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich versteh´ dich schon ;)
Die Antwort bezog sich auf "hat denn hier niemand..."
Deswegen zu (wenigstens) meiner Verteidigung: "Ich zock´ nicht ->
keine Files" *GG

Autor: Michael (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Versuch Dein Glück !

94

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
|---|---|---|
|927|516|384
|584|273|961
|361|948|527
|---|---|---|
|245|739|816
|136|482|759
|879|165|432
|---|---|---|
|412|357|698
|758|691|243
|693|824|175

;) es scheint zu funktionieren... thx

73 de oe6* / Hans

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erstell doch ein Programm, daß Sudoku-Spielfelder erzeugt ;-)

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Hans:
Vielleicht kann  man Dein Programm auch einmal selber testen ? Ich
hatte auch schon einmal überlegt, soetwas zu schreiben, aber
Aufwand/Nutzen sind vielleicht fraglich.
In der 'Zeit' stehen immer schöne Sudokus, die sich nach meiner
Einschätzung an verbissene Schachspieler wenden (viele Optionen im
voraus planen). Ich habe es lieber 'direkt' lösbar mit
Erfolgserlebnis. Wenn ich knobeln will, mache ich besser ein
µP-Layout.

Wenn Dein Programm perfekt ist, müßte es auch funktionieren, wenn Du
irgendwo z.B. eine '1' eingibst (geben, nicht gipsen :-)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenn zwar sudoku nicht, aber nach der Beschreibung
in Wikipedia
http://de.wikipedia.org/wiki/Sudoku
sieht das fuer mich wie eine Variante des bekannten
'8-Damen' Problems aus.
Also: Backtracking und den Rechner mal machen lassen.
Sollte sich in ca. 80 bis 120 Zeilen abhandeln lassen.

Wieso das in C nicht vernuenftig machbar sein soll, ist
mir nicht ganz klar. Dein Profi verwechselt anscheinend
die Faehigkeiten eines Werkzeugs mit den Faehigkeiten eines
Programmieres der dieses Werkzeug benutzt.
Was schlaegt denn Dein Profi vor?

Autor: Hans (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Der code ist weder schön noch irgendwie optimiert... hab den irgendwann
zwischen 11 und 3 in der früh gebastelt... also wenn alles etwas
verwirrend ausschaut.. das war ich zum entstehungszeitpunkt zeitpunkt
;)

wenn man die ints in chars verwandeln würde (beim debuggen hätte ich
dauernd casten müssen.. bastle mit kdevelop noch nicht allzulang.. da
gibts sicher einen trick um chars als zahlen statt als zeichen zu sehen
beim debuggen) müsste der code richtig fix sein am avr ;) und so ein
sudokusolver wär doch ein richtig schickes geek-tool ;)

mein "profi" war der meinung, dass java die zukunft sei.. gut wenn er
meint.. ;) und irgendwas von ruby ist so toll weil alles ein objekt
ist.. gut da nehm ich dann aber smalltalk und kann mir binarys machen
wenn ich alles als objekt haben will...

der code geht übrigens rein analytisch  vor.. also nix mit raten und so
.. nur etwas logic und passt...

die "profis" denen ich das übrigends unter die nase reiben musste
(also nicht der, der meint c sei schrott) sollten das in prolog
machen...und dort sinds laut beispiellösung über 400zeilen gewesen...

73

Autor: Manuel B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
(entfernt)

Autor: The Daz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Mal angesehene, das JAVA von C# abgelöst werden soll, wärend C
bestand
haben soll"

Sagt wer ? M$ ?

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das ist immer so eine Sache, wenn Firma 1 ein Produkt A verkauft und
Firma 2 dann ein Produkt B rausbringt, das A ablösen soll. Da steckt
dann doch eher das Wunschdenken von Firma 2 dahinter. Ob's dann auch
so kommt, muß der Markt entscheiden.

Autor: Bartli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also bitte, Vergleiche zwischen zwei Sprachen mit so unterschiedlichen
Zielen/Einsatzgebieten wie C und Ruby sind doch nun wirklich für die
Katz.

Autor: Bartli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber was ist eigentlich sooo schlimm daran, wenn noch ne
Laufzeitumgebung installiert werden muss ? Unseren Kunden ist es
jedenfalls ziemlich gleich, ob auf ihren Kisten noch eine JVM oder
meinetwegen auch ein Rubyinterpreter installiert werden muss,
Hauptsache die Applikation läuft und macht was sie soll.

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Aber was ist eigentlich sooo schlimm daran, wenn noch ne
Laufzeitumgebung installiert werden muss ?"
Nichts? Wenn deine Kunden das ok finden... Und deine Kunden in der Lage
sind, diese zu installieren.

Das ist ja ein richtiger Heulthread geworden *LOL Er wollte doch
eigentlich nur ein par Sudoku-Files;) Und vielleicht noch diesem
Telematiker-Studenten eins auswischen, was er ja auch mittlerweile
geschafft haben sollte. Der wird sich jetzt bestimmt vor C (oder Java,
oder C#, oder Ruby) verneigen und nie wieder was anderes lernen wollen
;))

Autor: Hegy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Hans

brauchst du noch Sodukos? Habe hier 6 Stueck, jeweils 2 vom Level 1,
Level 3 und Kamikaze.

Jede Woche im Raetstelteil der AD (www.ad.nl)

Autor: Bartli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Sowas kann nur jemand sagen, der noch nie
>zeitkritische Programme auf
>ausgereizter Hardware programmieren musste.

Woher willst du denn jetzt wissen, was ich schon alles gemacht bzw.
nicht gemacht habe ?

Und wie du selbst sagst hat man manchmal, besonders wenns um
Applikationen geht (und nicht um Firmware oder sowas) so eine grosse
Leistungsreserve, dass man sich wirklich selbst einen Gefallen tun und
eine andere Sprache als C verwenden kann. Das Resultat sind dann
üblicherweise geringere Entwicklungszeit (zumindest ich arbeite mit
Ruby deutlich schneller als mit C/C++ oder auch Java/C#), dafür etwas
schlechtere Performance. So what.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
C mit Ruby o.ä. zu vergleichen ist wirklich Unsinn, da beide für völlig
verschiedene Anwendungszwecke gedacht sind. Niemand würde auf die Idee
kommen einen Mikrocontroller in Ruby zu programmieren, genausowenig we
man einen Webshop in C programmieren würde.

DASS sich ein Problem in C (, ...) lösen lässt sagt nichts darüber aus
wie gut C (, ...) zur Problemlösung geeignet ist. Für dieses Problem
ist C wohl eine der ungeeignetsten Sprachen. Seine einzigen Stärken
(geringer Speicher- und Rechenzeit-Overhead) kann C hier nicht
ausspielen, da es keine Rolle spielt ob das Programm 0.5 oder 10 MB RAM
bzw. 0.1 oder 2 Sekunden benötigt. Die Matlab, Ruby, Ocaml-Lösungen die
ich gesehen habe sind DEUTLICH kompakter als die in C.

Autor: The Daz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Manuel,
noe. Meine Gegenfrage hat sich aber auch auf die Abloesungsbehauptung
bezogen und stellt nicht die Existenz von C# auf Linux in Frage. Dass
C++ oder Java von C# abgeloest werden halte ich aber fuer illusorisch.
Java konnte ja auch nicht C++ verdraengen, auch wenn alle vor ein paar
Jahren noch furchtbar auf die Kacke gehauen haben. Gut moeglich, dass
C# an Bedeutung gewinnen wird, aber in einem wachsenden Markt wird es
wohl eher mit C++ gleichziehen, als es zu verdraengen. Und wenn die
Zeit fuer C++ gekommen ist, ist man ueber C# auch hinweg. Dann gehts
den Weg ins Hochsprachen-Altersheim (wie z.B. Cobol).

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
lasst uns doch mal über einen gemeinsamen "feind" herziehn... ;)

schon die "neue" scriptsprache von m$ gesehen ??? ist doch "etwas"
perl-ähnlich G

btw meine lösung ist rein analytisher natur... mit backtrace müssten
unter 100 zeilen genügen.. wenn nicht noch weniger.. dafür brauchsts
dann massig stack...

73

Autor: Bartli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> schon die "neue" scriptsprache von m$ gesehen ???
> ist doch "etwas" perl-ähnlich *G*

Nö. Wie soll das Zeugs heissen ? Würd mich jetzt noch interessieren
was die da wieder gewurschtelt haben.

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab mir das nicht gemerkt.. in diesem ct ist ein schöner artikel
drinnen... anscheinend hat sich das heft mein bruder schon
gegrapscht.... auf jedenfall sind da auch codebeispiele drinnen...

bin mir ned sicher ob das
(http://www.microsoft.com/technet/technetmag/issues...)
das gleiche ist.. scheint mir aber so zu sein.. zumindest beim schnellen
drüberschaun.. nur da gehts um eine ganze shell .. in dem artikel im ct
gehts wenn ich das richtig gesehen hab ( hab mir das aufgespart falls
ich morgen erheiterung wünsche ;)

auf jeden fall ist das schon stark...

---------snip---------
Microsoft® Command Shell (MSH), codenamed "Monad," is the answer to
those who are looking for a more flexible and practical scripting
environment for Windows. The goal of Monad is to provide a shell
environment similar to the Korn, Bourne, or other shells on UNIX and
Linux, and a rich programming language like Perl or Ruby, combined with
the functionality of the Microsoft .NET Framework.
---------snip------------

ich finds nett ;D

73

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

M$ sammelt halt mal wieder ne Menge guter Ideen, rührt einmal kräftig
durch und macht ein Produkt daraus. Das kennen wir ja schon von Windows
1/2/3/95/98/ME/NT/2000/XP/Rindvieh über Office bis hin zum
.NET-Framework und C#. Wenigstens schreiben sie ganz deutlich woher die
Ideen kommen. Und für eine ordentliche Shell wurde es dann auch wirklich
mal Zeit. Unix kann das seit zig Jahren.

Matthias

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sag mal kompilieren lässt sich das aber nicht. Oder fehlt mir da noch
eine objektdatei??

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorry ich meinte die sys/time.h time.h wo bekomm ich die her

Autor: Crush (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falls es noch von Interesse ist, guck einfach mal auf der Internetseite
von "Die Zeit". Dort gibt es für jeden Tag ein Sudoku mit Lösung.
Eignet sich also hervorragend zur Kontrolle deines Programms.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> sorry ich meinte die sys/time.h time.h wo bekomm ich die her

Die kannst Du auch weglassen.
Wird offensichtlich nur benutzt um die Nicht-Standard Funktion
times() zu erhalten.
So wie ich den Code lese, kann diese Funktion wiederum
durch die Standard-Funktion clock() ersetzt werden.

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
einfach rausnehmen.. ich wollte nur schaun wielang das dauert bis eine
lösung gefunden wurde...

73

Autor: faust (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
www.websudoku.com

Autor: Simon Lehmayr (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Zum Thema java&Sudoku:
Meine Sudoku-Tools habe ich mit java und eclipse zusammengebastelt.
Features:
- Sudoku-Generierung (spezialisiert auf 9x9, 15x15, 16x16 mit
verschiedenen Schwierigkeitsgraden)
- Sudoku-Lösung (alle Lösungen werden gefunden)
- Sudoku-Größe bis über 1600x1600 beim Erzeugen, 64x64 beim Lösen
- Solver für ungewöhnliche Sudokus (Jigsaw, die 3x3-Blöcke sind anders
auf das Spielfeld gelegt)
- Ziemlich schnell
- Liest von Tastatur oder Datei

Die Tools werden demnächst auf Java-Handies portiert, daher passts ganz
gut ins Mikrocontroller-Forum :-)

Autor: Ruedi Wiesendanger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier gibt es ein hübsches Sudoku Programm (geschrieben in Delphi):
http://angusj.com/sudoku/

Autor: Marco S (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
@ Hans:

Also kompilieren lässt es sich, aber der sudokusolver.cpp findet nicht
alle Lösungen. Probiert mal

char g_SudokuData[9][9]={
        {0,0,4,9,8,5,1,0,6},
        {0,5,8,6,0,0,0,0,4},
        {0,0,0,3,0,0,0,8,0},

        {0,0,0,0,3,8,7,6,0},
        {0,1,0,0,5,6,0,0,8},
        {0,0,0,0,9,2,0,0,3},

        {0,0,1,8,0,0,6,3,0},
        {8,2,0,0,6,7,9,0,0},
        {4,0,0,0,0,3,8,0,0}
};

Das stand letztes Wochenende in meiner Zeitung. Daraufhin habe ich mal
selbst was in Python geschrieben. Das ist nix weltbewegendes und kommt
mit 144 Codezeilen aus. Aber er findet die Lösung.

lg

Autor: Simon Lehmayr (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Java-SudokuSolver:
Neuer Schwierigkeitsgrad 6: Nicht mehr mit dem (wirklich genialen)
Spiel "Simple Sudoku" (http://angusj.com/sudoku, siehe Beitrag von
Ruedi) per Logik zu lösen! Und das Spiel kennt wirklich unglaubliche
Logiksachen...

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tjo warscheinlich müsste ich das sudoku "drehen" und nochmal
durchlaufen.. war zu faul alles zu machen.. und wenn man schöner
programmiert müsste das noch besser machbar sein.. aber ich werd mir
das bei zeiten mal anschaun ;)

thx für den "bug" report :)

73

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.