Το Στέκι των Πληροφορικών

Γενικά => Γενικά Παιδαγωγικά, Επιστημονικά και Τεχνικά Θέματα => Επιστημονικά Θέματα => Μήνυμα ξεκίνησε από: unpsofable στις 23 Δεκ 2013, 04:39:51 ΜΜ

Τίτλος: Ο Λαβύρινθος του Θησέα και ο κανόνας δεξιού χεριού.
Αποστολή από: unpsofable στις 23 Δεκ 2013, 04:39:51 ΜΜ
Καλησπέρα! Παρακάτω παραθέτω μια ωραία άσκηση κατ εμε η οποία βασίζεται στον προγραμματισμό η/υ με χρηση της γλωσσας Java.

Στην ελληνική μυθολογία ο Θησέας κατoρθώνει να δραπετεύσει από το λαβύρινθο του Μινώταυρου ξετυλίγοντας
ένα κουβάρι σπάγκο καθώς προχωρά και ακολουθώντας τη διαδρομή του σπάγκου μέχρι την έξοδο. Η στρατηγική
του Θησέα παριστάνει έναν αλγόριθμο για την έξοδο από έναν λαβύρινθο, αλλά δεν είναι και ο μοναδικός
αλγόριθμος που θα μπορούσε να έχει χρησιμοποιήσει για να λύσει αυτό το πρόβλημα. Για παράδειγμα, εάν ένας
λαβύρινθος δεν έχει εσωτερικούς βρόχους, μπορείτε να βγείτε από αυτόν αν αγγίζετε πάντα με το δεξιό σας χέρι
τον τοίχο. Αυτός ο αλγόριθμος ονομάζεται κανόνας του δεξιού χεριού (right-hand rule).
Για παράδειγμα, φανταστείτε ότι ο Θησέας χάνεται στο λαβύρινθο που φαίνεται παρακάτω. Σε αυτό το διάγραμμα,
η θέση του Θησέα σημειώνεται με το γράμμα θήτα (Θ)


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

Υποθέστε ότι σας έχει ζητηθεί να γράψετε ένα πρόγραμμα ώστε να δραπετεύσει από έναν λαβύρινθο ένα ρομπότ.
Υποθέστε ότι έχετε πρόσβαση σε μια κλάση με το όνομα MazeRunningRobot που υλοποιεί τις ακόλουθες
μεθόδους:

void moveForward() /* Κίνηση εμπρός κατά ένα τετράγωνο */
void turnRight() /* Δεξιά στροφή χωρίς μετακίνηση */
void turnLeft() /* Αριστερή στροφή χωρίς μετακίνηση */
boolean isBlocked() /* Αληθής αν βλέπει τοίχο */
boolean isOutside() /* Αληθής αν είναι έξω από λαβύρινθο */

Χρησιμοποιήστε αυτές τις μεθόδους για να γράψετε μια αλγοριθμική μέθοδο
private void solveMaze (robot MazeRunningRobot)
που βγάζει το ρομπότ έξω από το λαβύρινθο χρησιμοποιώντας τον κανόνα του δεξιού χεριού.


Ως προς την επίλυση λοιπόν της άσκησης χρειάζεται να φτιάξουμε μόνο τη μέθοδο που το ρομποτ θα καταλαβαίνει για να βγει από τον λαβύρινθο,βασει πάντα του κανόνα του δεξιου χεριού.

Θεωρώ πως με μια επανάληψη και μέσα της κάποιες συνθήκες if επιλύεται.
Τι πιστεύετε;
Τίτλος: Απ: Ο Λαβύρινθος του Θησέα και ο κανόνας δεξιού χεριού.
Αποστολή από: evry στις 23 Δεκ 2013, 10:29:30 ΜΜ
Θα μας επιτρέψεις να σου απαντήσουμε μετά την προθεσμία παράδοσης της εργασίας που είναι στις 2-3 Ιανουαρίου αν θυμάμαι καλά?
Τίτλος: Απ: Ο Λαβύρινθος του Θησέα και ο κανόνας δεξιού χεριού.
Αποστολή από: unpsofable στις 26 Δεκ 2013, 11:20:58 ΜΜ
Παράθεση από: evry στις 23 Δεκ 2013, 10:29:30 ΜΜ
Θα μας επιτρέψεις να σου απαντήσουμε μετά την προθεσμία παράδοσης της εργασίας που είναι στις 2-3 Ιανουαρίου αν θυμάμαι καλά?

Το έλυσα,οπότε πιστευω μπορω να περιμένω μεχρι τη διόρθωση των ασκήσεων.Ευχαριστώ για την προθυμία.
Τίτλος: Απ: Ο Λαβύρινθος του Θησέα και ο κανόνας δεξιού χεριού.
Αποστολή από: itt στις 28 Δεκ 2013, 06:19:10 ΠΜ
Πιστεύω ότι θα ήταν πιο ενδιαφέρον ένα γενικό πρόβλημα maze, που να σε έβαζε στη λογική του A* πχ για να το επιλύσεις.