Αλγόριθμοι & Δομές Δεδομένων - Εργασία 2 [2018-19]

Αλγόριθμοι & Δομές Δεδομένων - Εργασία 2 [2018-19]

Δημοσίευσηαπό sgyftopo » 16 Νοέμ 2018, 00:35

Εδώ μπορείτε να υποβάλετε ερωτήσεις, απορίες ή παρατηρήσεις σχετικές με την 2η εργασία.
sgyftopo
Full Member
 
Δημοσιεύσεις: 125
Εγγραφή: 17 Οκτ 2013, 11:30

Re: Αλγόριθμοι & Δομές Δεδομένων - Εργασία 2 [2018-19]

Δημοσίευσηαπό Aedes Sollicitans » 16 Νοέμ 2018, 18:05

Η εκφώνηση πότε θα δοθεί;
Άβαταρ μέλους
Aedes Sollicitans
Jr. Member
 
Δημοσιεύσεις: 69
Εγγραφή: 11 Οκτ 2015, 16:51
Φοιτητής ΗΜΜΥ: Ναι

Re: Αλγόριθμοι & Δομές Δεδομένων - Εργασία 2 [2018-19]

Δημοσίευσηαπό kostasffff » 16 Νοέμ 2018, 23:20

Μπορουμε σε καθε γυρο να χρησιμοποιησουμε την μεθοδο getStatus() η οποια θα επιστρεφει εναν πινακα με τις τιμες FREE, BLOCKED, PLAYER_1 και PLAYER_2. Οι θεσεις του πινακα οι οποιες περιεχουν την τιμη BLOCKED ειναι μονο αυτες οι οποιες εχουν μπλοκαριστει λογω δεσμευσης σε αποσταση 1 απο τις δεσμευμενες η και αυτες που εχουν μπλοκαριστει και λογω δεσμευσης σε αποσταση 3?

π.χ. Εστω πινακας :
0------>BLOCKED
1------>PLAYER_1
2------>BLOCKED
3------>FREE
4------>FREE
5------>FREE
6------>FREE
7------>FREE
8------>FREE
.
.
Eπιλεγω σαν PLAYER_2 την θεση 3 και ο PLAYER_1 παιζει κατι σε >8. Ο πινακας με την getStatus() θα μου ερθει στην μορφη:

0------>BLOCKED
1------>PLAYER_1
2------>BLOCKED
3------>PLAYER_2
4------>BLOCKED
5------>BLOCKED
6------>BLOCKED
7------>FREE
8------>FREE

η θα πρεπει εγω να τροποποιω τον πινακα για να εχει BLOCKED και στις προσωρινα μπλοκαρισμενες θεσεις λογω της τελευταιας κινησης μου???
kostasffff
Newbie
 
Δημοσιεύσεις: 16
Εγγραφή: 05 Ιουν 2014, 21:50

Re: Αλγόριθμοι & Δομές Δεδομένων - Εργασία 2 [2018-19]

Δημοσίευσηαπό Aedes Sollicitans » 17 Νοέμ 2018, 17:53

Η συνάρτηση getMoveLocation(); τι ακριβώς έχει σαν περιεχόμενο; Αριθμούς που αντιστοιχούν στον αριθμό της σειράς που καταλήφθηκε η κάθε θέση;
Άβαταρ μέλους
Aedes Sollicitans
Jr. Member
 
Δημοσιεύσεις: 69
Εγγραφή: 11 Οκτ 2015, 16:51
Φοιτητής ΗΜΜΥ: Ναι

Re: Αλγόριθμοι & Δομές Δεδομένων - Εργασία 2 [2018-19]

Δημοσίευσηαπό sgyftopo » 17 Νοέμ 2018, 22:29

Μπορουμε σε καθε γυρο να χρησιμοποιησουμε την μεθοδο getStatus() η οποια θα επιστρεφει εναν πινακα με τις τιμες FREE, BLOCKED, PLAYER_1 και PLAYER_2. Οι θεσεις του πινακα οι οποιες περιεχουν την τιμη BLOCKED ειναι μονο αυτες οι οποιες εχουν μπλοκαριστει λογω δεσμευσης σε αποσταση 1 απο τις δεσμευμενες η και αυτες που εχουν μπλοκαριστει και λογω δεσμευσης σε αποσταση 3?

π.χ. Εστω πινακας :
0------>BLOCKED
1------>PLAYER_1
2------>BLOCKED
3------>FREE
4------>FREE
5------>FREE
6------>FREE
7------>FREE
8------>FREE
.
.
Eπιλεγω σαν PLAYER_2 την θεση 3 και ο PLAYER_1 παιζει κατι σε >8. Ο πινακας με την getStatus() θα μου ερθει στην μορφη:

0------>BLOCKED
1------>PLAYER_1
2------>BLOCKED
3------>PLAYER_2
4------>BLOCKED
5------>BLOCKED
6------>BLOCKED
7------>FREE
8------>FREE

η θα πρεπει εγω να τροποποιω τον πινακα για να εχει BLOCKED και στις προσωρινα μπλοκαρισμενες θεσεις λογω της τελευταιας κινησης μου???


Οι θέσεις BLOCKED είναι μόνο αυτές που απέχουν απόσταση 1 από την δεσμευμένη θέση (PLAYER_1 ή PLAYER_2), ο περιορισμός για απόσταση 3 θέσεων από την τελευταία θέση δεν φαίνεται στον πίνακα. Αν θέλετε να τις αλλάζετε εσείς σε BLOCKED τότε δημιουργήστε ένα αντίγραφο του πίνακα που σας επιστρέφει η συνάρτηση και εφαρμόστε τις αλλαγές εκεί (αν πειράξετε τον αυθεντικό πίνακα που σας επιστρέφεται θα έχετε πρόβλημα με τη ροή του παιχνιδιού καθώς αυτός ο πίνακας χρησιμοποιείται και από άλλες κλάσεις).

Η συνάρτηση getMoveLocation(); τι ακριβώς έχει σαν περιεχόμενο; Αριθμούς που αντιστοιχούν στον αριθμό της σειράς που καταλήφθηκε η κάθε θέση;


Η συνάρτηση getMoveLocation(); επιστρέφει ένα διάνυσμα Vector<Integer> που έχει τη σειρά με την οποία καταλήφθηκαν οι θέσεις (π.χ. το διάνυσμα [10, 30, 18] σημαίνει ότι ο πρώτος παίκτης αρχικά δέσμευσε την θέση 10, μετά ο δεύτερος παίκτης τη θέση 30 και τέλος ο πρώτος παίκτης τη θέση 18).
sgyftopo
Full Member
 
Δημοσιεύσεις: 125
Εγγραφή: 17 Οκτ 2013, 11:30

Re: Αλγόριθμοι & Δομές Δεδομένων - Εργασία 2 [2018-19]

Δημοσίευσηαπό Bill98 » 18 Νοέμ 2018, 13:44

Για κάποιο λόγο, ενώ έχω περισσότερους πόντους από τον PLAYER_A, στο success έχω false. Δεν φαίνεται να έχω κάνει κάποια παράνομη κίνηση όμως. Που οφείλεται αυτό;
Χωρίς τίτλο.png
Bill98
Newbie
 
Δημοσιεύσεις: 1
Εγγραφή: 09 Ιουν 2017, 15:35

Re: Αλγόριθμοι & Δομές Δεδομένων - Εργασία 2 [2018-19]

Δημοσίευσηαπό sgyftopo » 18 Νοέμ 2018, 15:09

Bill98 έγραψε:Για κάποιο λόγο, ενώ έχω περισσότερους πόντους από τον PLAYER_A, στο success έχω false. Δεν φαίνεται να έχω κάνει κάποια παράνομη κίνηση όμως. Που οφείλεται αυτό;
Χωρίς τίτλο.png

Έλεγξα τις κινήσεις σου για την συγκεκριμένη παρτίδα και το score το οποίο επιτυγχάνει είναι PLAYER_A:581 και PLAYER_B:343, άρα χάνει και γι' αυτό σου δίνει success 0 (η παρτίδα είναι έτσι καταχωρισμένη με αυτό το score στον server και το έλεγξα και με δικούς μου υπολογισμούς). Μάλλον στον κώδικά σου αλλάζεις τις τιμές στον πίνακα που παίρνεις με τη συνάρτηση getValue() με αποτέλεσμα να σου δίνει εσφαλμένη εικόνα για την πορεία της παρτίδας (ο πίνακας αυτός χρησιμοποιείται και από άλλες κλάσεις και έτσι αν αλλάξεις κάποια τιμή εκεί επηρεάζεται και το αποτέλεσμα που παράγεται από τις άλλες κλάσεις). Θα σου πρότεινα να δημιουργείς αντίγραφο του πίνακα και να κάνεις εκεί τους υπολογισμούς σου ώστε να μην δημιουργείται πρόβλημα.
sgyftopo
Full Member
 
Δημοσιεύσεις: 125
Εγγραφή: 17 Οκτ 2013, 11:30

Re: Αλγόριθμοι & Δομές Δεδομένων - Εργασία 2 [2018-19]

Δημοσίευσηαπό Dia » 18 Νοέμ 2018, 19:54

Στην παρουσίαση είχατε πεί πως αν κάποιος παίκτης καταλάβει τρείς κόμβους στην σειρά ανάμεσα στους οποίους ο αντίπαλος δεν μπορεί να πιάσει κάποιον άλλον, τότε οι πόντοι τους τριπλασιάζονται και στην περίπτωση που ειναι πάνω από τρείς στην σειρά τότε διπλασιάζονται. Δηλαδή αν έχουμε τέσσερις κόμβους με αξία 1,2,3,4 τοτε οι πόντοι θα ειναι : 2(1+2+3+4) = 20 ή ((1+2+3)*3 + 4)*2 = 44; (όπου οι κόμβοι με αξία 1,2,3 ηταν οι τρείς πρώτοι που δεσμεύτηκαν).
Dia
Newbie
 
Δημοσιεύσεις: 4
Εγγραφή: 13 Ιαν 2018, 12:46

Re: Αλγόριθμοι & Δομές Δεδομένων - Εργασία 2 [2018-19]

Δημοσίευσηαπό Aedes Sollicitans » 19 Νοέμ 2018, 11:55

Για να περάσουμε την άσκηση πρέπει να κερδίζουμε και στα 5 παιχνίδια; Και αν ναι, μπορούμε να εκμεταλλευτούμε του getSeed ώστε να αλλάζουμε τον κώδικά μας ειδικά για κάποιο παιχνίδι που χάνουμε;
Άβαταρ μέλους
Aedes Sollicitans
Jr. Member
 
Δημοσιεύσεις: 69
Εγγραφή: 11 Οκτ 2015, 16:51
Φοιτητής ΗΜΜΥ: Ναι

Re: Αλγόριθμοι & Δομές Δεδομένων - Εργασία 2 [2018-19]

Δημοσίευσηαπό sgyftopo » 19 Νοέμ 2018, 18:59

Στην παρουσίαση είχατε πεί πως αν κάποιος παίκτης καταλάβει τρείς κόμβους στην σειρά ανάμεσα στους οποίους ο αντίπαλος δεν μπορεί να πιάσει κάποιον άλλον, τότε οι πόντοι τους τριπλασιάζονται και στην περίπτωση που ειναι πάνω από τρείς στην σειρά τότε διπλασιάζονται. Δηλαδή αν έχουμε τέσσερις κόμβους με αξία 1,2,3,4 τοτε οι πόντοι θα ειναι : 2(1+2+3+4) = 20 ή ((1+2+3)*3 + 4)*2 = 44; (όπου οι κόμβοι με αξία 1,2,3 ηταν οι τρείς πρώτοι που δεσμεύτηκαν).


Στο Facility Game όταν δεσμεύονται τρεις συνεχόμενοι κόμβοι από τον ίδιο παίκτη διπλασιάζονται οι αξίες τους. Αν δεσμεύσει ο παίκτης και έναν τέταρτο κόμβο δίπλα στην υπάρχουσα τριάδα, τότε διπλασιάζεται η αξία και του τέταρτου κόμβου. Άρα, αν έχουμε τέσσερις κόμβους με αξία 1,2,3,4 τοτε οι πόντοι θα ειναι : 2*(1+2+3+4) = 20. Αυτό που ανέφερα στο φροντιστήριο είναι ότι, αν έχετε ήδη έτοιμη μια τριαδα και υπάρχουν ακόμα ελεύθεροι κόμβοι δίπλα της, τότε είναι ευκαιρία να δεσμεύσετε τους κόμβους αυτούς αφού η αξία τους διπλασιάζεται από την τετράδα στην οποία συμμετέχουν.

Για να περάσουμε την άσκηση πρέπει να κερδίζουμε και στα 5 παιχνίδια; Και αν ναι, μπορούμε να εκμεταλλευτούμε του getSeed ώστε να αλλάζουμε τον κώδικά μας ειδικά για κάποιο παιχνίδι που χάνουμε;


Ναι, πρέπει να κερδίζετε και στα 5 παιχνίδια. Η στρατηγική σας πρέπει να είναι γενική και όχι εξειδικευμένη για κάθε αρένα. Οι αρένες έχουν επιλεγεί έτσι ώστε μια σχετικά απλή αλλά ευφυής στρατηγική να είναι αρκετή για να κερδίζετε και στα 5 παιχνίδια.
sgyftopo
Full Member
 
Δημοσιεύσεις: 125
Εγγραφή: 17 Οκτ 2013, 11:30

Re: Αλγόριθμοι & Δομές Δεδομένων - Εργασία 2 [2018-19]

Δημοσίευσηαπό grossos » 20 Νοέμ 2018, 22:22

Θα γίνει κάποιο ακόμη εργαστήριο/φροντιστήριο ?
grossos
Newbie
 
Δημοσιεύσεις: 1
Εγγραφή: 06 Σεπ 2017, 10:34

Re: Αλγόριθμοι & Δομές Δεδομένων - Εργασία 2 [2018-19]

Δημοσίευσηαπό sgyftopo » 20 Νοέμ 2018, 23:14

grossos έγραψε:Θα γίνει κάποιο ακόμη εργαστήριο/φροντιστήριο ?

Ναι, θα βγει σχετική ανακοίνωση.
sgyftopo
Full Member
 
Δημοσιεύσεις: 125
Εγγραφή: 17 Οκτ 2013, 11:30

Re: Αλγόριθμοι & Δομές Δεδομένων - Εργασία 2 [2018-19]

Δημοσίευσηαπό Dia » 20 Νοέμ 2018, 23:54

Στο αρχείο FPlayer.java επιτρέπεται να προσθέσουμε δύο συναρτήσεις οι οποίες θα επιστρέφουν τις τιμές των μεταβλητών me και opponent ;
Dia
Newbie
 
Δημοσιεύσεις: 4
Εγγραφή: 13 Ιαν 2018, 12:46

Re: Αλγόριθμοι & Δομές Δεδομένων - Εργασία 2 [2018-19]

Δημοσίευσηαπό sgyftopo » 21 Νοέμ 2018, 00:18

Dia έγραψε:Στο αρχείο FPlayer.java επιτρέπεται να προσθέσουμε δύο συναρτήσεις οι οποίες θα επιστρέφουν τις τιμές των μεταβλητών me και opponent ;

Δεν χρειάζεται να δημιουργήσεις συναρτήσεις, υπάρχουν ήδη ορισμένες στην κλάση του παίκτη σου λόγω του extends FPlayer και μπορείς να τις χρησιμοποιήσεις απευθείας (μπορείς να δεις ένα απλό παράδειγμα χρήσης στον κώδικα του FPlayerMy1.java που περιέχεται στο project).
sgyftopo
Full Member
 
Δημοσιεύσεις: 125
Εγγραφή: 17 Οκτ 2013, 11:30

Re: Αλγόριθμοι & Δομές Δεδομένων - Εργασία 2 [2018-19]

Δημοσίευσηαπό Sergios » 23 Νοέμ 2018, 15:53

2 ερωτήσεις: Αρχικά δεν μπορώ να βρω κάπου τον αριθμό των γύρων του κάθε παιχνιδιού οπότε δεν ξέρω αν αξίζει να εκμεταλλευτώ το μήκος του πίνακα. Δεύτερον είχα μια παλαιότερη έκδοση facility game στο workspace, τη διέγραψα αντί να τη μετονομάσω και πλέον ενώ δεν υπάρχει τίποτα στο workspace, στο import δεν μπορώ να επιλέξω το τελευταίο version. Λίγη βοήθεια με αυτό θα μου ήταν χρήσιμη.
Sergios
Newbie
 
Δημοσιεύσεις: 2
Εγγραφή: 03 Φεβ 2017, 10:44

Επόμενο

Μέλη σε σύνδεση

Μέλη σε αυτή την Δ. Συζήτηση: Iordanis Kaza και 2 επισκέπτες