Προς το περιεχόμενο

ΑΥΤΟΜΑΤΗ ΕΠΙΛΥΣΗ SUDOKU-ΜΗ ΠΡΟΚΑΘΟΡΙΣΜΕΝΩΝ ΔΙΑΣΤΑΣΕΩΝ


life24

Προτεινόμενες αναρτήσεις

ΚΑΛΗΣΠΕΡΑ ΣΕ ΟΛΟΥΣ ΣΑΣ

 

ΤΙ ΚΑΝΕΤΕ?ΘΕΛΩ ΜΙΑ ΜΙΚΡΗ ΒΟΗΘΕΙΑ ΠΑΝΩ ΣΕ ΜΙΑ ΑΣΚΗΣΗ ΣΤΗΝ C.ΕΧΩ ΜΙΑ ΑΠΟΡΙΑ,ΕΧΩ ΚΑΝΕΙ ΕΝΑ ΚΩΔΙΚΑ SUDOKU ΓΙΑ ΕΝΑ ΜΙΣΟ-ΛΥΜΕΝΟ.Η ΑΠΟΡΙΑ ΜΟΥ ΕΙΝΑΙ ΣΤΟΝ ΑΥΤΟΜΑΤΙΣΜΟ ΤΟΥ.ΔΗΛΑΔΗ ΣΕ ΑΥΤΗ ΤΗΝ ΑΣΚΗΣΗ ΠΡΕΠΕΙ ΝΑ ΚΑΝΩ ΕΝΑ ΠΡΟΓΡΑΜΜΑ ΤΟ ΟΠΟΙΟ ΘΑ ΒΡΙΣΚΕΙ ΜΕ ΑΥΤΟΜΑΤΟ ΤΡΟΠΟ ΜΙΑ ΛΥΣΗ ΣΕ ΕΝΑ SUDOKU ΜΗ ΠΡΟΚΑΘΟΡΙΣΜΕΝΩΝ ΤΕΤΡΑΓΩΝΙΚΩΝ ΔΙΑΣΤΑΣΕΩΝ ΝχΝ.ΜΕ ΛΙΓΑ ΛΟΓΙΑ ΠΩΣ ΘΑ ΜΕΤΑΤΡΕΨΩ ΤΟΝ ΚΩΔΙΚΑ ΜΟΥ ΕΤΣΙ ΩΣΤΕ ΝΑ ΜΠΟΡΕΙ ΝΑ ΛΥΝΕΤΑΙ ΑΥΤΟΜΑΤΑ ΟΠΟΙΟ ΕΙΔΟΣ SUDOKU ΚΑΙ ΑΝ ΤΟΥ ΒΑΛΩ ΧΩΡΙΣ ΝΑ ΕΠΕΜΒΑΙΝΩ ΚΑΘΕ ΛΙΓΟ ΣΤΟΝ ΚΩΔΙΚΑ ΜΟΥ.ΣΑΣ ΠΑΡΑΘΕΤΩ ΠΟΙΟ ΚΑΤΩ ΤΟΝ ΚΩΔΙΚΑ ΜΟΥ.

 

Υ.Γ:Ο ΚΩΔΙΚΑΣ ΜΟΥ ΕΙΝΑΙ ΤΕΛΕΙΩΜΕΝΟΣ ΑΠΛΩΣ ΤΟ ΜΟΝΟ ΠΡΑΓΜΑ ΠΟΥ ΠΡΕΠΕΙ ΝΑ ΚΑΝΩ ΕΙΝΑΙ ΝΑ ΑΛΛΑΞΩ ΤΟ #define TOY SUDOKU ΚΑΙ ΔΕΝ ΞΕΡΩ ΠΟΣΟ ΝΑ ΤΟ ΒΑΛΩ ΕΤΣΙ ΩΣΤΕ ΝΑ ΛΥΝΕΙ ΚΑΘΕ ΕΙΔΟΣ ΤΟΥ SUDOKU ΧΩΡΙΣ ΝΑ ΕΠΑΙΜΒΕΝΩ ΣΤΟΝ ΚΩΔΙΚΑ ΜΟΥ ΚΑΘΕ ΛΙΓΟ.ΕΧΩ ΒΡΕΙ ΚΑΤΙ ΣΤΟ INTERNET ΑΛΛΑ ΔΕΝ ΞΕΡΩ ΑΝ ΕΙΝΑΙ ΣΩΣΤΟ ΓΙ'ΑΥΤΟ ΘΕΛΩ ΤΗΝ ΒΟΗΘΕΙΑ ΣΑΣ.

 

ΣΑΣ ΕΥΧΑΡΙΣΤΩ ΕΚ ΤΩΝ ΠΡΟΤΕΡΩΝ.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

φίλε πολύ ωραίο προγραμματάκι μπράβο!

 

το τέσταρα λίγο και σε μερικά μου λέει: "can't solve"

 

συγκεκριμένα:

 

005230000

100006093

000000654

700900000

050000040

000001006

278000000

590300007

000058100

 

πάντως μπράβο που εξέτασες και αυτή τη περίπτωση (δλδ αν δε λυθεί τι θα γίνει). Επίσης κορυφή που κάνει διαδοχική εμφάνιση των αριθμών!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

geia sou file lomar,ti kaneis?

 

isws den katalaves tin aporia mou.egw thelw na me voithisete sto ti prepei na kanw ston kwdika mou etsi wste na diavazei ola ta eithi tou sudoku xwris egw na epemvenw ston kwdika kathe fora kai na allazw tin metavliti tou N.o kwdikas autos lunei mono ta sudoku 9x9.egw thelw na lunei ola ta eithi tou sudoku automata.

 

 

thanks!!:-D

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αν και δεν ξέρω c, το πρόβλημα λογικά είναι ότι δεν μπορείς να κάνεις instantiate έναν int array χωρίς να του δώσεις συγκεκριμένες constant τιμές για το μέγεθός του. Στην java το λύνεις με vectors... Για τη c ρίξε μια ματιά εδώ, μπορεί να βγάλεις κάποια άκρη.

 

btw: το sudoku που δώθηκε έχει λύση, οπότε συνεπώς κάτι συμβαίνει και δεν λύνεται.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Θα μπορούσες να θέσεις μία καθολική μεταβλητή, η οποία θα παίρνει τιμή όταν ανοίγει το αρχείο σου, μετρόντας πόσα στοιχεία έχει η κάθε γραμμή.

Όμως θα έπρεπε να αλλάξεις όλα τα for που έχεις και να θέσεις ανώτερη τιμή την καθολική μεταβλητή σου. Επίσης πρέπει να αλλάξεις την printf που τυπώνει απο το ένα μέχρι το εννιά και να το κάνεις δυναμικό (με μία for ίσως).

 

Πολύ καλό το προγραμματάκι, αλλά λίγο την στοίχιση πρόσεχε σε μέρικα σημεία...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Πήγα να σε βοηθήσω, αλλά κατέβασα τον κώδικα σου και δεν έχει ούτε στοιχειώδη στοίχιση. Επιπλέον δεν βρήκα κανένα define. Έχεις ορίσει ένα πίνακα με 9 θέσεις και παντού στον κώδικα χρησιμοποιείς 9. Έτσι πρέπει να κάθεται κανείς να τα αλλάζει ένα ένα. Και που ξέρει ο άλλος αν πρέπει να τα αλλάξει όλα ή τα μισά μόνο κτλ.

 

Για να δεσμεύσεις δυναμικά μνήμη για έναν πίνακα χρησιμοποίησε malloc. Αλλά πρέπει να αλλάξεις και τον κώδικα αρκετά.. Και τέλος υπάρχει sudoku ΝxΝ ή πρέπει να είναι υποχρεωτικά πολλαπλάσιο του 3;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

kalispera se olous sas.

 

ti kanete?exw orismenes ervtiseis na sas kanw.prwto erwtima pros ton filo mou ton valmalio,pws thetw auti tin katholiki metavliti pou mou eipes?kai to deutero rerwtima pros ton filo mou ton dark_banishing einai anaforika me to malloc.exw vrei kapioes plirofories ston internet alla den me voithisan kai toso.mporeis se parakalw na mou peis ti prepei na kanw.exw allaksei ton kwdika mou meta apo kati allages.mporeite na to ksanakatevasete.

 

sas euxaristw kai pali ek twn proterwn!!!:-D

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μία καθολική μεταβλητή είναι ορατή απο όλες τις συναρτήσεις του προγράμματος.

Γενικά δεν ενδείκνυται η χρήση της, αλλά υπάρχει αυτήν η δυνατότητα.

Ορίζεται έξω απο τις συναρτήσεις και πρίν απο αυτές.

Για παράδειγμα θα μπορούσες να γράψεις μετά απο τον ορισμό του sudoku_t:

>typedef short sudoku_t[N][N];
Int size;

Και αυτό μπορείς να το χρησιμοποιήσεις παντού.

Συγκεκριμένα θα μπρούσες να διαβάσεις το αρχείο στην main (εκεί το κάνεις απο ότι βλέπω)

και η readPuzle μέσα της, αφού τσεκάρει οτι είναι NxN, να θέτει στην μεταβλητή size

το μέγεθος της σειράς ή της στήλης (το ίδιο είναι).

 

Έτσι, όταν θα αποθηκεύσεις το παζλ σε ένα πίνακα, θα πρέπει να κάνεις δυναμική δέσμευση με την malloc, γιατί δεν ξέρεις απο πρίν το μέγεθος του, και μετά να τον χρησιμοποιήσεις. Οπότε ξέχνα μάλλον το sudoku_t (θέσε τοπικές μεταβλητές μέσα στις συναρτήσεις) ή αντικατέστησε το με έναν δείκτη (το τελευταίο δεν είμαι σίγουρος άν γίνεται, έχω καιρό να ασχοληθώ με C). Μπορεί να σε βοηθήσει αυτό: http://www.lysator.liu.se/c/c-faq/c-2.html

 

Πάντως πρόσεχε και αυτό που σου είπε ο dark_banishing! Μάλλον πρέπει η κάθε γραμμή κ στήλη να είναι πολλαπλάσιο του 3.

(Αυτή την φορά η στοίχιση πολύ ήταν καλύτερη, άντε την επόμενη να είναι τέλεια...):-D

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το θέμα της δέσμευσης δυναμικών πινάκων nD (2D,3D κτλ) στην C έχει αναλυθεί αρκετές φορές σε παλαιότερα post. Δυστυχώς οι τίτλοι ορισμένων από αυτών δεν είναι ιδιαίτερα κατατοπιστικοί, αν θυμάμαι καλά.

Αξίζει πάντως να κάνει μια αναζήτηση στο παρόν forum.

 

Τώρα, εδώ http://www.insomnia.gr/vb3/showpost.php?p=1784494&postcount=88 έχω αναπτύξει έναν απλό Vigenere Cipher σε C και έχω γράψει μια ρουτίνα (_MakeVigenereMatrix) η οποία δημιουργεί ένα δυναμικό 2D πίνακα (για τις ανάγκες του Cipher) ρίξε μια ματιά.

Επίσης φρόντισε να δεις και την _KillVigenereMatrix που διαγράφει τον 2D πίνακα.

 

Όπως και να έχει, να θυμάσαι πως η δήλωση & δημιουργία Nd δυναμικών πινάκων σε C είναι δυστυχώς μια inefficient διαδικασία –αν κάποτε υλοποιήσουν οι σύγχρονοι compilers το νέο πρότυπο C99 αυτό θα αλλάξει (αλλά δεν υπάρχει ιδιαίτερο πια ενδιαφέρον λόγο C++, Java, C# κτλ.)

 

Υ.Γ.

Καθώς αυτό τον καιρό εργάζομαι σε ένα project (όπως έχω γράψει και άλλου) δυστυχώς δεν μπορώ να συνεισφέρω περισσότερο..

 

Καλή συνέχεια.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

ο κωδικας που έχεις ειναι πολυ καλός, αλλά δε μπορώ να καταλάβω γιατί δε χρησιμοποιείς δομές δεδομένων;

Σε ότι αφορά τη δυναμική δέσμευση μνήμης, δες αυτό θα σου φανεί πολύ χρήσιμο http://www.it.uom.gr/project/cmanual/chp121.htm

antemar

 

 

ti kanete?exw orismenes ervtiseis na sas kanw.prwto erwtima pros ton filo mou ton valmalio,pws thetw auti tin katholiki metavliti pou mou eipes?kai to deutero rerwtima pros ton filo mou ton dark_banishing einai anaforika me to malloc.exw vrei kapioes plirofories ston internet alla den me voithisan kai toso.mporeis se parakalw na mou peis ti prepei na kanw.exw allaksei ton kwdika mou meta apo kati allages.mporeite na to ksanakatevasete.

 

sas euxaristw kai pali ek twn proterwn!!!:-D

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

geia sou file antemar,ti kaneis?egw eimai xalia,me vasanizei mia iwsi kai exw kai to sudoku na me vasanizei dipla.to provlima vasika file antemar einai pws tha xrisimopoihsw tis domes dedomenwn.mas eipan oti me to malloc einai pio eukolo.exw kollisei se auta ta duo themata kai den mporw na xekolisw me tipota.exei treis nuxtes twra pou agwnizomai na lusei auta ta duo kai den mporw.kathe voitheia sou tha einai dekti kai voithitiki.se euxaristw para polu.tha sou eimai eugnwmon an me voithiseis.

 

thanks a lot!!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

ΓΕΙΑ ΣΑΣ ΚΑΙ ΠΑΛΙ,ΤΙ ΚΑΝΕΤΕ?

 

ΕΧΩ ΚΑΝΕΙ ΔΙΑΦΟΡΕΣ ΑΛΛΑΓΕΣ ΣΤΟΝ ΚΩΔΙΚΑ ΜΟΥ ΜΕΤΑ ΑΠΟ ΤΗΝ ΔΙΚΗ ΣΑΣ ΒΟΙΗΘΕΙΑ.ΤΩΡΑ ΜΟΥ ΚΑΝΕΙ compile ΑΛΛΑ ΔΕΝ ΔΙΑΒΑΖΕΙ ΤΟ INPUT TEXT ΠΟΥ ΤΟΥ ΒΑΖΩ.ΤΟΥ ΒΑΖΩ ΤΟ INPUT TEXT ΚΑΙ ΤΟ ΜΟΝΟ ΠΟΥ ΔΙΑΒΑΖΕΙ ΕΙΝΑΙ ΤΗΝ ΠΕΡΙΟΧΗ ΤΟΥ MALLOC;ΕΧΩ ΠΑΓΩΣΕΙ ΤΗΝ ΠΕΡΙΟΧΗ ΤΟΥ MALLOC ΑΛΛΑ ΚΑΙ ΠΑΛΙ ΔΕΝ ΜΟΥ ΔΙΑΒΑΖΕΙ ΤΟ INPUT TEXT.ΤΙ ΠΡΕΠΕΙ ΝΑ ΚΑΝΩ?

 

 

ΣΑΣ ΕΥΧΑΡΙΣΤΩ ΠΑΡΑ ΠΟΛΛΗ!!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

ΣΑΣ ΕΥΧΑΡΙΣΤΩ ΠΑΡΑ ΠΟΛΥ ΠΟΥ ΜΕ ΒΟΗΘΑΤΕ.ΤΟ ΕΝΝΟΩ ΑΥΤΟ ΠΟΥ ΛΕΩ.ΜΕ ΕΧΕΤΕ ΒΟΗΘΗΣΕΙ ΠΑΡΑ ΠΟΛΥ ΜΕ ΑΥΤΑ ΠΟΥ ΜΟΥ ΕΙΠΑΤΕ ΚΑΙ ΕΧΩ ΦΤΙΑΞΕΙ ΕΝΑ ΚΑΙΝΟΥΡΓΙΟ ΚΩΔΙΚΑ.Ο ΚΩΔΙΚΑΣ ΜΟΥ ΤΩΡΑ ΛΥΝΕΙ ΟΛΑ ΤΑ 9Χ9 SUDOKU.ΔΕΝ ΤΟΥ ΒΑΖΩ ΝΑ ΔΙΑΒΑΖΕΙ ΑΠΟ ΚΑΠΟΙΟ ΤΕΧΤ ΑΛΛΑ ΟΤΑΝ ΤΟΥ ΒΑΛΩ ΝΑ ΛΥΣΕΙ ΑΥΤΟΜΑΤΑ ΕΝΑ ΤΕΧΤ ΠΟΥ ΕΙΝΑΙ 16Χ16 ή 4Χ4 ή 25Χ25 ΔΕΝ ΤΑ ΔΙΑΒΑΖΕΙ ΑΛΛΑ ΟΥΤΕ ΤΑ ΛΥΝΕΙ.ΤΙ ΠΡΕΠΕΙ ΝΑ ΚΑΝΩ?

 

 

ΣΑΣ ΕΥΧΑΡΙΣΤΩ ΚΑΙ ΠΑΛΙ ΠΟΥ ΜΕ ΒΟΗΘΑΤΕ!!!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...