Sida 1 av 1

Ny nybörjare i C

Postat: 14 juli 2008, 23:55:16
av RasmusB
Har fuskat runt i C under ett antal projekt genom åren, men jag har aldrig riktigt vetat vad har hållit på med känns det som ;) Nu har jag iaf bestämt mig för att ta tag i det ordentligt och lära mig från början!

Så ikväll satte jag mig med en fräsch installation av Dev-C++ och "A book on C" och började hacka för fullt. Resultatet blev följande:

Bild

Programmet är ihophackat på två timmar av en nästan total nybörjare på c, så det är lite oslipat än så länge ;) Tanken är att den här övningen ska portas till mitt ARM7-utvecklingskort senare för att göra en portabel sudoko-fuskare :)

Buggar / features:

- kan bara lösa sudokos som går att lösa med enbart logik, kör programmet fast så spottar det glatt ur sig det halvfärdiga pusslet...

Övrigt:

- Programmet accepterar textfiler med "standard" sudoko-notation. Exempel: Stoppa in raden med punkter och siffror i programmet, så motsvarar det sudokut nedanför :) (Nej, just det här sudokut klarar programmet inte att lösa...)

Kod: Markera allt

.2.4.37.........32........4.4.2...7.8...5.........1...5.....9...3.9....7..1..86..

. 2 . | 4 . 3 | 7 . .  
. . . | . . . | . 3 2  
. . . | . . . | . . 4  
------+-------+------ 
. 4 . | 2 . . | . 7 .  
8 . . | . 5 . | . . .  
. . . | . . 1 | . . .  
------+-------+------ 
5 . . | . . . | 9 . .  
. 3 . | 9 . . | . . 7  
. . 1 | . . 8 | 6 . .  
- Programmet körs i kommandoprompten i windows. Det borde funka under DOS också om någon vill testa... ;)

- Länk till eländet: http://www.student.itn.liu.se/~rasba001 ... sudoku.rar

Innehåller .exe och en exempelfil som programmet faktiskt KAN lösa... :)
Edit: sudoko.c finns med nu också (för självplågare och andra)

Postat: 15 juli 2008, 00:59:47
av speakman
Snyggt! Men hade hellre sett källkoden än en EXE-fil. ;)

(Ett plus för att du satt Bugs och Features på samma rad. Ett steg i rätt riktning då det alltid är en fråga om definition och subjektivitet)

Postat: 15 juli 2008, 11:54:08
av SvenW
Trevligt med C. Det roligaste språket näst assembler. Men som speakman säger, en binär (exe-fil) har inget värde! Den är lika värdelös som en kopia av ett M$-operativsystem.
I Linux har man en hel infrastruktur färdig att använda, miljarder rader med kod att återanvända och massor av exempel på hur man gör. Du har väl läst Katedralen och basaren!
http://home.swipnet.se/swi/KatB-se.html

Postat: 15 juli 2008, 15:37:47
av RasmusB
Jodå, källkod dyker upp när jag kommit hem ikväll. Men jag kan inte garantera att den är vacker precis! ;)

Postat: 15 juli 2008, 18:59:32
av speakman
Som ett sidospår... jag hade en idé om att ta fuskandet av sodoku ytterligare ett steg genom OCR och handscanner. Har fått tag i en liten scanner, men mycket längre har jag inte kommit. ;)

Vilka språk kan du sedan innan?

Postat: 15 juli 2008, 20:09:06
av RasmusB
Haha intressant idé! :D Borde ju inte vara helt omöjligt... gjorde ett bildigenkänningsprogram för en DSP-processor skrivet i c... det var nog under det projeketet jag insåg att jag inte hade nån aning om hur c egentligen fungerar... ;) Men det funkade till slut! :)

Hmm. Programmerar lite för sällan för att tycka att jag "kan" några språk egentligen. Men jag har lagt en hel del tid på Java och PIC assembler. VHDL är väl inget programmeringsspråk på det sättet, men det är väl det jag använder just nu till mitt exjobb, så där har jag iaf lite koll på hur man gör. :) Läste C++ på gymnasiet också, men det har jag inte använt sen dess.

Iallafall så är rar-filen ovanför uppdaterad med källkod. Den som orkar kolla på den kommer att lägga märke till två saker:

- Engelska och svenska blandas friskt i koden! På exjobbet sitter jag och skriver kommentarer och dokumentation på engelska, så det blir oftast engelska helt automagiskt... ;)

- Den är inte optimerad alls. Ett bra exempel på det är att funktionen scan_allowed scannar vissa rutor flera gånger. Tanken bakom det är att samma funktion senare ska kunna fungera som ett "sanity test" för att kolla så det inte är några uppenbara misstag i det inmatade sudokut...

I övrigt är jag tacksam för kommentarer, uppmuntran och förslag till förbättringar! :)

Postat: 15 juli 2008, 21:46:30
av SvenW
Jag kollade på koden. Ser bra ut. Kompilerade utan problem på mitt Ubuntu 8.04. Testexemplet fungerade också.
Fast jag tror att 'rar' är patenterat. Patenterade program och metoder skall man undvika om man är en renlärig zelot!

Postat: 15 juli 2008, 21:53:13
av speakman
Jag tyckte också det såg riktigt bra ut för att vara i startgroparna. Skulle också rekommendera att använda ren engelska oavsett ändamål. Sedan kan man köra gettext för att översätta programmet till flera språk, men man slipper dalta med teckenkodning i själva källkodsfilerna.

Och jag pushar även för tar.gz/bz2 el. motsvarande. ;)

Postat: 15 juli 2008, 21:55:11
av RasmusB
Tack för kommentarerna! Då verkar det vara det någorlunda portabelt då! :) Fast jag antar att sudoku-brädet som ritas upp ser lite osnyggt ut under linux?

Må så vara... men du lyckades ju packa upp den ändå? :)

Postat: 15 juli 2008, 21:57:04
av RasmusB
speakman skrev:Jag tyckte också det såg riktigt bra ut för att vara i startgroparna. Skulle också rekommendera att använda ren engelska oavsett ändamål. Sedan kan man köra gettext för att översätta programmet till flera språk, men man slipper dalta med teckenkodning i själva källkodsfilerna.
Bra tips, tack! :)