মাইনসুইপার সলভার


34

আমরা ইতোমধ্যে মাইনসুইপার ক্ষেত্রগুলি তৈরি করেছি , তবে পিসিজি ফুটে উঠার আগে কাউকে সত্যিই সেই উত্পন্ন খনিগুলিকে ঝাঁপিয়ে দিতে হবে!

আপনার কাজটি হ'ল একটি মাইনসুইপার সলভার লিখুন যা "ওয়ার্কিং মাইনসুইপার" এর গ্রহণযোগ্য সমাধানের সামান্য পরিবর্তিত সংস্করণের সাথে সামঞ্জস্যপূর্ণ (বৃহত্তর ক্ষেত্রগুলিতে অনুমতি দেওয়ার জন্য ক্রিয়াগুলি স্পেস দ্বারা পৃথক করা হয়)।

ইনপুট: একটি মাইনসুইপার ক্ষেত্র, স্থানগুলি স্পেস দ্বারা পৃথক করা। প্রথম লাইনটি খনিগুলির মোট সংখ্যা বোঝায়।

  • x: অস্পষ্ট
  • !: পতাকা
  • সংখ্যা: ক্ষেত্রের চারপাশে খনিগুলির সংখ্যা

উদাহরণ:

10
0 0 1 x x x x x
0 0 2 x x x x x
0 0 2 ! x x x x
0 0 1 2 x x x x
0 0 0 1 x x x x
1 1 0 2 x x x x
x 1 0 2 x x x x
1 1 0 1 x x x x

আউটপুট: বিন্যাসে আপনার পরবর্তী পদক্ষেপ action row column(শূন্য থেকে শুরু)

বৈধ ক্রিয়া:

  • 0: ইহা খোল
  • 1: একটি পতাকা রাখুন

উদাহরণ:

0 1 2

নিয়মাবলী:

  • আপনি একটি সম্পূর্ণ প্রোগ্রাম লিখুন যা ইনপুট হিসাবে একক ক্ষেত্র গ্রহণ করে (এসটিডিইএন বা কমান্ড লাইন আর্গুমেন্ট) এবং একক ক্রিয়া আউটপুট করে (এসটিডিআউট)। অতএব, আপনি বাদে রাজ্যগুলি সংরক্ষণ করতে পারবেন না !
  • বেঁচে থাকার জন্য আপনার পছন্দটি অবশ্যই সর্বোত্তম প্রতিক্রিয়া অনুসরণ করবে। (যেমন যদি 100% নিরাপদ পদক্ষেপ থাকে তবে তা ধরুন)
  • এটি ; সংক্ষিপ্ততম সমাধান (ইউটিএফ -8 বাইটে) জয়লাভ করে

পরীক্ষা:

এই পরীক্ষাগুলি সাধারণ পরিষ্কার পরিস্থিতির জন্য পরীক্ষার উদ্দেশ্যে কাজ করে; আপনার প্রোগ্রাম প্রতিটি পরীক্ষার ক্ষেত্রে কাজ করতে হবে।

ইন:

4
x x x x
1 2 x x
0 1 2 x
0 0 1 x

আউট (এর মধ্যে যে কোনও একটি):

1 1 2
0 0 2
0 1 3

ইন:

2
x x x
1 ! x
1 1 x

আউট (এর মধ্যে যে কোনও একটি):

0 0 0
0 0 1
0 1 2
0 2 2
1 0 2

ইন:

10
x x x x x x x x
1 3 3 x x x x x
0 1 ! 3 3 4 x x
0 2 3 ! 2 3 x x
0 1 ! 2 2 ! x x

আউট (এর মধ্যে যে কোনও একটি):

1 1 5
1 0 2

ইন:

2
x x x
2 3 1
! 1 0

আউট (এর মধ্যে যে কোনও একটি):

0 0 1
1 0 0
1 0 2

নিস! 1) সম্ভবত পরীক্ষার জন্য কারও কাছে পরীক্ষার জোতা লিখতে হবে: একটি ক্ষেত্র দেওয়া, এটি নেওয়া প্রতিটি পদক্ষেপ এবং প্রোগ্রামটি জিতেছে কিনা তা মুদ্রণ করে। প্রোগ্রামটি কোনও অস্পষ্টতা ছাড়াই মানচিত্রে জিততে হবে। 2) আমি ভাবছি কেউ পতাকা কর্মটি ব্যবহার করবে কিনা। দেখে মনে হচ্ছে এটি কখনই প্রয়োজন হবে না।
ক্লাদিউ

প্রথম পরীক্ষার জন্য। আপনি কেন 0 0 2বা সরানোর জন্য সক্ষম 0 1 3? এর মধ্যে যে কোনও একটি কীভাবে নিরাপদ বলে বিবেচিত হবে তা আমি দেখতে পাচ্ছি না। (আমার অবশ্যই
মাইনসুইপারে

1
সম্ভবত Fবা :) এর Pচেয়ে আরও ভাল পতাকা দেখাচ্ছে!
ভিজিওন

1
@ জোনাথনভানমাত্রে মাঠটি ফাঁকা, তবে এটি নিশ্চিত যে আপনার প্রথম খোলার কোনও খনি নয়, কারণ খনিগুলি প্রথম ক্লিকের পরে স্থাপন করা হয়েছে :)
টিমবোল্লা

2
মজাদার ঘটনা: কেবলমাত্র সীমাবদ্ধ বোর্ডগুলি পাওয়া যায় (কমপক্ষে এক্সপি সংস্করণে, যা প্রতিযোগিতামূলক দৃশ্যে স্বীকৃতিযুক্ত)। আপনি কোনও খনি ক্লিক করছেন না তা নিশ্চিত করার জন্য আপনি প্রথম স্পটে ক্লিক করার সাথে সাথে বোর্ডটি স্থানান্তরিত হবে তবে আপনি কোন বোর্ডটি ব্যবহার করবেন তা ইতিমধ্যে সিদ্ধান্ত নেওয়া হয়েছে।
আন্ডারগ্রাউন্ডোমোনাইল

উত্তর:


17

ম্যাথামেটিকাল

এখনও গল্ফ হয় নি। আই / ও ফর্ম্যাটগুলিতে আরও কিছু কাজের প্রয়োজন।

t = {{0, 0, 1, x, x, x, x, x}, {0, 0, 2, x, x, x, x, x}, {0, 0, 2, F, x, x, x, x}, 
     {0, 0, 1, 2, x, x, x, x}, {0, 0, 0, 1, x, x, x, x}, {1, 1, 0, 2, x, x, x, x}, 
     {x, 1, 0, 2, x, x, x, x}, {1, 1, 0, 1, x, x, x, x}};
(*Sqrt[2] is  1.5*)
c = Sequence; p = Position;
nums = p[t, _?NumberQ];
fx = Nearest[p[t, x]];
flagMinus[flag_] := If[Norm[# - flag] < 1.5, t[[c @@ #]]--] & /@ nums
flagMinus /@ p[t, F];
g@x_List := Tr[q[#] & /@ x]
eqs = MapIndexed[t[[c @@ (nums[[#2]][[1]])]] == g[#1] &, (fx[#, {8, 1.5}] & /@nums)];
vars = Union@Cases[eqs, _q, 4];
s = Solve[Join[eqs, Thread[0 <= vars < 2]], vars, Integers];
res = (Transpose@s)[[All, All, 2]];
i = 1; plays = Select[{i++, #[[1]], Equal @@ #} & /@ res, #[[3]] &];
Flatten /@ ({#[[2]] /. 1 -> F, List @@ vars[[#[[1]]]] - 1} & /@ plays)

(*
{{0, 0, 3}, {F, 1, 3}, {F, 2, 4}, {0, 3, 4}, {0, 4, 4}, 
 {F, 5, 4}, {F, 6, 0}, {F, 6, 4}, {0, 7, 4}}
*)

সম্পাদনা: বোনাস ট্র্যাক

আমি একটি ইন্টারেক্টিভ খেলার মাঠ তৈরি করেছি যা প্রদত্ত কনফিগারেশনের জন্য সমস্ত সম্ভাব্য সমাধান গণনা করে বোমা সম্ভাবনার গণনা করে:

গণিত গ্রাফিক্স

ম্যাথমেটিকাকে ইনস্টল না করে এটি পরীক্ষার জন্য নির্দেশাবলী:

  1. Http://pastebin.com/asLC47BW ডাউনলোড করুন এবং এটি * .সিডিএফ হিসাবে সংরক্ষণ করুন
  2. ওল্ফ্রাম গবেষণা থেকে বিনামূল্যে সিডিএফ পরিবেশটি ডাউনলোড করুন https://www.wolfram.com/cdf-player/ (একটি ছোট ফাইল নয়)

স্লাইডার বোর্ডের মাত্রা পরিবর্তন করে। এটি কেবল একটি স্কেচি প্রোগ্রাম, পুরোপুরি পরীক্ষিত নয়, দয়া করে কোনও বাগ রিপোর্ট করুন। আমি "বোর্ডে উপলব্ধ বোমাগুলির মোট সংখ্যা" বৈশিষ্ট্যটি প্রয়োগ করি নি। এটি অসীম ধরে নেওয়া হয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.