CCC-06 (2006) - J5 (Othello)

View as PDF

Submit solution

Points: 50 (partial)
Time limit: 1.0s
Memory limit: 256M

Author:
Problem type
Allowed languages
C, C++, Java, Pascal, Python
CCC Othello

To Othello (επίσης γνωστό ως Reversi ή Black & White Chess) είναι ένα παιχνίδι που παίζεται σε ένα ταμπλό 8 \times 8, παρόμοιο με μια σκακιέρα. Για τους σκοπούς της περιγραφής αυτής της ερώτησης, τα κενά στον πίνακα αναφέρονται με τη θέση τους σε σειρά και στήλη, με την επάνω σειρά να αναφέρεται ως σειρά 1 και την αριστερή στήλη ως στήλη 1. Το παιχνίδι περιλαμβάνει την τοποθέτηση κυκλικών δίσκων, ένα κάθε φορά, στο ταμπλό. Οι δίσκοι είναι χρωματισμένοι μαύροι στη μία πλευρά και λευκοί στην άλλη. Ένας παίκτης τοποθετεί τους δίσκους του/της με τη λευκή πλευρά προς τα πάνω και ο άλλος παίκτης τοποθετεί τους δίσκους του/της με τη μαύρη πλευρά προς τα πάνω.

Το παιχνίδι ξεκινά με μερικούς δίσκους που έχουν ήδη τοποθετηθεί στον πίνακα.

Μια κίνηση είναι έγκυρη εάν πληρούνται οι ακόλουθες δύο προϋποθέσεις:

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

Ακολουθούν μερικά παραδείγματα έγκυρων κινήσεων, ξεκινώντας από διάφορες διαμορφώσεις του πίνακα:

Ταμπλό στην αρχή του παιχνιδιού Ταμπλό αφού ο μαύρος παίκτης έχει τοποθετήσει
έναν δίσκο στη σειρά 5 και στη στήλη 6.
ccc06j5-figure-1.svg ccc06j5-figure-2.svg
Ταμπλό μετά από πολλά παιχνίδια από κάθε παίκτη Ταμπλό αφού ο λευκός παίκτης έχει τοποθετήσει
έναν δίσκο στη σειρά 4 και στη στήλη 6.
ccc06j5-figure-3.svg ccc06j5-figure-4.svg
Ταμπλό μετά από πολλά παιχνίδια από κάθε παίκτη Ταμπλό αφού ο λευκός παίκτης έχει τοποθετήσει
έναν δίσκο στη σειρά 1 και στη στήλη 4.
ccc06j5-figure-5.svg ccc06j5-figure-6.svg

Στην έκδοση CCC του Othello, το ταμπλό μπορεί να ξεκινήσει με μία από τις 3 διαμορφώσεις. Το παιχνίδι θα ξεκινά πάντα με τον μαύρο παίκτη στον πρώτο γύρο και μετά να εναλλάσσεται ο λευκός με το μαύρο για τους υπόλοιπους γύρους. Πρέπει να γράψετε ένα πρόγραμμα για την προσομοίωση της εναλλαγής σε ένα παιχνίδι Othello και στο τέλος να αναφέρετε πόσα κομμάτια από κάθε χρώμα υπάρχουν στο ταμπλό.

Είσοδος

Πρώτα θα υπάρχει ένα γράμμα που αντιπροσωπεύει τη διαμόρφωση της αρχικής πλακέτας (a, b ή c). Εδώ είναι οι αρχικές διαμορφώσεις για την πλακέτα:

Διαμόρφωση "a" Διαμόρφωση "b" Διαμόρφωση "c"
ccc06j5-figure-7.svg ccc06j5-figure-8.svg ccc06j5-figure-9.svg

Το δεύτερο στοιχείο εισόδου θα είναι ένας ακέραιος αριθμός n, όπου 0 \le n \le 30, που θα υποδεικνύει τον αριθμό των κινήσεων που πρέπει να γίνουν στην προσομοίωση. Το τρίτο στοιχείο εισόδου είναι n ζεύγη ακεραίων αριθμών (R, C), όπου 1 \le R \le 8 και 1 \le C \le 8 και το R αντιπροσωπεύει τη σειρά και το C αντιπροσωπεύει τη στήλη της επόμενης κίνησης.

Θυμηθείτε ότι η πρώτη κίνηση θα γίνει από τον μαύρο παίκτη, την επόμενη κίνηση θα κάνει ο λευκός παίκτης, μετά ο μαύρος παίκτης, μετά ο λευκός και ούτω καθεξής. Μπορείτε επίσης να υποθέσετε ότι όλες οι κινήσεις (R, C) θα είναι έγκυρες κινήσεις σε κενές θέσεις στον πίνακα.

Έξοδος

Το πρόγραμμα θα τυπώνει τον αριθμό των μαύρων δίσκων που εμφανίζονται ακολουθούμενος από τον αριθμό των λευκών δίσκων που εμφανίζονται στον πίνακα μετά την πραγματοποίηση των κινήσεων. Δεν είστε υπεύθυνοι για την εμφάνιση μιας εικόνας του ταμπλό κατά τη διάρκεια του παιχνιδιού. Ωστόσο, κατά τη διάρκεια της δικής σας δοκιμής, αυτό μπορεί να είναι χρήσιμο.

Παραδείγματα

input

a 1 5 6

output

4 1

input

b 0

output

8 8

input

c 3 1 7 2 2 2 1

output

22 13

Comments

There are no comments at the moment.