Διαδρομές
/
Haskell
Haskell
/
Ασκήσεις
/
Μέτρηση στο Go
Μέτρηση στο Go

Μέτρηση στο Go

Δύσκολο

Οδηγίες

Μέτρησε τους πόντους που προσμετρώνται σε μια σανίδα Go.

Στο παιχνίδι του Go (γνωστό και ως baduk, igo, cờ vây και wéiqí) κερδίζεις πόντους περικυκλώνοντας πλήρως κενές διασταυρώσεις με τις πέτρες σου. Οι περικυκλωμένες διασταυρώσεις ενός παίκτη είναι γνωστές ως το έδαφός του.

Υπολόγισε το έδαφος κάθε παίκτη. Μπορείς να υποθέσεις ότι όποιες πέτρες έχουν εγκλωβιστεί στο έδαφος του αντιπάλου έχουν ήδη αφαιρεθεί από τη σανίδα.

Προσδιόρισε το έδαφος που περιλαμβάνει μια δεδομένη συντεταγμένη.

Πολλές κενές διασταυρώσεις μπορούν να περικυκλωθούν ταυτόχρονα και, για την περικύκλωση, μετρούν μόνο οι οριζόντιοι και κάθετοι γείτονες. Στο παρακάτω διάγραμμα, οι πέτρες που μετρούν σημειώνονται με "O" και οι πέτρες που δεν μετρούν σημειώνονται με "I" (αγνοημένες). Τα κενά διαστήματα αντιπροσωπεύουν κενές διασταυρώσεις.

+----+
|IOOI|
|O  O|
|O OI|
|IOI |
+----+

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

Για περισσότερες πληροφορίες, δες τη Wikipedia ή τη Sensei's Library.

Υποδείξεις

Για να ολοκληρώσεις αυτή την άσκηση, πρέπει να υλοποιήσεις τις παρακάτω συναρτήσεις:

  • Η territories επιστρέφει τις συντεταγμένες (με βάση το 1, το πάνω αριστερά είναι το (1,1)) των σημείων σε κάθε περιοχή, μαζί με το ποιος "κατέχει" την περιοχή.

  • Η territoriesFor επιστρέφει την περιοχή που περιέχει τη συντεταγμένη, μαζί με τον ιδιοκτήτη της περιοχής. Αν η συντεταγμένη δεν δείχνει σε ένα κενό σημείο, επιστρέφει Nothing.

Μια περιοχή ανήκει σε έναν από τους παίκτες αν οι πέτρες αυτού του παίκτη είναι οι μόνες πέτρες που γειτνιάζουν με την περιοχή.

Θα βρεις τις υπογραφές των τύπων ήδη στη θέση τους, αλλά θα ορίσεις εσύ τις συναρτήσεις.

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Haskell Exercism

Έτοιμος να ξεκινήσεις την άσκηση Μέτρηση στο Go;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Haskell με 107 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.