ম্যাটল্যাব, 94 93 বাইট
rng(input(''));x(9,9)=~1;x(randperm(81,10))=1;y=[conv2(+x,ones(3),'s')+48 ''];y(x)=42;disp(y)
উদাহরণ রান (কোডের পরে প্রথম লাইনটি ব্যবহারকারী দ্বারা টাইপ করা ইনপুট):
>> 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
ব্যাখ্যা
rng(input(''));
একটি পূর্ণসংখ্যা নেয় এবং এটি বীজ হিসাবে ব্যবহার করে। (এটি আধুনিক ম্যাটল্যাব সংস্করণগুলিতে কাজ করে Old পুরানো সংস্করণগুলির জন্য আলাদা সিনট্যাক্সের প্রয়োজন হতে পারে))
x(9,9)=~1;
ল্যাটিক্যাল 0
, বা false
(যৌক্তিকভাবে উপেক্ষা করে প্রাপ্ত 1
) (9,9)
ম্যাট্রিক্সের প্রবেশের জন্য বরাদ্দ করে x
। বাকি এন্ট্রিগুলি স্বয়ংক্রিয়ভাবে যৌক্তিকরূপে সূচিত 0
হয়।
x(randperm(81,10))=1;
নির্ধারণ 1
(autoomatically যৌক্তিক কাস্ট 1
, অথবা true
করার জন্য) 10
এর
81
এন্ট্রি x
, প্রতিস্থাপন ছাড়া এলোমেলোভাবে চয়ন করা হয়েছে। এই এন্ট্রিগুলিতে বোমা রয়েছে।
conv2(+x,ones(3),'s')
এর সংক্ষেপণ conv2(+x,ones(3),'same')
। এটা তোলে ম্যাট্রিক্স convolves x
(যা কাস্ট করা প্রয়োজন double
ব্যবহার করে +
একটি 3 × 3 আশপাশ ধারণকারী সহ) 1
। এটি প্রতিটি এন্ট্রি সংলগ্ন কত বোমা গণনা করা হয়। বোমা ধারণকারী এন্ট্রিগুলির জন্য এটিতে বোমা অন্তর্ভুক্ত রয়েছে তবে সেটির মান পরে ওভাররাইট করা হবে।
y=[...+48 ''];
সংখ্যা থেকে ASCII কোডে রূপান্তর করতে, মানটিতে 48 যোগ করে। খালি ম্যাট্রিক্সের সাথে লড়াই করা এই ASCII কোডগুলিকে অক্ষরে অক্ষরে ফেলে।
y(x)=42;
'*'
বোমাগুলির অবস্থানগুলিতে 42 (এএসসিআইআই কোড ) বরাদ্দ করে । এই অবস্থানগুলি দ্বারা প্রদত্ত x
, যা এখানে লজিকাল সূচক হিসাবে ব্যবহৃত হয়।
disp(y)
ফলাফল প্রদর্শন করে।