Υπήρχε ένα μικρό glitch στον grader και στην υποβολή σου εμφανίζεται σαν το:
Something's wrong. Check: State::next
or State::getPlaying
να είναι η σωστή συμπεριφορά. Στην πραγματικότητα, αυτό είναι που πρέπει να κοιτάξεις στον κώδικά σου. Το διόρθωσα και αν υποβάλεις πάλι τον ίδιο κώδικα θα δεις ότι η γραμμή αυτή θα εμφανίζεται με κόκκινο (X) αντί για πράσινο (τικ).
Όπως βλέπεις στο υπόλοιπο μήνυμα που εμφανίζεται, το συγκεκριμένο test case ξεκινάει με τρεις σωρούς νομισμάτων στους οποίους υπάρχουν αρχικά 4, 5 και 6 νομίσματα (γραμμή 2 και γραμμή 11). Στην κατάσταση αυτή, προσπαθεί να εφαρμόσει την κίνηση να πάρει 3 νομίσματα από το σωρό 0 και να βάλει 3 νομίσματα στο σωρό 1 (γραμμή 13). Η κίνηση αυτή απαγορεύεται, γιατί τα νομίσματα που παίρνεις σε μια κίνηση πρέπει να είναι αυστηρά περισσότερα από αυτά που βάζεις. Επομένως, η State::next
θα πρέπει να πετάξει εξαίρεση (γραμμή 14) και ο κώδικάς σου το κάνει σωστά αυτό (αλλιώς θα έβλεπες κάτι κακό στη γραμμή 14). Αμέσως μετά όμως, καλείται η State::getPlaying
που πρέπει να επιστρέψει 0, γιατί η άκυρη κίνηση δεν πρέπει να έχει μετρήσει και ο επόμενος παίκτης που πρέπει να παίξει είναι ακόμα ο 0. Στη δική σου περίπτωση, αυτό δε συμβαίνει και το μήνυμα σού λέει ότι έχεις κάτι λάθος είτε στη συνάρτηση State::next
(που αυξάνεις το μετρητή πριν ελέγξεις την εγκυρότητα της κίνησης), είτε στην State::getPlaying
(που αναφέρει λάθος παίκτη). Πιθανολογώ ότι το λάθος σου είναι το πρώτο.