MATLAB, 94 93 bayt
rng(input(''));x(9,9)=~1;x(randperm(81,10))=1;y=[conv2(+x,ones(3),'s')+48 ''];y(x)=42;disp(y)
Örnek çalışma (koddan sonraki ilk satır kullanıcı tarafından girilen girdidir):
>> rng(input(''));x(9,9)=~1;x(randperm(81,10))=1;y=[conv2(+x,ones(3),'s')+48 ''];y(x)=42;disp(y)
99
*10001*2*
220001232
*201111*1
*312*1111
12*211000
011211000
0001*1000
000112110
000001*10
açıklama
rng(input(''));
bir tamsayı alır ve tohum olarak kullanır. (Bu modern MATLAB sürümlerinde çalışır. Eski sürümler farklı bir sözdizimine ihtiyaç duyabilir.)
x(9,9)=~1;
bir matrisin girişine mantıksal 0
veya false
(mantıksal olarak reddedilerek elde edilen 1
) atar . Geri kalan girişler de otomatik olarak mantıksal olarak başlatılır .(9,9)
x
0
x(randperm(81,10))=1;
atar 1
(autoomatically mantıksal döküm 1
ya true
kadar) 10
arasında
81
girişlerine x
değiştirmeden rastgele seçilmiş. Bu girdiler bomba içeren girişlerdir.
conv2(+x,ones(3),'s')
kısaltmasıdır conv2(+x,ones(3),'same')
. Matrisi x
( double
kullanılması, kullanılması gereken +
) içeren 3 × 3 mahalle ile ikna eder 1
. Bu, her girişe kaç bomba bitişik olduğunu sayar. Bir bomba içeren girişler için bu bomba içerir, ancak oradaki değerin üzerine yazılacaktır.
y=[...+48 ''];
sayıdan ASCII koduna dönüştürmek için değere 48 ekler. Boş matrisle birleştirme bu ASCII kodlarını karakterlere çevirir.
y(x)=42;
'*'
bombaların pozisyonlarına 42 (ASCII kodu ) atar . Bu konumlar x
, burada mantıksal bir dizin olarak kullanılan ile verilir .
disp(y)
sonucu görüntüler.