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
> ...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.
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...
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
"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!
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
Ich versteh´ dich schon ;) Die Antwort bezog sich auf "hat denn hier niemand..." Deswegen zu (wenigstens) meiner Verteidigung: "Ich zock´ nicht -> keine Files" *GG
|---|---|---| |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
@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 :-)
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?
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
"Mal angesehene, das JAVA von C# abgelöst werden soll, wärend C bestand haben soll" Sagt wer ? M$ ?
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.
Also bitte, Vergleiche zwischen zwei Sprachen mit so unterschiedlichen Zielen/Einsatzgebieten wie C und Ruby sind doch nun wirklich für die Katz.
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.
"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 ;))
@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)
>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.
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.
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).
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
> 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.
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
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
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.
> 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.
einfach rausnehmen.. ich wollte nur schaun wielang das dauert bis eine lösung gefunden wurde... 73
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 :-)
@ 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
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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.