Ο Ναρκαλιευτής είναι ένα δημοφιλές παιχνίδι στο οποίο ο χρήστης πρέπει να βρει τις νάρκες χρησιμοποιώντας αριθμητικές ενδείξεις που δείχνουν πόσες νάρκες γειτνιάζουν άμεσα (οριζόντια, κάθετα ή διαγώνια) με ένα τετράγωνο.
Η αποστολή σου είναι να προσθέσεις τον αριθμό των ναρκών στα κενά τετράγωνα ενός ολοκληρωμένου ταμπλό Minesweeper.
Το ίδιο το ταμπλό είναι ένα ορθογώνιο που αποτελείται από τετράγωνα που είναι είτε κενά (' ') είτε νάρκες ('*').
Για κάθε κενό τετράγωνο, μέτρησε πόσες νάρκες γειτονεύουν με αυτό (οριζόντια, κάθετα, διαγώνια). Αν το κενό τετράγωνο δεν έχει γειτονικές νάρκες, άφησέ το κενό. Διαφορετικά, αντικατέστησέ το με τον αριθμό των γειτονικών ναρκών.
Για παράδειγμα, μπορεί να λάβεις ένα ταμπλό 5 x 4 σαν αυτό (εδώ τα κενά παριστάνονται με τον χαρακτήρα '·' για να φαίνονται στην οθόνη):
·*·*·
··*··
··*··
·····
Το οποίο ο κώδικάς σου θα πρέπει να μετατρέψει σε αυτό:
1*3*1
13*31
·2*2·
·111·
Το ναρκοπέδιο αναπαρίσταται ως συμβολοσειρά, με έναν χαρακτήρα αλλαγής γραμμής στο τέλος κάθε γραμμής.
Ένα παράδειγμα θα ήταν " \n * \n \n"
Το buffer για τη συμβολοσειρά εισόδου χρησιμοποιεί τα byte 64-319 της γραμμικής μνήμης.
Η συμβολοσειρά εισόδου μπορεί να τροποποιηθεί επί τόπου, αν θέλεις.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις WebAssembly με 87 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.
Εξερευνούμε τους εμφωλευμένους βρόχους `for`, την έξυπνη χρήση των min/max για την απλοποίηση του ελέγχου ορίων, τα functional pipelines και τη χρήση δισδιάστατων πινάκων.