Μέτρηση στο Go

Μέτρηση στο Go

Μέτριο

Οδηγίες

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

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

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

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

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

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

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

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

Μορφή εισόδου

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

['  B  ', ' B B ', 'B W B', ' W W ', '  W  '];

Κάθε χαρακτήρας μιας συμβολοσειράς αντιπροσωπεύει ένα κελί. Οι έγκυρες τιμές για ένα κελί είναι:

  • ένα κενό διάστημα που αντιστοιχεί σε ένα άδειο κελί
  • B ένα κελί που ανήκει στον μαύρο παίκτη
  • W ένα κελί που ανήκει στον λευκό παίκτη

Μορφές εξόδου

Η συνάρτηση getTerritory αναμένεται να επιστρέψει ένα αντικείμενο με 2 ιδιότητες:

  • owner Ο ιδιοκτήτης της περιοχής (NONE, BLACK ή WHITE)
  • territory Ένας πίνακας συντεταγμένων που αντιπροσωπεύει κάθε κελί στην περιοχή.
{
    owner: 'BLACK',
    territory: [
        [0, 0],
        [0, 1],
        [1, 0],
    ],
}

Η συνάρτηση getTerritories αναμένεται να επιστρέψει ένα αντικείμενο με 3 ιδιότητες:

  • territoryBlack Ένας πίνακας συντεταγμένων που αντιπροσωπεύει τις περιοχές που ανήκουν στον παίκτη BLACK
  • territoryWhite Ένας πίνακας συντεταγμένων που αντιπροσωπεύει τις περιοχές που ανήκουν στον παίκτη WHITE
  • territoryNone Ένας πίνακας συντεταγμένων που αντιπροσωπεύει τις περιοχές που δεν ανήκουν σε κανέναν από τους δύο παίκτες
{
    territoryBlack: [
        [0, 0],
        [0, 1],
    ],
    territoryWhite: [
        [3, 0],
        [3, 1],
    ],
    territoryNone: [],
}
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
JavaScript Exercism

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

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