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

Brute Force αλγόριθμος τρίλιζας


migf1

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

Εξαιρετικό! Με ταλαιπώρησε λίγο η εγκατάσταση του GTK+ αλλά άξιζε τον κόπο, μπράβο! :)

 

 

Εν το μεταξύ με πας πολλά χρόνια πίσω με την Τρίλιζα, είχα γράψει μια σε DOS, δεν ήταν τόσο έξυπνη ώστε να βασίζεται σε brute force κλπ.. (με είχαν φάει τα ifs :P)

 

Ιδού..

 

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

Εξαιρετικό! Με ταλαιπώρησε λίγο η εγκατάσταση του GTK+ αλλά άξιζε τον κόπο, μπράβο! :)

Ευχαριστώ πολύ φίλε DirectX!

Γιατί σε ταλαιπώρησε το GTK+? Εννοείς για να το βάλεις στο VS μήπως; Γιατί από command-line μπαινοβγαίνει πανεύκολα.

 

Δεν έχω εμπειρία με το VS, αλλά σε IDE που μπορούν να υιοθετήσουν μεταβλητές περιβάλλοντος, ένας εύκολος τρόπος είναι να φτιάξεις δυο μεταβλητές περιβάλλοντος (μια για τα include directories και μια για τα libraries ή μια που να τα έχει και τα 2, για τον compiler που χρησιμοποιείς) και να τις ορίσεις κατόπιν στη general cc εντολή του compiler σου. Ή αντί για μεταβλητές περιβάλλοντος, αν το IDE έχει και text-entry field για τα flags του compiler και του linker να τα γράψεις εκεί απευθείας μια φορά, να το σώσεις ως GTK+ project template και να τελειώνεις.

 

Αν δεν έχει text-entry fields το IDE τότε είναι όντως ταλαιπωρία να κάθεσαι με το mouse να διαλέγεις τους φακέλους έναν-έναν, αλλά τουλάχιστον κι αυτό το κάνεις μια φορά και τελειώνεις.

 

 

 

Εν το μεταξύ με πας πολλά χρόνια πίσω με την Τρίλιζα, είχα γράψει μια σε DOS, δεν ήταν τόσο έξυπνη ώστε να βασίζεται σε brute force κλπ.. (με είχαν φάει τα ifs :P)

 

Ιδού..

 

Ρέστα !!!! :)

 

ΥΓ. Εγώ δυστυχώς την πάτησα με τον αλγόριθμο του AI. Ταλαιπωρήθηκα αχρείαστα γιατί βαρέθηκα να φτιάξω gametree με minmax heuristic και alpha-pruning, νομίζοντας πως θα τελείωνα πιο γρήγορα αν πήγαινα με brute αλγόριθμο. Τελικά και περισσότερο ταλαιπωρήθηκα, και άσχημο κώδικα έγραψα (και χτες που το κοίταγα, το AI άμα βρει τετράγωνο στο οποίο κερδίζει στο προσομοιωμένο board, αντί να σταματάει και να πηγαίνει να παίζει την κίνηση στο κανονικό board, αυτό συνεχίζει να βαθμολογεί κενά κελιά στο προσομοιωμένο board... ευτυχώς διορθώνεται με ένα απλό if... return).

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

Ευχαριστώ πολύ φίλε DirectX!

Γιατί σε ταλαιπώρησε το GTK+? Εννοείς για να το βάλεις στο VS μήπως; Γιατί από command-line μπαινοβγαίνει πανεύκολα.

 

Δεν έχω εμπειρία με το VS, αλλά σε IDE που μπορούν να υιοθετήσουν μεταβλητές περιβάλλοντος, ένας εύκολος τρόπος είναι να φτιάξεις δυο μεταβλητές περιβάλλοντος (μια για τα include directories και μια για τα libraries ή μια που να τα έχει και τα 2, για τον compiler που χρησιμοποιείς) και να τις ορίσεις κατόπιν στη general cc εντολή του compiler σου. Ή αντί για μεταβλητές περιβάλλοντος, αν το IDE έχει και text-entry field για τα flags του compiler και του linker να τα γράψεις εκεί απευθείας μια φορά, να το σώσεις ως GTK+ project template και να τελειώνεις.

 

Αν δεν έχει text-entry fields το IDE τότε είναι όντως ταλαιπωρία να κάθεσαι με το mouse να διαλέγεις τους φακέλους έναν-έναν, αλλά τουλάχιστον κι αυτό το κάνεις μια φορά και τελειώνεις.

 

 

Ρέστα !!!! :)

 

ΥΓ. Εγώ δυστυχώς την πάτησα με τον αλγόριθμο του AI. Ταλαιπωρήθηκα αχρείαστα γιατί βαρέθηκα να φτιάξω gametree με minmax heuristic και alpha-pruning, νομίζοντας πως θα τελείωνα πιο γρήγορα αν πήγαινα με brute αλγόριθμο. Τελικά και περισσότερο ταλαιπωρήθηκα, και άσχημο κώδικα έγραψα (και χτες που το κοίταγα, το AI άμα βρει τετράγωνο στο οποίο κερδίζει στο προσομοιωμένο board, αντί να σταματάει και να πηγαίνει να παίζει την κίνηση στο κανονικό board, αυτό συνεχίζει να βαθμολογεί κενά κελιά στο προσομοιωμένο board... ευτυχώς διορθώνεται με ένα απλό if... return).

 

Θυμάμαι εκείνα τα χρόνια, ένα περιοδικό πληροφορικής (μπορεί το PCM) έδινε μια Τρίλιζα στην συνοδευτική δισκέτα (για DOS -νομίζω γραμμένη από κάποιον ξένο) η οποία υποτίθεται ότι μπορούσε να μάθει από εσένα κατά την διάρκεια του παιχνιδιού. Στην αρχή το πρόγραμμα δεν ήξερε τίποτα και έπαιζε τυχαία μετά (θα) βελτιωνόταν κλπ. Βέβαια αυτό στα χαρτιά διότι μεταξύ μας ή ήθελε πραγματικά πολύ εκπαίδευση ή κάπου το πράγμα έπασχε και δεν απέδιδε τα αναμενόμενα ακόμα και μετά από αρκετά νικηφόρα για εμένα ματς, αν και κράταγε αρχείο κινήσεων κλπ. Συνεπώς έχοντας δει αυτό αποφάσισα να ακολουθήσω τον παραδοσιακό τρόπο κατασκευής (βασικός λόγος που την έγραψα ήταν η επιρροή του War Games :D).

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

Καθώς εκείνη την ώρα που το εγκατέστησα ήμουν κουρασμένος (που κέφι να διαβάσω οδηγίες κλπ -no way!), το εγκατέστησα λοιπόν lean & mean, δηλαδή αποσυμπίεση κάθε πακέτου σε κοινό κατάλογο με μπούσουλα τι ζητούσε κάθε φορά το εκτελέσιμο (DLL exports που έδινε ο WinLoader), το οποίο είχα βάλει κατευθείαν στο BIN, μέχρι που πήρε μπρος! Ούτε ENV SETS ούτε τίποτα, raw (χύμα) :D

 

Τώρα έχω μεν ένα πλήρες GTK+ στο Η/Υ, και μένουν μόνο τα ENV SETS για να το κάνω να εκτελεί global κάθε ανάλογο GTK-based λογισμικό :) :)

 

Υ.Γ.

Δεν έχω ασχοληθεί ιδιαίτερα με LINUX - με εντυπωσίασε θετικά ότι υπάρχει το GTK+ για τα Παράθυρα, ίσως του ρίξω μια ματιά.. άραγε να μοιάζει με το QT στην φιλοσοφία του? χμ!!

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

Δυο environment variables χρειάζεσαι όλα κι όλα (κι αν δεν δουλεύεις με unix-like κονσόλα, τότε μόνο ένα)...

 

GTK_HOME=ο root φάκελος του gtk

PKG_CONFIG_PATH=ο root φάκελος του gtk\lib\pkgconfg (μόνο αν θες να κάνεις compile από unix-like κονσόλα, χρησιμοποιώντας backquotes)

 

Και τέλος βάζεις και τον φάκελο με τα binaries του gtk στο %PATH% των Windows (ο root φάκελος του gtk\bin)

 

Αν κατέβασες το all-in-one-bundle που γράφω στο ReadMe, ο root φάκελος του gtk είναι αυτός μέσα στον οποίον ξεζιπάρισες το bundle (μπορεί να είναι όποιος θέλεις εσύ).... τη δομή των φακέλων με όλα τα dependencies την έχει έτοιμη το ζιπαρισμένο bundle.

 

ΥΓ. Με QT έχω πολύ μικρή εμπειρία, αλλά είναι πιο λακωνικό από το GTK... ελέω και C++ (αν και υπάρχει C++ binding για το GTK, το gtkmm αλλά δεν νομίζω πως χρειάζεται κανείς κάτι τέτοιο, η C++ θέλει QT imho).

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

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...