Winmine.exe
Windows Minesweeper (WinMine) Windows sistemində ən məşhur oyunlardan biridir. Qaydaları çox sadədir və bir partiya oynamaq yalnız bir neçə dəqiqə çəkir. İlk olaraq, bu oyunu qısaca tanıdaq (əgər oyunu kifayət qədər yaxşı bildiyinizi düşünürsünüzsə, növbəti абзацı keçə bilərsiniz): Oyunun məqsədi minaların olmadığı bütün kvadratları açmaqdır (sol siçan düyməsi ilə) və mina üzərinə basaraq "partlamamaqdır". Minaların yerləri məntiqi düşüncə ilə müəyyən edilir. Oyun lövhəsində bir kvadrata basmaq, həmin kvadratın və ya bir-birinə bitişik olan kvadratların altında gizlənənləri ortaya çıxaracaq (əgər bir-birinə bitişikdirsə, bir anda çox sayda boş kvadrat açıla bilər). Bəzi kvadratlar boşdur, lakin bəziləri rəqəmlər (1-dən 8-ə qədər) ehtiva edir, hər rəqəm açılan kvadratın ətrafında olan minaların sayını göstərir. Oyun, mina vurmadan bütün boş kvadratlar açıldıqda qazanılır, bayraqlarla müəyyən edilməmiş qalan minalar avtomatik olaraq kompüter tərəfindən bayraqlanır. Minesweeper-in fərqli xüsusiyyəti başlanğıc mərhələdə və bəzi aralıq mərhələlərdə təsadüfilikdir.
Vikipediya
Jaddy boş vaxtlarında WinMine oynamağı çox sevir, çünki bu oyun həm sadə, həm də ağıllıdır. Lakin, bəzən oyunda bəzi müəyyən edilməyən vəziyyətlərə çatdıqda bu onu əsəbiləşdirir. Aşağıdakı vəziyyətə baxın:
Bu nümunənin qırmızı dairəsində qalan iki kvadrat tamamilə müəyyən edilməzdir və görünür ki, qalan BİR mina üçün iki mümkün paylanma var. Jaddy bu cür çətinliyə düşəndə, təxmin etməkdən başqa çarəsi qalmır. Bəzən yalnız iki mümkün seçim var (nümunədə olduğu kimi), lakin bəzən daha çox olur. Bu səbəbdən, o, oyun lövhəsinin cari vəziyyətinə əsasən minaların müxtəlif mümkün paylanmalarının sayını hesablamaq üçün bir köməkçiyə ehtiyac duyur.
Bu oyun köməkçisi onun üçün çox faydalı və maraqlıdır, buna görə də dərhal kod yazmağa başlayır. Təəssüf ki, Jaddy Proqramlaşdırma və Alqoritm dərsində bütün vaxtını WinMine oynamağa sərf etdi, buna görə də belə mürəkkəb bir vəzifəni mümkün olmayan bir missiya kimi hiss edir. Jaddy WinMine-i çox sevir, buna görə də sizdən, əla bir proqramçıdan kömək istəyir. Bundan əlavə, çətinliyi azaltmaq üçün üç məhdudiyyət əlavə etdi:
Oyunun giriş vəziyyətinin yalnız başlanğıc lövhəsində BİR klik etməklə yaradılması təmin edilir.
Verilən vəziyyətdə, əgər iki açılmamış kvadrat birbaşa və ya digər açılmamış kvadratlarla bağlıdırsa, onlar da iki tərəfli bağlıdır. Yəni, digər açılmamış kvadratların hər hansı biri çıxarıldıqdan sonra belə, bu iki kvadrat hələ də bağlıdır. Burada iki kvadratın yalnız bir kənarı paylaşdıqda bağlı olduğunu deyirik. Bu o deməkdir ki, bir kvadrat ən çox dörd kvadratla bağlıdır.
Verilən vəziyyətdə, əgər iki rəqəm bir kənarı birbaşa və ya digər rəqəmlərlə paylaşaraq bağlıdırsa, bağlı rəqəmlər dəstinə bitişik olan bütün açılmamış hüceyrələr də bağlı olmalıdır.
Jaddy-yə kömək edin, zəhmət olmasa!
Giriş verilənləri
Bir neçə test halı var, girişin ilk sətri müsbət tam ədəd T (T ≤ 50) göstərir ki, bu da test hallarının sayını bildirir. Sonra T halları gəlir. Hər bir test halı üçün ilk sətrdə lövhədəki sətir və sütunların sayını və lövhədəki ümumi mina sayını göstərən üç müsbət tam ədəd n, m və M verilir, burada 1 ≤ n, m ≤ 100 və 1 ≤ M ≤ 1000. Sonra lövhənin cari vəziyyətini təsvir edən n*m simvol matrisi veriləcək. Bu matrisdə 2 simvol üslubu var:
0-dan 8-ə qədər rəqəmlər: bu, bu kvadratın ətrafında olan minaların sayını göstərir ('0' boş kvadrat deməkdir).
'.' (aydınlaşdırmaq üçün dırnaqlar): bu, bu kvadratın açılmadığını bildirir.
Çıxış verilənləri
Hər bir test halı üçün, verilən vəziyyətdə minaların mümkün paylanma sayını göstərən, vəziyyət nömrəsi ilə başlayan bir tam ədəd çıxarın, 1000003 ilə modulyasiya edilmişdir. Əlavə təfərrüatlar üçün nümunə çıxışına baxın.