MATLAB, 94 93 byte
rng(input(''));x(9,9)=~1;x(randperm(81,10))=1;y=[conv2(+x,ones(3),'s')+48 ''];y(x)=42;disp(y)
Contoh run (baris pertama setelah kode adalah input yang diketik oleh pengguna):
>> 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
Penjelasan
rng(input(''));
mengambil bilangan bulat dan menggunakannya sebagai benih. (Ini berfungsi dalam versi MATLAB modern. Versi lama mungkin memerlukan sintaks yang berbeda.)
x(9,9)=~1;
menugaskan logis 0, atau false(diperoleh dengan meniadakan secara logis 1) ke entri (9,9)matriks x. Sisa dari entri secara otomatis diinisialisasi ke logis 0juga.
x(randperm(81,10))=1;
menugaskan 1(secara otomatis dilemparkan ke logis 1, atau true) untuk 10dari
81entri x, dipilih secara acak tanpa penggantian. Entri-entri ini adalah yang mengandung bom.
conv2(+x,ones(3),'s')
adalah singkatan dari conv2(+x,ones(3),'same'). Ini menggabungkan matriks x(yang perlu dilemparkan ke double, menggunakan +) dengan lingkungan 3 × 3 yang berisi 1. Ini menghitung berapa banyak bom yang berdekatan dengan setiap entri. Untuk entri yang berisi bom itu termasuk bom itu, tetapi nilainya di sana akan ditimpa nanti.
y=[...+48 ''];
menambahkan 48 ke nilai, untuk mengkonversi dari angka ke kode ASCII. Menggabungkan dengan matriks kosong melemparkan kode ASCII ini ke karakter.
y(x)=42;
menugaskan 42 (kode ASCII untuk '*') ke posisi bom. Posisi-posisi ini diberikan oleh x, yang di sini digunakan sebagai indeks logis.
disp(y)
menampilkan hasilnya.