Forum: PC-Programmierung Sudoku


von Hans (Gast)


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

von Rolf Magnus (Gast)


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.

von Dirk S. (dirk_schnitzler)


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...

von Hans (Gast)


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

von Dirk S. (dirk_schnitzler)


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!

von Hans (Gast)


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

von Dirk S. (dirk_schnitzler)


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

von Michael (Gast)


Angehängte Dateien:

Lesenswert?

Versuch Dein Glück !

94

von Hans (Gast)


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

von Matthias (Gast)


Lesenswert?

Erstell doch ein Programm, daß Sudoku-Spielfelder erzeugt ;-)

von Michael (Gast)


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 :-)

von Karl H. (kbuchegg)


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?

von Hans (Gast)


Angehängte Dateien:

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

von Manuel B. (Gast)


Lesenswert?

(entfernt)

von The Daz (Gast)


Lesenswert?

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

Sagt wer ? M$ ?

von Rolf Magnus (Gast)


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.

von Bartli (Gast)


Lesenswert?

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

von Bartli (Gast)


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.

von Dirk (Gast)


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
;))

von Hegy (Gast)


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)

von Bartli (Gast)


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.

von Andreas S. (andreas) (Admin) Benutzerseite


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.

von The Daz (Gast)


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).

von Hans (Gast)


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

von Bartli (Gast)


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.

von Hans (Gast)


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/2005/11/Scripting/default.aspx)
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

von Μαtthias W. (matthias) Benutzerseite


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

von Uwe (Gast)


Lesenswert?

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

von Uwe (Gast)


Lesenswert?

sorry ich meinte die sys/time.h time.h wo bekomm ich die her

von Crush (Gast)


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.

von Karl H. (kbuchegg)


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.

von Hans (Gast)


Lesenswert?

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

73

von faust (Gast)


Lesenswert?

www.websudoku.com

von Simon Lehmayr (Gast)


Angehängte Dateien:

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 :-)

von Ruedi Wiesendanger (Gast)


Lesenswert?

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

von Marco S (Gast)


Angehängte Dateien:

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

von Simon Lehmayr (Gast)


Angehängte Dateien:

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...

von Hans (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.