Διαδρομές
/
Python
Python
/
Ασκήσεις
/
Ναρκαλιευτής
Ναρκαλιευτής

Ναρκαλιευτής

Μέτριο

Εισαγωγή

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

Οδηγίες

Η αποστολή σου είναι να προσθέσεις τον αριθμό των ναρκών στα κενά τετράγωνα ενός ολοκληρωμένου ταμπλό Minesweeper. Το ίδιο το ταμπλό είναι ένα ορθογώνιο που αποτελείται από τετράγωνα που είναι είτε κενά (' ') είτε νάρκες ('*').

Για κάθε κενό τετράγωνο, μέτρησε πόσες νάρκες γειτονεύουν με αυτό (οριζόντια, κάθετα, διαγώνια). Αν το κενό τετράγωνο δεν έχει γειτονικές νάρκες, άφησέ το κενό. Διαφορετικά, αντικατέστησέ το με τον αριθμό των γειτονικών ναρκών.

Για παράδειγμα, μπορεί να λάβεις ένα ταμπλό 5 x 4 σαν αυτό (εδώ τα κενά παριστάνονται με τον χαρακτήρα '·' για να φαίνονται στην οθόνη):

·*·*·
··*··
··*··
·····

Το οποίο ο κώδικάς σου θα πρέπει να μετατρέψει σε αυτό:

1*3*1
13*31
·2*2·
·111·

Μηνύματα εξαιρέσεων

Μερικές φορές χρειάζεται να πετάξεις μια εξαίρεση. Όταν το κάνεις αυτό, θα πρέπει πάντα να συμπεριλαμβάνεις ένα ουσιαστικό μήνυμα σφάλματος που να δείχνει ποια είναι η πηγή του σφάλματος. Αυτό κάνει τον κώδικά σου πιο ευανάγνωστο και βοηθάει σημαντικά στο debugging. Σε περιπτώσεις που ξέρεις ότι η πηγή του σφάλματος θα είναι κάποιου συγκεκριμένου τύπου, μπορείς να επιλέξεις να πετάξεις έναν από τους ενσωματωμένους τύπους σφαλμάτων, αλλά και πάλι θα πρέπει να συμπεριλάβεις ένα ουσιαστικό μήνυμα.

Η συγκεκριμένη άσκηση απαιτεί να χρησιμοποιήσεις την εντολή raise για να "πετάξεις" ένα ValueError όταν η συνάρτηση board() δεχθεί εσφαλμένη είσοδο. Τα tests θα περάσουν μόνο αν κάνεις raise την exception και συμπεριλάβεις και ένα μήνυμα μαζί της.

Για να πετάξεις ένα ValueError με μήνυμα, γράψε το μήνυμα ως όρισμα στον τύπο exception:

# when the board receives malformed input
raise ValueError("The board is invalid with current input.")
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Python Exercism

Έτοιμος να ξεκινήσεις την άσκηση Ναρκαλιευτής;

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

Αναλυτική ματιά στο Ναρκαλιευτής!

Εξερευνούμε τους εμφωλευμένους βρόχους `for`, την έξυπνη χρήση των min/max για την απλοποίηση του ελέγχου ορίων, τα functional pipelines και τη χρήση δισδιάστατων πινάκων.