Μέτρησε τους πόντους που προσμετρώνται σε μια σανίδα Go.
Στο παιχνίδι του Go (γνωστό και ως baduk, igo, cờ vây και wéiqí) κερδίζεις πόντους περικυκλώνοντας πλήρως κενές διασταυρώσεις με τις πέτρες σου. Οι περικυκλωμένες διασταυρώσεις ενός παίκτη είναι γνωστές ως το έδαφός του.
Υπολόγισε το έδαφος κάθε παίκτη. Μπορείς να υποθέσεις ότι όποιες πέτρες έχουν εγκλωβιστεί στο έδαφος του αντιπάλου έχουν ήδη αφαιρεθεί από τη σανίδα.
Προσδιόρισε το έδαφος που περιλαμβάνει μια δεδομένη συντεταγμένη.
Πολλές κενές διασταυρώσεις μπορούν να περικυκλωθούν ταυτόχρονα και, για την περικύκλωση, μετρούν μόνο οι οριζόντιοι και κάθετοι γείτονες. Στο παρακάτω διάγραμμα, οι πέτρες που μετρούν σημειώνονται με "O" και οι πέτρες που δεν μετρούν σημειώνονται με "I" (αγνοημένες). Τα κενά διαστήματα αντιπροσωπεύουν κενές διασταυρώσεις.
+----+
|IOOI|
|O O|
|O OI|
|IOI |
+----+
Για να είμαστε πιο ακριβείς, μια κενή διασταύρωση είναι μέρος του εδάφους ενός παίκτη αν όλοι οι γείτονές της είναι είτε πέτρες αυτού του παίκτη είτε κενές διασταυρώσεις που αποτελούν μέρος του εδάφους αυτού του παίκτη.
Για περισσότερες πληροφορίες, δες τη Wikipedia ή τη Sensei's Library.
Μερικές φορές χρειάζεται να πετάξεις μια εξαίρεση. Όταν το κάνεις αυτό, θα πρέπει πάντα να συμπεριλαμβάνεις ένα κατατοπιστικό μήνυμα σφάλματος που να δείχνει ποια είναι η πηγή του σφάλματος. Αυτό κάνει τον κώδικά σου πιο ευανάγνωστο και βοηθάει σημαντικά στο debugging. Σε περιπτώσεις όπου ξέρεις ότι η πηγή του σφάλματος θα είναι κάποιου συγκεκριμένου τύπου, μπορείς να επιλέξεις να πετάξεις έναν από τους ενσωματωμένους τύπους σφαλμάτων, αλλά και πάλι θα πρέπει να συμπεριλάβεις ένα κατατοπιστικό μήνυμα.
Η συγκεκριμένη άσκηση απαιτεί να χρησιμοποιήσεις την εντολή raise για να "πετάξεις" ένα ValueError όταν σου δίνονται μη έγκυρες συντεταγμένες. Οι δοκιμές θα περάσουν μόνο αν και κάνεις raise την exception και συμπεριλάβεις ένα μήνυμα μαζί της.
Για να πετάξεις ένα ValueError με ένα μήνυμα, γράψε το μήνυμα ως όρισμα στον τύπο exception:
# when the coordinates for the piece are invalid
raise ValueError('Invalid coordinate')
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Python με 17 έννοιες146 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.