<prompt> Wacha tucheze mchezo wa wachimba madini Wikipedia mchezo wa mtandaoni m x n char matrix bodi inayowakilisha ubao wa mchezo ambapo: M inawakilisha mgodi ambao haujafichuliwa, E inawakilisha mraba tupu ambao haujafichuliwa, B inawakilisha mraba tupu uliofichuliwa ambao hauna migodi iliyo karibu yaani, juu, chini, kushoto, kulia, na diagonal zote 4, tarakimu 1 hadi 8 inawakilisha migodi mingapi iliyo karibu na mraba huu uliofichuliwa, na X inawakilisha mgodi uliofichuliwa.Pia umepewa safu kamili bofya ambapo bofya clickr, clickc inawakilisha nafasi inayofuata ya kubofya kati ya miraba yote ambayo haijafichuliwa M au E.Rudisha _ubao baada ya kufichua msimamo huu kulingana na sheria zifuatazo_:1. Ikiwa mgodi M utafunuliwa, basi mchezo umekwisha. Unapaswa kuibadilisha kuwa X.2. Ikiwa mraba tupu E usio na migodi inayokaribiana utafichuliwa, basi ubadilishe kuwa B tupu iliyofichuliwa na miraba yake yote iliyo karibu ambayo haijafichuliwa inapaswa kufichuliwa kwa kujirudia.3. Ikiwa mraba tupu E iliyo na angalau mgodi mmoja karibu itafichuliwa, basi ibadilishe hadi tarakimu 1 hadi 8 inayowakilisha idadi ya migodi iliyo karibu.4. Rudisha ubao wakati hakuna miraba zaidi itafunuliwa.Mfano wa 1:Ingizo: ubao E , E , E , E , E , E , E , M , E , E , E , E , E , E , E , E , E , E , E , E, bofya 3,0Pato: B , 1 , E , 1 , B , B , 1 , M , 1 , B , B , 1 , 1 , 1 , B , B , B , B , B , B Mfano wa 2:Ingizo: ubao B , 1 , E , 1 , B , B , 1 , M , 1 , B , B , 1 , 1 , 1 , B , B , B , B , B , B, bofya 1,2Pato: B , 1 , E , 1 , B , B , 1 , X , 1 , B , B , 1 , 1 , 1 , B , B , B , B , B , B Vikwazo: m ubao.urefu n ubaoi.urefu 1 m, n 50 ubaoij ama ni M, E, B, au tarakimu kutoka 1 hadi 8. click.length 2 0 kibofyo m 0 clickc n ubaoclickrclickc ni M au E.  <response>: chatukutoka kwa kuchapa Orodha ya kuingizadef onyeshaubao: OrodhaOrodhastr, safu: int, col: int, maelekezo: OrodhaOrodhaint - Hakuna: ikiwa safu 0 au safu lenubao au col 0 au col lenboard0 au ubaorowcol ! E: kurudi madini 0 kwa dir katika maelekezo: newRow, newCol safu dir0, col dir1 ikiwa newRow 0 na newRow lenboard na newCol 0 na newCol lenboard0 na ubaonewRownewCol M: migodi 1 ikiwa migodi 0: bodisafucol strmigodi kwingine: ubaosafucol B kwa dir katika maelekezo: onyeshaubao, safu mlalo dir0, col dir1, maelekezodef updateBoardboard: ListListstr, bofya: Listint - ListOrodhastr: safu, col bonyeza ikiwa ubaorowcol M: ubaosafucol X kwingine: maelekezo 1, 0, 1, -1, 0, -1, -1, -1, -1, 0, -1, 1, 0, 1 , 1, 1 onyesha ubao, safu, safu, maelekezo bodi ya kurudi maelezoKanuni huanza kwa kuangalia kama kisanduku kilichobofya kina mgodi M. Ikifanya hivyo, kisanduku kinasasishwa kwa X ili kuonyesha kuwa kimebofya.Ikiwa hakuna mgodi, algorithm huhesabu idadi ya migodi iliyo karibu. Ikiwa kuna mgodi mmoja au zaidi, seli husasishwa na idadi ya migodi iliyo karibu. Ikiwa kuna migodi 0, kisanduku kinasasishwa na B kwa Kitu tupu na seli zake zilizo karibu hukaguliwa kwa kujirudia.Algorithm inaendelea kufunua seli kulingana na sheria hadi kufikia mpaka au seli ambazo tayari zimefunuliwa. 