THMMY.gr

Μαθήματα Βασικού Κύκλου => Δομές Δεδομένων => Topic started by: Νessa on December 07, 2006, 21:35:34 pm



Title: Εργασία Β - Απορίες
Post by: Νessa on December 07, 2006, 21:35:34 pm
Έριξα μια ματιά στην εργασία Β...

Από ό,τι καταλαβαίνω, το πινακάκι visionVector δεν έχει προκαθορισμένο μέγεθος, αλλά το μέγεθός του εξαρτάται από τη μέγιστη απόσταση. Αυτή πού μας δίνεται;


Title: Re: Εργασία Β - Απορίες
Post by: KorkoLyk on December 07, 2006, 22:00:03 pm
 :???:

Βασικά η μέγιστη απόσταση είναι 2. Το πινακάκι - διάνυσμα καταλήγει να έχει έτσι 9 στοιχεία.


Title: Re: Εργασία Β - Απορίες
Post by: Νessa on December 07, 2006, 22:08:27 pm
Ααααααααααα. Thanks.


Title: Re: Εργασία Β - Απορίες
Post by: fpsom on December 08, 2006, 10:08:23 am
Πράγματι η μέγιστη απόσταση αυτή τη στιγμή είναι ορισμένη ως 2. Αλλά δική μου πρόταση είναι (κυρίως για την περίπτωση που μετά αποφασίσετε ότι το 2 είναι πολύ μικρό ή πολύ μεγάλο), να χρησιμοποιήσετε αντί του αριθμού 2 απευθείας, το περιεχόμενο της LabyrinthUtilities.visionSize. Η μεταβλητή είναι public και static, οπότε μπορείτε να την χρησιμοποιείτε ακριβώς όπως σας την έγραψα.

Και βέβαια, με αυτή τη λογική, το πρώτο κελί είναι το visionVector[0], τα ορατά προς North κελιά είναι τα
visionVector[i + 1] (προφανώς θα πρέπει να είναι μέσα σε ένα for μεγέθους LabyrinthUtilities.visionSize, τα κελιά προς νότο είναι τα visionVector[LabyrinthUtilities.visionSize + i + 1] (πάλι με το ίδιο μέγεθος for), κοκ.

Επαναλαμβάνω, τα παραπάνω ισχύουν μόνο στην περίπτωση που θα θελήσετε να κάνετε τον έλεγχο των κελιών του visionVector παραμετρικά. Αλλιώς, μπορείτε να χρησιμοποιήσετε απευθείας τον αριθμό 2...  :)


Title: Re: Εργασία Β - Απορίες
Post by: anonymous-root on December 08, 2006, 17:12:05 pm
Αν κατάλαβα καλά, το visionVector δε θα το πειράξουμε καθόλου, σωστά;
Απλά θα λαμβάνουμε την τιμή του.


Title: Re: Εργασία Β - Απορίες
Post by: fpsom on December 08, 2006, 17:42:54 pm
Το visionVector ΔΕΝ θα το πειράξετε - δεν έχει νόημα άλλωστε. Όταν θα υλοποιήσετε τη συνάρτηση, το visionVector θα είναι ήδη ένας πίνακας γεμάτος με αντικείμενα τύπου Room (ή null στην περίπτωση που κάποιο δωμάτιο δεν είναι ορατό).


Title: Re: Εργασία Β - Απορίες
Post by: anonymous-root on December 09, 2006, 16:34:54 pm
Στο visionVector υπάρχει το εξής:

-------------------------------------------------------------------------

   //Calculate West Positions
    for (int i = 0; i < size; i++) {
      Room temp = new Room();
      if (positionJ - (i + 1) < 0) {
        visionVector[3 * size + i] = null;
      }
      else {
        temp.walls[Room.NORTH] = labyrinth[positionI][positionJ - (i + 1)].walls[Room.NORTH];
        temp.walls[Room.SOUTH] = labyrinth[positionI][positionJ - (i + 1)].walls[Room.SOUTH];
        temp.walls[Room.EAST] = labyrinth[positionI][positionJ - (i + 1)].walls[Room.EAST];
        temp.walls[Room.WEST] = labyrinth[positionI][positionJ - (i + 1)].walls[Room.WEST];
        if (isPrey) {
          if (labyrinth[positionI][positionJ - (i + 1)].isExit()) {
            temp.setAsExit();
          }
        }
        visionVector[1 + 2 * size + i] = temp;
      }
    }

-----------------------------------------------------------


Το visionVector[1 + 2 * size + i] = temp; μήπως πρέπει να είναι
visionVector[1 + 3 * size + i] = temp; ?


Title: Re: Εργασία Β - Απορίες
Post by: anonymous-root on December 09, 2006, 17:30:01 pm
Μάλλον είναι όντως λάθος. Αν δεν γίνει 3 δε βρίσκει την έξοδο (με τον υπάρχον κώδικα).

Οπότε μάλλον θα χρειαστεί να το πειράξουμε...

Αν χρειαστεί:

Το visionVector ΔΕΝ θα το πειράξετε - δεν έχει νόημα άλλωστε.


 :D :D :D :D :D :D :D :D :D :D :D :D :D

:)


Title: Re: Εργασία Β - Απορίες
Post by: emmanuel on December 09, 2006, 18:07:33 pm
δε ξέρω αν φταιει αυτο, αλλά κάπου μου βγάζει Null Pointer,  ανάλογα με το που θα ξεκινησει και ποιές κινήσεις θα κάνει(τρέχιε μέχιρ ενός σημείου αλλά ...)   και απο ότι καταλαβα κατι παιζει   με το vision..υπάρχιε περίπτωση να φταίει αυτό και τζάπα το έψαχνα? 


Title: Re: Εργασία Β - Απορίες
Post by: fpsom on December 09, 2006, 19:16:51 pm
Έχετε απόλυτο δίκιο: στην κλάση LabyrinthUtilities, συνάρτηση returnVisionVector, σειρά 150, πρέπει να γίνει η εξής αλλαγή:

visionVector[1 + 2*size + 1] = temp;     πρέπει να γίνει     visionVector[1 + 3*size + 1] = temp;


Mea culpa, mea culpa... Συγγνώμη σε όσους ταλαιπωρήθηκαν χωρίς λόγο με τα δικά μου λάθη.    :-[ :P

Το σωστό αρχείο το ανέβασα και στο eTHMMY.


Title: Re: Εργασία Β - Απορίες
Post by: fpsom on December 09, 2006, 21:11:09 pm
Τελικά πέρα από αυτό υπάρχει και άλλο ένα λάθος, οπότε σίγουρα να κατεβάσετε το νέο αρχείο από το eTHMMY. Η νέα διόρθωση έγινε τώρα (20:06, 9/12/2006), οπότε όσοι έχετε αρχείο LabyrinthUtilities παλαιότερο από αυτό, κατεβάστε το και κάνετε αντικατάσταση.

Και πάλι συγγνώμη για την ταλαιπωρία.


Title: Re: Εργασία Β - Απορίες
Post by: NetBuster on December 09, 2006, 22:13:30 pm
Λοιπόν, να ρωτήσω κι εγώ κάτι.Όταν βλέπουμε δύο δωμάτια μπροστά βλέπουμε και το ποιοι τοίχοι τους είναι σπασμένοι??


Title: Re: Εργασία Β - Απορίες
Post by: fpsom on December 09, 2006, 22:20:47 pm
Ναι. Όταν λέμε ότι βλέπετε ένα δωμάτιο, τότε αυτό σημαίνει ότι έχετε όλες τις πληροφορίες που έχει το αντίστοιχο αντικείμενο Room, και κατά συνέπεια τις πληροφορίες που υπάρχουν στη μεταβλητή walls[].


Title: Re: Εργασία Β - Απορίες
Post by: Larry_Flynt on December 09, 2006, 22:38:58 pm
Δε βγαίιιινειιιιι αυτή η άσκησηηηη  :-\


Title: Re: Εργασία Β - Απορίες
Post by: emmanuel on December 10, 2006, 02:49:51 am
βρίσκομαι σε ένα δωμάτιο.βλέπω,τόσο μέσω  ελέγχου όσο και παραστατικά στο δημιουργούμενο λαβύρινθο,ότι μπορω να κινηθώ βόρεια,καθώς υπάρχει δωμάτιο ελεύθερο κι όχι τοίχος.
θέλω λοιπόν,πριν μπω σαυτό το δωμάτιο,να δω αν ο δυτικός τοίχος του βόρειου αυτού δωματίου είναι όρθιος ή όχι.ο έλεγχος που κάνω είναι

if (visionVector[1].walls[0] == 0)

σωστο δεν είναι ?
μου βγαζει nulll pointer exception


Title: Re: Εργασία Β - Απορίες
Post by: anonymous-root on December 10, 2006, 13:18:09 pm
Ο δοθέν κώδικας:

while (newDirection == -1) {
       int temp_dir = (int)(4*Math.random());
        if (visionVector[0].walls[temp_dir] == 1) {
           newDirection = temp_dir;


Εμείς στο δικό μας κώδικα αντί για temp_dir θα βάλουμε temp; (Που το παίρνουμε από την LabyrinthUtilities);

(σορρυ για τις χαζες ερωτήσεις, αλλά ντεν πολυκαταλμπαίνει ντζάβα)





Title: Re: Εργασία Β - Απορίες
Post by: anonymous-root on December 10, 2006, 16:32:59 pm
Επίσης, όταν λέει ID of the current node.

ID είναι η διασταύρωση των κελιών ή απλά ένα κελί;


Title: Re: Εργασία Β - Απορίες
Post by: Optima on December 10, 2006, 17:56:15 pm
Ανώνυμε, κάθε κελί είναι διαστάυρωση, δεν κολλάει αλλιώς....
Emmanuel εμένα σωστό μου φαίνεται αυτό που κάνεις... :-\


σας κατατόπισα ;D ;D 


Title: Re: Εργασία Β - Απορίες
Post by: fpsom on December 10, 2006, 18:18:24 pm
Καταρχήν, έστειλα σε όλους ένα email το οποίο λέει να κατεβάσετε το Labyrinth_TaskB_UPDATED.zip από το eTHMMY. Δυστυχώς τα λάθη που αναφέρθηκαν προηγουμένως δεν ήταν τα μόνα, οπότε έγινε ένα γενικό update του κώδικα. Με αυτό καλύπτω και το post του emmanuel: λογικά τώρα δεν θα πρέπει να σου βγάζει λάθος...

Ο δοθέν κώδικας:

while (newDirection == -1) {
       int temp_dir = (int)(4*Math.random());
        if (visionVector[0].walls[temp_dir] == 1) {
           newDirection = temp_dir;


Εμείς στο δικό μας κώδικα αντί για temp_dir θα βάλουμε temp; (Που το παίρνουμε από την LabyrinthUtilities);

(σορρυ για τις χαζες ερωτήσεις, αλλά ντεν πολυκαταλμπαίνει ντζάβα)





Όσον αφορά τον κώδικα μέσα στην κλάση Creature:

το temp_dir είναι απλά μια ενδιάμεση μεταβλητή για να επιλέξω στην τύχη ένα τοίχο. Δεν έχει καμία σχέση (πέρα από τη λεκτική ομοιότητα) με αντίστοιχες μεταβλητές που υπάρχουν αλλού. Ότι υπάρχει αυτή τη στιγμή μέσα στη calculate μπορεί (και πρέπει) να διαγραφεί και να αντικατασταθεί από το δικό σας κώδικα.

Από τη LabyrinthUtilities παίρνετε ουσιαστικά ένα πίνακα (τον visionVector) αλλά χωρίς να χρειαστεί να τον καλέσετε απευθείας. Από τη στιγμή που γράφετε κώδικα μέσα στην Creature μπορείτε να θεωρείτε ότι η κλήση της μεθόδου για το visionVector έχει γίνει και απομένει μόνο να χρησιμοποιήσετε τον πίνακα.

Επίσης, όταν λέει ID of the current node.

ID είναι η διασταύρωση των κελιών ή απλά ένα κελί;

Τέλος, το ID του current node είναι απλά η αντιστοιχία που θα κάνετε μεταξύ δωματίων και ακεραίων: όπως είπαμε και μέσα στην τάξη, για το κάθε δωμάτιο ΔΕΝ έχετε την πληροφορία του (i,j), οπότε εμείς σας προτείνουμε ένα τρόπο (μια λογική εάν θέλετε) για το πως να ανακατασκεύασετε το λαβύρινθο στη "μνήμη" σας από το visionVector που θα παίρνετε σε κάθε βήμα. Με αυτή τη λογική συσχετίζουμε το κάθε δωμάτιο μ
;ε ένα μοναδικό ακέραιο, οπότε μια διάσχιση στο λαβύρινθο είναι ουσιαστικά μια ακολουθία από αριθμούς. Οι 4 στήλες του πίνακα (πέρα από την πρώτη) υπάρχουν απλά για να λένε ο κάθε αριθμός με ποιούς (το πολύ άλλους 4) αριθμούς "γειτονεύει".

Ελπίζω να βοήθησα...




Title: Re: Εργασία Β - Απορίες
Post by: charis on December 11, 2006, 14:50:44 pm
Δύο απορίες:
1) Η έξοδος φαίνεται; (VisionVector)
2) Υποθέτω ότι δεν μυρίζει (smell)

Χάρης


Title: Re: Εργασία Β - Απορίες
Post by: fpsom on December 11, 2006, 15:42:51 pm
Δύο απαντήσεις:

1. Ναι φαίνεται (κλήση της μεθόδου isExit() του αντικειμένου σου επιστρέφει true εάν είναι έξοδος)
2. Μυρίζει, αλλά μυρίζει πάντα 0, οπότε είναι σαν να μη μυρίζει... :)


Title: Re: Εργασία Β - Απορίες
Post by: Krono on December 12, 2006, 01:36:43 am
      Πήρε το μάτι μου ένα όριο 100 κινήσεων ή κάνω λάθος;(ένα limit<100 στην MainPlatform) Αν ναι, μπορώ να ρωτήσω γιατί; Είναι δυνατόν να βρεθεί πάντα η έξοδος σε μόνο τόσες κινήσεις;


Title: Re: Εργασία Β - Απορίες
Post by: fpsom on December 12, 2006, 10:27:58 am
Καλά έκανε και το πήρε το μάτι σου. Το όριο αυτο είναι απλά μια "αρχική" παράμετρος, για να τερματίζει κάποτε το πρόγραμμά σας (και ειδικότερα η έκδοση που κατεβάσατε, καθώς ψάχνει τελείως random). Προφανώς ένα τέτοιο όριο θα υπάρχει και στην τελική έκδοση, με την έννοια του εάν και το prey και το predator κινούνται τυχαία, το παιχνίδι μπορεί να μην τελειώσει ποτέ. Επομένως ένα άνω όριο (σίγουρα παραπάνω από 100, και σίγουρα διαπραγματεύσιμο) θα πρέπει εκ των πραγμάτων να χρησιμοποιηθεί.


Title: Re: Εργασία Β - Απορίες
Post by: johnny_d on December 14, 2006, 18:40:32 pm
ΕΡΩΤΗΣΗ:
Η μεταβλητή amPrey που βρίσκεται στον Constructor της Creature,
πού υποτίθεται οτι θα χρησιμοποιηθεί?? :-\ :-\


Title: Re: Εργασία Β - Απορίες
Post by: fpsom on December 14, 2006, 19:19:28 pm
ΠΟΥΘΕΝΑ (είναι η σύντομη απάντηση)

Η (λίγο) μεγαλύτερη απάντηση είναι "Θα σας χρειαστεί στην Εργασία Γ'" η οποία και θα σας δοθεί λίαν συντόμως...  ;)


Title: Re: Εργασία Β - Απορίες
Post by: antse on December 15, 2006, 17:53:53 pm
Τι τιμές μπορεί να πάρει arrayMemory[0] ?
Τι ορίζουμε ως node?
Τα arrayMemory[1], arrayMemory[2], arrayMemory[3], arrayMemory[4] είναι τα γειτονικά κελιά προς κάθε κατεύθυνση αντίστοιχα ?
Δηλάδη αν θέλω να δω αν μπόρω να κινηθώ δυτικά ο παρακάτω κώδικας είναι σωστός?
 
if (visionVector[0].walls[0] == 1) {
          arrayRoom
  • =i;
          possibility[0] = 1;
           if (visionVector[7].walls[0] == 1)
          {   
              arrayRoom[4] = 1;
              possibility[0] = 2;
             if (visionVector[8].walls[0] == 1)
             {
                possibility[0] = 3;
             }
          }
       }

Ο πίνακας possibility τον εφτιαξά για να ελέγχο προς ποια κατεύθυνση εχώ περισσότερες θέσεις για να προχωρήσω.
Σε περίπτώση που είναι ισοπόθανες δύο κατευθύνσεις με τι κρίτηριο θα επιλέξω?
Σε ένα γειτονικό κελί εκτός από τον τοίχο που έχω μπροστά μου μπορώ να βλέπω και τους πλαϊνούς?

Σας ευχαριστώ εκ των προτέρων.


Title: Re: Εργασία Β - Απορίες
Post by: antse on December 15, 2006, 17:56:24 pm
Σας ξαναγράφω τον κώδικα γιατί δεν εμφανίστηκε σωστά

if (visionVector[0].walls[0] == 1) {
          arrayRoom [ i ] [ 0 ] = i ;
          possibility[0] = 1;
           if (visionVector[7].walls[0] == 1)
          {   
              arrayRoom [ i ] [4] = 1;
              possibility[0] = 2;
             if (visionVector[8].walls[0] == 1)
             {
                possibility[0] = 3;
             }
          }
       }


Title: Re: Εργασία Β - Απορίες
Post by: ilithios on December 15, 2006, 18:54:02 pm
K. Ψωμόπουλε, πότε θα ξεκλειδώσετε τις ομάδες για να βάλουμε τις εργασίες; Στο τέλος θα ξεχάσω να την ανεβάσω  :P


Title: Re: Εργασία Β - Απορίες
Post by: ilithios on December 15, 2006, 18:58:09 pm
antse, κάποιες από τις απορίες σου θα απαντηθούν αν διαβάσεις την προηγούμενη σελίδα.


Title: Re: Εργασία Β - Απορίες
Post by: anoixi on December 15, 2006, 21:10:25 pm
ap'oti katalava gia na apo8hkeusoume to labyrintho se enan pinaka me stoixeia symfwna me to arrayMemory prepei prwta na dwsoyme arithmous se ola ta dwmatia tou labyrinthou.swsta?
se periptwsh pou auto isxyei, pws akrivws tha to kanoume?
tha prosthesoume mia metablhth int sti Room, tha ftiaksoume kainourgio pinaka me arithmous tou opoia ta kelia tha einaise antistoixia me ta kelia tou labyrinthou, i kati allo entelws??
mporei kapoios na boithisei please?!


Title: Re: Εργασία Β - Απορίες
Post by: KorkoLyk on December 15, 2006, 21:30:31 pm
Ξαναδιαβάστε την κλάση LabyrinthCreator στο Labyrinth_TASKB_updated...

...ούτε εγώ έχω βγάλει κάτι τελειωτικό ακόμα, αλλά πήρα ιδέες για να ξεκινήσω από εκεί...


Title: Re: Εργασία Β - Απορίες
Post by: ilithios on December 16, 2006, 03:09:50 am
anoixi, δεν ισχύει αυτό που λες. Ο λαβύρινθος είναι άγνωστος στο θήραμα, τον εξερευνά καθώς προχωρεί. Σε πρώτη φάση πρέπει τουλάχιστον να θυμάται το προηγούμενο κελί, για να πηγαίνει μπροστά.


Title: Re: Εργασία Β - Απορίες
Post by: charis on December 16, 2006, 09:11:29 am
Απ'ότι κατάλαβα, το μόνο που το θήραμα γνωρίζει είναι ότι βρίσκεται σε ένα τέλειο τετράγωνο λαβύρινθο, χωρίς όμως να ξέρει ούτε τις διαστάσεις του λαβύρινθο, ούτε τη θέση που βρίσκεται. Ακόμα γνωρίζει ότι υπάρχει κυνηγός που πρέπει να αποφύγει και ότι υπάρχουν κάποιες εξόδους τις οποίες ψάχνει να βρει. Οι έξοδοι βρίσκονται στα εξωτερικά δωμάτια του λαβυρίνθου, αλλά πάλι δεν γνωρίζει ποια είναι αυτά τα εξωτερικά δωμάτια, αφού δεν ξέρει ούτε το μέγεθος του λαβυρίνθου ούτε την απόλυτη θέση του σε αυτόν. Η μόνη αίσθησή του είναι η όραση για να δει τον κυνηγό, την έξοδο και τα δωμάτια σε απόσταση μέχρι και 2 δωμάτια εφόσον δεν μεσολαβεί τοίχος ανάμεσά τους. Λέγοντας ότι "βλέπει τα δωμάτια", εννοούμε ότι μπορεί και βλέπει επίσης σε αυτά τα δωμάτια που έχουν τοίχους και που όχι.
Ακόμα το θήραμα γνωρίζει ότι και ο κυνηγός έχει την ίδια όραση και ότι κανένας τους δεν έχει όσφρηση. (Τουλάχιστον για την μέχρι τώρα υλοποίηση)
Χάρης


Title: Re: Εργασία Β - Απορίες
Post by: Xelwna.. on December 16, 2006, 12:00:21 pm
 Αρα ο πολυδυαστατος που θα ορισουμε(εννοει δυσδυαστατος λογικα εε?) θα του δινουμε τιμες καθως το θηραμα προχωρα στον λαβυρινθο..Πως το σκεφτομαι πχ...
για το τυχαιο δωματιο απο το οποιο ξεκινα θα ειναι arrayMemory[0][0]..Aν βλεπει το βορειο(δλδ αν δεν υπαρχει τοιχος) τοτε arrayMemory[0][1]=1(ή 0 αν υπαρχει τοιχος )..κλπ!!Και οταν παει στο καινουργιο δωματιο ο πινακας θα ειναι arrayMemory[1][0] κοκ...Ετσι θα θυμαται το καθε δωματιο απο το οποιο περνα με ποια συνορευει.Η λεω χαζομαρες???  :-\


Title: Re: Εργασία Β - Απορίες
Post by: thematrix on December 16, 2006, 14:19:47 pm
Γραφω τον παρακάτω κώδικα:

import java.util.LinkedList;
public class dokimi {

   
   public static void main(String[] args) {
         
         myclass obj=new myclass();
         LinkedList<myclass> list=new LinkedList<myclass>();
         
         System.out.print("Ta stoixeia pou do8ikan einai:");
         for (int i=0;i<10;i++){
            obj.x=i;
            System.out.print(obj.show()+" ");
            list.add(obj);
            System.out.println(list.get(i).show()+" ");
         }
               
         System.out.println();
         System.out.println("Diabazw tin lista: ");
         boolean ok;
         ok=list.contains(5);
         System.out.println(ok);
         
         for (int i=0;i<10;i++){
         System.out.print(list.get(i).show()+" ");
         }
   }
}

Το πρόβλημα είναι ότι όταν διαβάζω την λίστα στο τέλος μου εμφανίζει μόνο το τελευταίο στοιχείο.
Καμιά απάντηση ?


Title: Re: Εργασία Β - Απορίες
Post by: anoixi on December 16, 2006, 19:10:19 pm
euxaristw!
exw kai mia alli erwthsh.

Ti epistrefei to visionVector kai pws tha apothikeusoume tin pliroforia pou pairnoume ston arrayMemory??
afou to ena einai Room kai to allo int...


Title: Re: Εργασία Β - Απορίες
Post by: apostolos1986 on December 16, 2006, 19:20:38 pm
Φίλη anoixi παρακαλείσαι να μη χρησιμοποιείς greeklish
εάν δεν συντρέχει σοβαρός λόγος (π.χ. πρόβλημα με τον υπολογιστή σου)
γιατί τα μηνύματά σου γίνονται δυσανάγνωστα από τα υπόλοιπα μέλη της Κοινότητας.

Ευχαριστούμε
Εκ της Διαχείρισης


Title: Re: Εργασία Β - Απορίες
Post by: anoixi on December 16, 2006, 19:42:02 pm
Σορρυ!!
Παρόλ'αυτά μήπως θα μπορούσε κάποιος να βοηθήσει;


Title: Re: Εργασία Β - Απορίες
Post by: fpsom on December 16, 2006, 20:21:26 pm
Αυτό που προτείνουμε για την κατασκευή "μνήμης" είναι το εξής:

|     |___
|     _x_|
|     |

Έστω ότι έχεις τον παραπάνω λαβύρινθο, και είσαι στη θέση με το x. Τότε, το διάνυσμα όρασης που θα πάρεις θα έχει την εξής μορφή:

visionVector[] = {<αντικείμενο Room, έστω r1>, null, null, null, null, null, null, <αντικείμενο Room, έστω r2>, null} (ελπίζω να συμφωνούμε σε αυτό)

Το r1 είναι ένα αντίγραφο του κελιού στο οποίο είσαι, και το r2 ένα αντίγραφο του διπλανού το κελιού (ένα βήμα προς τα δυτικά). Καθώς όλα τα υπόλοιπα κελιά (προς Βορρά, Νότο και Ανατολή) δεν είναι ορατά, οι αντίστοιχες θέσεις του visionVector είναι ίσες με null.

Αυτό που προτείνω εγώ είναι το εξής: Λες ότι "Από εδώ και πέρα, κάθε νέο κελί που θα βλέπω - δηλαδή κάθε δωμάτιο που δεν έχω συναντήση στο visionVector μου προηγουμένως - θα το αντιστοιχώ σε έναν ακέραιο αριθμό από το 0 έως όσο πάει". Οπότε, εάν θεωρήσουμε ότι το προηγούμενο παράδειγμα είναι η πρώτη σου φορά στο λαβύρινθο, λες (τελείως αυθαίρετα) ότι το r1 το αντιστοιχώ στον ακέραιο 0 και το r2 στον 1.

Επομένως, στον πίνακα ακεραίων με τις 5 στήλες προσθέτεις τις παρακάτω δύο σειρές:

ID  - N   - S  - E  - W
0  |  ?   | ?  | ?  |   ? |
1  |  ?   | ?  | ?  |   ? |

Καθώς όμως τα r1 και r2 είναι ακριβή αντίγραφα των αντίστοιχων αντικειμένων του λαβύρινθου, έχεις στα χέρια σου όλη την πληροφορία για τους τοίχους. Δηλαδή, εάν κάνεις r1.walls[Room.North], θα σου επιστραφεί η τιμή 0 (ομοίως και για τα East και South). Αντίθετα, για το r1.walls[Room.West] θα πάρεις την τιμή 1. Αυτή την πληροφορία πρέπει να την βάλεις και στον πίνακά σου.

Οπότε (πάλι αυθαίρετα) λές ότι όπου υπάρχει τοίχος θα βάζω την τιμή -1. Όπου όμως ΔΕΝ υπάρχει τοίχος, θα βάζει την τιμή που αντιστοιχεί στον συγκεκριμένο γείτονα. Άρα, ο πίνακας (η σειρά που αντιστοιχεί στο r1 τουλάχιστον) θα διαμορφωθεί ως εξής:

ID  -   N -  S  -  E - W
0   |  -1 | -1 | -1 | 1 |
1   |  ?   | ?  | ?  |   ? |

Ακριβώς αντίστοιχα μπορούμε να κάνουμε και για το δεύτερο δωμάτιο (το r2 που αντιστοιχίσαμε στο 1). Εδώ όμως υπάρχει ένα πρόβλημα: ενω για το East και West ξέρουμε τί θα βάλουμε (0 και -1 αντίστοιχα), δεν ξέρουμε τί θα βάλουμε στο North και το South, καθώς "βλέπουμε" μεν από το αντικείμενο r2 ότι ΔΕΝ υπάρχουν τοίχοι, αλλά ακόμα δεν έχουμε "δει" μέσω του visionVector τα γειτονικά δωμάτια. Ένας τρόπος (και σίγουρα όχι ο μοναδικός) για να αντιμετωπίσουμε αυτή την κατάσταση είναι να χρησιμοποιήσουμε άλλον έναν (αυθαίρετο) αριθμό - έστω το -2  - ο οποίος θα εκφράζει για εμάς το "ξέρω ότι εδώ υπάρχει δωμάτιο, αλλά ακόμα δεν το έχω δει".

Άρα τελικά ο πίνακας θα διαμορφωθεί ως εξής:

ID  - N   -  S -  E - W
0   |  -1 | -1 | -1 | 1 |
1   |  -2 | -2 | 0  | -1 |

Από αυτόν τον πίνακα μπορούμε να κάνουμε εύκολα διασχίσεις στο λαβύρινθο, καθώς από κάθε δωμάτιο (με άλλα λόγια από κάθε σειρά του πίνακα - γιατί κάθε σειρά εκφράζει και ένα δωμάτιο) μπορούμε να δούμε τα IDs των δωματίων με τα οποία γειτονεύει. Για παράδειγμα για το δωμάτιο 1 ξέρουμε ότι γειτονεύει με το 0, και σίγουρα με άλλα 2 τα οποία όμως δεν έχουμε δει ακόμα. Άρα κρατώντας κάθε φορά το ID του δωματίου στο οποίο είμαστε και τον πίνακα "γειτνίασης", μπορούμε να βρούμε τις πιθανές νέες θέσεις.

Ελπίζω να βοήθησα.

Και ένα τελευταίο σχόλιο. Η δική μας πρόταση είναι ακριβώς αυτό: μια πρόταση. Είστε ελεύθεροι να υλοποιήσετε τη μνήμη σας με όποιο τρόπο θέλετε.


Title: Re: Εργασία Β - Απορίες
Post by: anoixi on December 16, 2006, 20:53:54 pm
Ευχαριστώ!!
Νομίζω ότι κάπως ξεκαθάρισαν τα πράγματα τώρα...


Title: Re: Εργασία Β - Απορίες
Post by: mtourgou on December 17, 2006, 20:10:52 pm
θα μπορουσε μηπως καποιος να εξησει με ποιο κριτηριο θεωρουμε οτι μια κατευθυνση εχει περισσοτερες πιθανοτητες να βρει εξοδο?  ::)    Δηλαδη θα ελεγχουμε ποια απο τις 4 κατευθυνσεις βλεπει 2 κελια μακρυα (βασει του visionVector) , ή θα ελεγχουμε τους τοιχους των διπλανων κελιων (οποιο δηλαδη γειτονικο κελι εχει τους περισσοτερους γκρεμισμενους τοιχους εχει και τη μεγαλυτερη πιθανοτητα να βρει εξοδο)?     
Ευχαριστω


Title: Re: Εργασία Β - Απορίες
Post by: cyb3rb0ss on December 18, 2006, 20:01:47 pm
Με το Vision βλεπουμε και τον κυνηγο?
Μας ενδιαφέρει αυτό στην εργασία μας? Πρέπει να το λάβουμε υπόψιν ή μας ενδιαφέρει μόνο η έξοδος?


Title: Re: Εργασία Β - Απορίες
Post by: johnny_d on December 18, 2006, 21:11:09 pm
Aς πούμε οτι έχουμε αποθηκεύσει τις θέσεις που έχει πάει.
Μετά υποτίθεται οτι δεν πρέπει να πηγαίνει στις ίδιες θέσεις?Και αν σκαλώσει κάπου?
Δεν πρέπει να γυρίσει πίσω?? :???:


Title: Re: Εργασία Β - Απορίες
Post by: fpsom on December 18, 2006, 22:04:25 pm
Με το Vision βλεπουμε και τον κυνηγο?
Μας ενδιαφέρει αυτό στην εργασία μας? Πρέπει να το λάβουμε υπόψιν ή μας ενδιαφέρει μόνο η έξοδος?
Ναι, το vision σας δίνει όλες τις πληροφορίες που μπορεί να υπάρχουν μέσα σε ένα δωμάτιο, είτε αυτές είναι η ύπαρξη εξόδου είτε η ύπαρξη του αντιπάλου. Ωστόσο, στα πλαίσια της Εργασίας Β' τουλάχιστον, την ύπαρξη του αντιπάλου μπορείτε να την αγνοήσετε.

Aς πούμε οτι έχουμε αποθηκεύσει τις θέσεις που έχει πάει.
Μετά υποτίθεται οτι δεν πρέπει να πηγαίνει στις ίδιες θέσεις?Και αν σκαλώσει κάπου?
Δεν πρέπει να γυρίσει πίσω?? :???:
Η λογική που σας προτείνουμε είναι καθαρά και μόνο για την αποθήκευση του λαβύρινθου, έτσι όπως τον ανακαλύπτετε σταδιακά. Με ποιά στρατηγική όμως θα κινηθείτε (και θα αποφύγετε το backtracking) είναι καθαρά δική σας υπόθεση. Μια λύση είναι να προσθέσετε extra στήλες στον πίνακά σας, η οποίες θα περιέχουν ακριβώς τέτοιου είδους πληροφορίες.


Title: Re: Εργασία Β - Απορίες
Post by: charis on December 19, 2006, 14:25:59 pm
Να υποθέσω ότι αναδρομικές μπορούμε να χρησιμοποιήσουμε σε κάθε περίπτωση
Χάρης


Title: Re: Εργασία Β - Απορίες
Post by: Stanley_Kubrick on December 19, 2006, 17:48:28 pm
Όταν στην CalculateNextPosition αναφέρομαι σε στοιχείο του visionVector διάφορο του 0, για παραδειγμα visionVector[4], μου βγάζει nullpointerException. Ξέρει κανείς γιατί γίνεται αυτό και πως μπορώ να το διορθώσω?


Title: Re: Εργασία Β - Απορίες
Post by: Dr. Gonzo on December 19, 2006, 23:04:38 pm
να κάνω μια τελείως άθλια ερώτηση?

πώς προχωράμε στον λαβύρινθο? Η newDirection το κάνει;

επίσης, πως δίνουμε id στο δωμάτιο? (δλδ πως αντιστοιχίζουμε το δωμάτιο με ένα id?)


Title: Re: Εργασία Β - Απορίες
Post by: kekropas on December 20, 2006, 02:40:28 am
Ναι έτσι γίνεται η κίνηση.Παίρνει τιμές από 0 έως 3 και η κάθε τιμή έχει οριστεί όπως στην πρώτη εργασία στα walls


Title: Re: Εργασία Β - Απορίες
Post by: johnny_d on December 20, 2006, 04:42:51 am
Ρε παιδία,ο πινακας arrayMemory πόσες γραμμές θα έχει?


Title: Re: Εργασία Β - Απορίες
Post by: charis on December 20, 2006, 05:13:58 am
Stanley Kubrick: Η visionVector επιστρέφει null αν αναφέρετε σε δωμάτιο πέρα από τοίχο. Στην περίπτωση αυτή δεν υπάρχει visionVector.wall[ i ] και επιστρέφει αυτό το μύνημα λάθους. Πχ Αν visionVector[0].wall[1]=0 (δηλ. τοίχος SOUTH) τότε σύγουρα η visionVector[3]=null και η visionVector[4]=null.
johnu_d: Αν σε κάθε κίνηση βρίσκει καινούργια δωμάτια (το πολύ 2+2) τότε:
πόσες κινήσεις επιτρέπονται Χ vision*2 + για την πρώτη τοποθέτηση ...
Ελπίζω να βοήθησα.
Χάρης


Title: Re: Εργασία Β - Απορίες
Post by: johnny_d on December 20, 2006, 10:08:00 am

Οπότε (πάλι αυθαίρετα) λές ότι όπου υπάρχει τοίχος θα βάζω την τιμή -1. Όπου όμως ΔΕΝ υπάρχει τοίχος, θα βάζει την τιμή που αντιστοιχεί στον συγκεκριμένο γείτονα. Άρα, ο πίνακας (η σειρά που αντιστοιχεί στο r1 τουλάχιστον) θα διαμορφωθεί ως εξής:

ID  -   N -  S  -  E - W
0   |  -1 | -1 | -1 | 1 |
1   |  ?   | ?  | ?  |   ? |



Είναι δυνατόν να γνωρίζουμε πάντα την τιμή που αντιστοιχεί στον εκάστοτε γείτονα?? :(


Title: Re: Εργασία Β - Απορίες
Post by: kekropas on December 20, 2006, 19:51:32 pm
Φίλε charis δεν κατάλαβα ακριβώς τι ενοείς, αν μπορείς κάνε άλλη μια προσπάθεια πόσες γραμμές θα έχει ο πίνακας? Στον πίνακα αυτό δλδ ένα δωμάτιο μπορεί να μπεί πάνω από μια φορά? Τελικά ο ID θα αποτελεί μια στήλη του πίνακα ή μπορεί να πηγαίνει αντίστοιχα με τις γραμμές του?


Title: Re: Εργασία Β - Απορίες
Post by: charis on December 20, 2006, 20:40:48 pm
Κεκροπα: Το θήραμα δεν γνωρίζει το μέγεθος του λαβυρίνθου, άρα δεν μπορείς να βάλεις το ίδιο μέγεθος τον πίνακα της μνήμης με τον πίνακα του πραγματικού λαβυρίνθου. Εφόσον θα γίνουν 100 κινήσεις, στην τελειότερη και σίγουρα φανταστική περίπτωση κάθε φορά θα κίνησε πχ από WEST προς EAST. Μετά από κάθε κίνηση θα "βλέπεις" το πολύ 2 νέα δωμάτια (=vision) βόρεια και 2 νέα δωμάτια νότια και επιπλέον 1 νέο δωμάτιο στην ευθεία. Άρα θα χρειάζεσαι 5 νέα δωμάτια να καταχωρήσεις μετά από κάθε κίνηση (το πολύ). Αυτά για 100 κινήσεις ... είναι 100 Χ 5νέα δωμάτια.  Ποτέ δεν ξανακαταχωρείς τα ίδια δωμάτια.
Τουλάχιστον εγώ έτσι το έκανα.
Χάρης

 


Title: Re: Εργασία Β - Απορίες
Post by: kekropas on December 20, 2006, 20:44:46 pm
ok ευχαριστώ, αλλά σε αυτή την περίπτωση ο id γιατί να είναι μια στήλη του πίνακα και να μην είναι ο αριθμός γραμμής?


Title: Re: Εργασία Β - Απορίες
Post by: charis on December 20, 2006, 21:13:53 pm
Πάλι και εγώ έτσι το έκανα...
Χάρης


Title: Re: Εργασία Β - Απορίες
Post by: Gostas on December 21, 2006, 02:03:33 am

Το μέγεθος του Λαβύρινθου μπορεις να το πάρεις από το LabyrinthUtilities.numberOfColumns
και το LabyrinthUtilities.numberOfRows τα οποία είναι public. Οι 100 κινήσεις νομίζω μπήκαν για το εντελώς Random Θήραμα (για να σταματάει). Αυτό το 100 το πιο πιθανό είναι να αλλάξει.
Για να κρίνεις τη συμπεριφορά του θηράματός σου το καλύτερο είναι να αφαιρέσεις τη λογική συνθήκη &&limits<100 από MainPlatform (για το πόσες φορές θα τρέξει την calculateNextPosition) .
Επίσης συμφωνώ με την λογική του να θεωρείται ως id το i της κάθε γραμμής του πίνακα.


Title: Re: Εργασία Β - Απορίες
Post by: solid_snake on December 21, 2006, 02:11:20 am
Γεια σας συνάδελφοι!

Λοιπόν! Επί τη ευκαιρία, θέλω να κάνω μια ερώτηση για την Β' Άσκηση της JAVA.
Ο κώδικας που έχω γράψει δε λειτουργεί αν και τον έχω τσεκάρει με άλλους τέσσερις συναδέλφους και το πράσινο ανθρωπάκι πάει πάνω κάτω συνεχόμενα. Δηλαδή δεν λειτουργεί σωστά!
Αν υπάρχει που μπορεί να βοηθήσει, θα είμαι αιώνια ευγνώμων!!!

Quote
public int calculateNextPosition(Room[] visionVector, int smell) {
    int newDirection = -1;
   
       int k=1;
       arrayMemory[counter][0]=counter;
       
       counter
       
       for (int i=1; i<8; i=i+2) {
       if (visionVector != null) {
          arrayMemory[counter][k]=-2;
       }
       else{
          arrayMemory[counter][k]=-1;}
          k++;
                            }
       
       flag=true;
       int i=1;
       
       //EMPROSTIA kinisi
       
       while((flag)&&(i<5))
        {
           if(arrayMemory[counter]==-2)
           {
                 if(i==1){
                  newDirection=3;
                  }
                  if(i==2){
                  newDirection=1;
                     }
                  if(i==3){
                     newDirection=2;
                     }
                  if(i==4){
                     newDirection=0;
                     }
                
                  arrayMemory[counter]=counter+1;
                  flag=false;
           }
           i++;
        }
        i=1;
       
       monitor=false;
             
       
       
                while (flag){
                if (arrayMemory[counter-1]==arrayMemory[counter][0]){
                   if(i==1){
                      arrayMemory[counter-1][2]=1000;
                      newDirection=1;
                   }
                   if(i==2){
                      arrayMemory[counter-1][1]=1000;
                      newDirection=3;
                   }
                   if(i==3){
                      arrayMemory[counter-1][4]=1000;
                      newDirection=0;
                   }
                   if(i==4){
                      arrayMemory[counter-1][3]=1000;
                      newDirection=2;
                   }
                   monitor=true;
                   flag=false;
                }
                
                i++;
                   
             }
             
             
             
             
             
             //Enasxolisi me pinaka kai counter
                if (monitor==true){
                   for(i=1;i<5;i++){
                      arrayMemory[counter]=-1;
                      
                   }
                   counter--;
                }
                else counter++;
        step++;
    return newDirection;
  }


Title: Re: Εργασία Β - Απορίες
Post by: Azdul on December 21, 2006, 02:43:19 am
Ayto einai to prwto mou post sto forum!!!!!To provlima mou einai to exis...thelw p.x. an dei to mparmpadeli oti to epomeno apo anatolika i to methepomeno anatolika dwmatio einai i exodos na paei pros ta ekei.Opote exw grapsei to exis:
Ean vrei oti to prwto dwmatio anatolika exodos:
if(visionVector[0].walls[2]==1&&visionVector[5].isExit()==true){
enotles gia na paei anatolika
}
Ean vrei oti to deytero dwmatio anatolika exodos:
if(visionVector[5].walls[2]==1)&&if(visionVector[6].isExit()==true){
enotles gia na paei anatolika
}
To provlima to vriskei mesa stin sinthiki tou if kai mou ektipwnei to minima
"Exception in thread "Thread-2" java.lang.NullPointerException
at stis grammes mou einai aytes oi entoles"
As me voithisei kapoios!!!!!!!!!!!!!!! :'(


Title: Re: Εργασία Β - Απορίες
Post by: Νessa on December 21, 2006, 13:26:45 pm
Πρέπει πρώτα να ελέγχεις αν υπάρχει τοίχος και ύστερα αν είναι εκεί η έξοδος. Σε εμφωλευμένα if, όχι στο ίδιο. Γιατί αν υπάρχει όντως τοίχος τότε με το που θα πάει να ελέγξει τη δεύτερη συνθήκη θα πέσει σε αντικείμενο που δεν υπάρχει.


Title: Re: Εργασία Β - Απορίες
Post by: OtiNaNAi on December 21, 2006, 15:23:25 pm
Σε περιπτωση που δεν παραδωσουμε την 2η εργασια εχουμε δικαιωμα να παραδωσουμε την 3η???
Γτ δεν με βλεπω να προλαβαινω να κανω την 2η


Title: Re: Εργασία Β - Απορίες
Post by: MIMIRU on December 21, 2006, 16:00:47 pm
Εαν δεν κάνω λάθος είχε πει στην τάξη ότι δεν υπάρχει πρόβλημα...Για πιο σίγουρα περίμενε απάντηση από τον κ. Ψωμόπουλο..


Title: Re: Εργασία Β - Απορίες
Post by: fpsom on December 21, 2006, 16:14:32 pm
Δικαίωμα να παραδώσετε την Εργασία Γ' έχετε, ανεξάρτητα του αν παραδώσατε την Α' ή/και την Β'...

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

(Για να προλάβω τυχόν ερωτήσεις: προφανώς ΔΕΝ θα σας δοθεί έτοιμος κώδικας ο οποίος θα εκτελεί τα ζητούμενα της Β΄...)


Title: Re: Εργασία Β - Απορίες
Post by: kekropas on December 21, 2006, 19:51:35 pm
Δεν βγαίνει ρε γμτ με τπτ, έλεος, τι παπ...ιές είναι αυτές


Title: Re: Εργασία Β - Απορίες
Post by: corina on December 22, 2006, 01:38:53 am
Καταπληκτικά! Λοιπόν, εμείς έχουμε φτιάξει μνήμη, αλλά δε θυμάται και τόσο καλά...Και αυτό επειδή δεν καταφέραμε, όταν καταλήγουμε σε ένα αδιέξοδο, να γυρνάμε προς τα πίσω και ταυτόχρονα να βρίσκουμε και να μετατρέπουμε τη μνήμη του συγκεκριμένου δωματίου στο οποίο ξαναμπαίνουμε...Έτσι το δωμάτιο δυστυχώς το ξανακαταχωρούμε. Έχουμε βρει τρόπο να μην πηγαίνουμε μπρος-πίσω, αλλά δεν μπορούμε να ανγνωρίζουμε τα αδιέξοδα στα οποία έχουμε μπει, με εξαίρεση το τελευταίο...
Το ερώτημα είναι το εξής: αν παραδώσουμε την εργασία έτσι όπως είναι, μπορούμε στην Γ' εργασία να βελτιώσουμε τη μνήμη μας ή πρέπει να κρατήσουμε αυτήν που θα έχουμε ήδη παραδώσει; Ελπίζουμε μέχρι τότε να έχουμε βρει κάποια καλύτερη λύση...


Title: Re: Εργασία Β - Απορίες
Post by: fpsom on December 22, 2006, 10:02:59 am
Στην Εργασία Γ' μπορείτε να κάνετε όσες και όποιες αλλαγές (σε κομμάτια που έχετε παραδώσει για την εργασία β') θέλετε.


Title: Re: Εργασία Β - Απορίες
Post by: 4Dcube on December 22, 2006, 11:38:55 am
Να παρατηρήσω κάτι...
Το τετραγωνάκι που είναι το Prey πάντα καλύπτει τις γραμμές του λαβυρίνθου που βρίσκονται στην πάνω και αριστερή πλευρά του.
Δεν είναι καθόλου σημαντικό, αλλά μπερδεύει αν το παρακολουθείς :P


Title: Re: Εργασία Β - Απορίες
Post by: Νessa on December 22, 2006, 14:03:14 pm
Ναι, και το ίδιο συμβαίνει με τις εξόδους. Στην τελική μορφή τα σύμβολά τους θα πρέπει να είναι λίγο μικρότερα.


Title: Re: Εργασία Β - Απορίες
Post by: Dr. Gonzo on December 22, 2006, 17:59:32 pm
Μου βγάζει "Μη επιτρεπτό όνομα αρχείου" όταν πάω να κανω upload στο eTHMMY,
ενώ έχω τη ζητούμενη μορφή AEM1_AEM2_TaskB.zip

Έτυχε σε καποιον άλλο? Υπάρχει πρόβλημα με το upload?

edit: το πήρε, οπότε άκυρο..
άγνωσται αι βουλαί :P


Title: Re: Εργασία Β - Απορίες
Post by: KorkoLyk on December 22, 2006, 18:08:29 pm
Πότε την ανέβασες? Εγώ που την έστειλα το μεσημέρι δωδεκάμιση ήταν εντάξει   :???:

Κάτσε να πάω να τσεκάρω αν είναι όλα καλά  :(

Edit: Τώρα είδα ότι είχες edit γιώργο :P


Title: Re: Εργασία Β - Απορίες
Post by: auroraTM on December 22, 2006, 22:31:25 pm
Προς οποιον ξέρει το σφαλμα NulllPointer Exception που οφειλεται?
(Ναι ακόμη την παλεύω,το πολυ πολύ να στείλω λάθος εργασία που δε δουλεύει ^kremala^ ^bluescreen^ )


Title: Re: Εργασία Β - Απορίες
Post by: Krono on December 22, 2006, 23:40:43 pm
    Κάνεις αναφορά σε αντικείμενο που δεν υπέρχει, είναι null pointer. Πρέπει πριν αναφερθείς σε ένα αντικείμενο να ελέγξεις αν είναι null ή όχι. Ίσως αυτό να είναι η πηγή του σφάλματος (λογικά στο visionVector[]).


Title: Re: Εργασία Β - Απορίες
Post by: auroraTM on December 23, 2006, 00:10:01 am
oκ φιλε ευχαριστω αν και δεν εχει μονο αυτο το προβλημα η εργασια απο οτι ειδα ^banghead^
τεσπα θα τη στειλω ετσι


Title: Re: Εργασία Β - Απορίες
Post by: cyb3rb0ss on December 29, 2006, 01:22:32 am
Δικαίωμα να παραδώσετε την Εργασία Γ' έχετε, ανεξάρτητα του αν παραδώσατε την Α' ή/και την Β'...

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

(Για να προλάβω τυχόν ερωτήσεις: προφανώς ΔΕΝ θα σας δοθεί έτοιμος κώδικας ο οποίος θα εκτελεί τα ζητούμενα της Β΄...)