মু তোরেয়ের একটি নিখুঁত খেলা খেলুন


14

পটভূমি

মু তোরেরে এমন একটি খেলা যা ইউরোপীয় প্রভাবের আগে নিউজিল্যান্ডের মাওরি জনগণের দ্বারা খেলে যাওয়া মাত্র দুটির মধ্যে একটি। এটি এটিকে একটি অত্যন্ত অনন্য খেলা করে তোলে কারণ এটির একটি "উদ্দেশ্য বিজয়ী মানদণ্ড" এবং খেলার নিয়ম রয়েছে যা অন্যান্য বেশিরভাগ গেমের সাথে অস্তিত্বের সাথে পৃথক।

গেমপ্লের:

বোর্ডটি অষ্টভুজ। প্রতিটি সংলগ্ন ভার্টেক্সের মধ্যে সংযোগ রয়েছে এবং সেখানে একটি কেন্দ্র নোড রয়েছে যা সমস্ত শীর্ষে অবস্থিত। যেকোন সময়, নয়টি নোডের মধ্যে আটটি পাথর দ্বারা দখল করা। শুরুতে, চারটি সাদা পাথর এবং চারটি কালো পাথর রয়েছে যা প্রত্যেকে অষ্টভুজটির অর্ধেক অংশ নেয়, কেন্দ্রের নোডটি খালি রেখে। প্রথমে কৃষ্ণচূড়া।

প্রতিটি পালা, একজন খেলোয়াড় তার নথ থেকে খালি নোডে 16 টি প্রান্তের একটি দিয়ে তার একটি পাথর সরিয়ে নিতে পারেন। কোনও পাথর কেবলমাত্র বাইরের নোড থেকে কেন্দ্র নোডে সরানো যায় যদি পাথর প্রতিপক্ষের পাথরের পাশে থাকে।

কোনও খেলোয়াড় হেরে যায় যখন তিনি আইনী পদক্ষেপ নিতে অক্ষম হন, যা খালি নোডের সাথে কোনও পাথর সংযোগকারী কোনও প্রান্ত না থাকলে ঘটে যায়।

নিয়মের একটি চিত্র এবং ব্যাখ্যা

এখানে একটি ওয়েবসাইট যা নিয়মগুলি ব্যাখ্যা করে (একটি চিত্র সহ) এবং কিছু বিশ্লেষণ প্রস্তাব করে।

চ্যালেঞ্জ

আপনার চ্যালেঞ্জটি হ'ল সংক্ষিপ্ততম প্রোগ্রামটি লিখুন যা কোনও মানব প্রতিপক্ষের বিরুদ্ধে মি টোরেয়ের নিখুঁত খেলা খেলতে পারে। আপনার প্রোগ্রামটি গেম বোর্ডটি প্রদর্শন এবং আপডেট করতে, চালানো ও মানব প্রতিপক্ষের কাছ থেকে চালগুলি গ্রহণ করতে সক্ষম হওয়া উচিত। সবচেয়ে বড় কথা, এটি একটি নিখুঁত খেলা উচিত।

পারফেক্ট গেম?

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

বিস্তারিত

প্রতিটি পদক্ষেপের পরে (এবং গেমের শুরুতে), আপনার প্রোগ্রামটি গেম বোর্ডটি মুদ্রণ করে। তবে আপনি বোর্ডটি প্রদর্শন করতে চান, এটি অবশ্যই সমস্ত নোডগুলি দেখায় এবং সম্পূর্ণরূপে সংযুক্ত থাকে (সমস্ত 16 সংযোগ লাইন কোনও ক্রসড লাইনগুলি দিয়ে আঁকতে হবে)। শুরুতে বোর্ডের সঠিক শুরু করার অবস্থান থাকা উচিত। এটি সম্পাদনের একটি উপায় গেম বোর্ডকে বর্গাকার করে তোলা।

w-w-w
|\|/|
b-o-w
|/|\|
b-b-b

দুটি রঙ কালো এবং সাদা, বা গা dark় / হালকা। বোর্ডকে অবশ্যই দেখাতে হবে যে কোন নোডগুলি কোন প্লেয়ারের টুকরা দ্বারা দখল করা আছে যেমন একটি "বি" বা "ডাব্লু" দিয়ে চিহ্নিত করা হয় এবং কোন নোডটি খালি রয়েছে। অংশগ্রহণকারীদের সরল পাঠ্যের পরিবর্তে গেম বোর্ডকে আরও গ্রাফিক্যাল করতে উত্সাহিত করা হয়েছে (তবে প্রয়োজনীয় নয়)।

আপনার গেম বোর্ডে একটি নম্বর ব্যবস্থা থাকা উচিত যা প্রতিটি নোডকে একটি অনন্য নম্বর দেয়। আপনি যেভাবে বোর্ড পছন্দ করতে পারেন তা পছন্দ করতে পারেন, তবে এটি আপনার উত্তর বা প্রোগ্রামের মাধ্যমে ব্যাখ্যা করা উচিত। স্কয়ার বোর্ডটি নিম্নরূপে নাম্বার করা যায়:

1-2-3
|\|/|
4-5-6
|/|\|
7-8-9

মানুষ প্রথম স্থানান্তরিত হয়। তার ইনপুটটি একক সংখ্যা হবে। সরানো পাথর বর্তমানে নোডের সংখ্যা হবে। যদি আমি নোড 4 থেকে একটি পাথর একটি খালি নোড 5 এ স্থানান্তর করতে চাই, আমি টাইপ করব 4। 5 কেবলমাত্র খালি নোড হওয়ায় 5 টি বোঝানো হয়েছে।

ধরে নিন যে মানব সর্বদা আইনী পদক্ষেপ নেবে।

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

আপনার প্রোগ্রামটি একবারে জিতে গেলে এটি শেষ করা উচিত।

মন্তব্য

স্ট্যান্ডার্ড কোড গল্ফ নিয়মগুলি প্রয়োগ হয়, বাহ্যিক ফাইলগুলি অ্যাক্সেস না করে ইত্যাদি ইত্যাদি Also এছাড়াও, আমি আপনার প্রোগ্রামটির প্রতিটি পদক্ষেপের জন্য 15 সেকেন্ডের (একটি যুক্তিসঙ্গত মেশিনে) নমনীয় সময়সীমা আরোপ করতে যাচ্ছি। যেমনটি বলা হয়েছে, এই গেমটির অসীম লুপগুলি গঠনের সম্ভাবনা রয়েছে এবং আমি কোনও অনন্ত লুপের মধ্যে প্রবেশের গভীরতা প্রথম অনুসন্ধান করতে চাই না।


2
দুর্দান্ত চ্যালেঞ্জ। কেবলমাত্র "যদি মানব কোনও অবৈধ পদক্ষেপ প্রবেশ করায় তবে আপনার প্রোগ্রামটির অপেক্ষা করা উচিত এবং তাকে অন্য পদক্ষেপে ইনপুট দেওয়ার অনুমতি দেওয়া উচিত।" আমার কাছে কিছুটা আন-গল্ফ-ইশ বলে মনে হচ্ছে: আমরা কী অবৈধ ইনপুটগুলির ক্ষেত্রে আচরণটি অপরিজ্ঞাত করে রাখতে পারি না?
কাউন্টার ক্লকওয়াস চালু করা বন্ধ করে দিয়েছে

1
আমি শেষ মুহুর্তে প্রয়োজনীয়তাটি ছুঁড়ে ফেলেছি, এবং আমি অনুমান করি যে এটি যদি আমরা এটিকে অপসারণ করতে পারি তবে ঠিক হবে। এটি কেবলমাত্র মানুষের পক্ষে আরও কঠিন করে তোলে, যিনি ইতিমধ্যে জিতে না ডেকে আনা হয়েছে। :)
ফিনোটপিআই

1
এটা না যে কঠিন সবসময় একটি আইনি পদক্ষেপ প্রবেশ করতে ... যাইহোক, মোটামুটি বিস্তারিত বিশ্লেষণ পর আমার মনে হয় এটা এগিয়ে চেয়ে বেশি 1.5 প্যাচসমূহ অনুসন্ধান করতে অপ্রয়োজনীয় নয়। এই পদ্ধতির সংক্ষিপ্ততম কিনা তা অন্য প্রশ্ন।
পিটার টেলর

3
লিঙ্কযুক্ত ওয়েবসাইটটি আর উপলভ্য নয়, এটি সংরক্ষণাগারিত সংস্করণের লিঙ্কে পরিবর্তন করা ভাল।
ট্যালি

উত্তর:


6

রুবি, 390 অক্ষর

o=->s,c{f=s=~/o/;[*0..8].select{|t|s[t]==c&&(t<1||(t+6)%8+1==f||t%8+1==f||f<1&&(s[(t+6)%8+1]!=c||s[t%8+1]!=c))}.map{|t|k=s*1;k[f]=c;k[t]=?o;k}}
v=->s,c,h{f=o[s,c];f==[]?0:h<1?1:2-f.map{|t|v[t,c>?b??b:?w,h-1]}.min}
q=->g{puts"1-2-3\n|\\|/|\n8-0-4\n|/|\\|\n7-6-5\n".tr"0-8",g;$>.flush}
q[g="obbbbwwww"]
(g.tr!?o,?b;g[gets.to_i]=?o;q[g];q[g=o[g,?w].sort_by{|q|v[q,?w,5]}[-1]])while v[g,?b,5]>0

রুবিতে একটি বাস্তবায়ন যা সরাসরি গেম ট্রিকে গণনা করে (যা বেশ কিছু কোড নেয়) এবং এইভাবে সর্বদা অনুকূলভাবে খেলবে। বোর্ডের অবস্থানগুলি নিম্নোক্ত চিত্রে প্রদর্শিত হিসাবে বাইরের দিকে ছড়িয়ে পড়ে:

1 - 2 - 3
| \ | / |
8 - 0 - 4
| / | \ |
7 - 6 - 5

5

বাশ এবং বন্ধুরা ( 463 447 অক্ষর)

t(){ tr 0-8a-i $b$b
}
p(){ t<<E
0-1-2
|\|/|
3-4-5
|/|\|
6-7-8

E
}
g(){ b=`tr $x$e $e$x<<<012345678|t`
p
e=$x
}
b=bbbbowwww
e=4
m=0
p
while [ $m != 5 ]&&read x;do
g
m=0
for y in {0..8};do
s=0
S=05011234
grep -E "w.*($y$e|$e$y)"<<<${b:$y:1}30125876340142548746>/dev/null&&for p in wow.\*/ww wow.\*/w bbo.\*/b obb.\*/b www wbw .
do
((s++))
tr $y$e $e$y<<<3012587630/4e|t|grep $p>/dev/null&&break
done
s=${S:$s:1}
[ $s -gt $m ]&&m=$s x=$y
done
g
done

মানুষের যেমন নাটক b , কম্পিউটার হিসাবেw । বোর্ডের অবস্থান শীর্ষে এখানে ডক হিসাবে গণ্য করা হয়। দেখা যাচ্ছে যে একটি নিখুঁত গেম খেলার জন্য উপাচারগুলি আশ্চর্যজনকভাবে সহজ।

অন্যদিকে, আকর্ষণীয় পথটি হারিয়ে ফেলা বেশ শক্ত। http://ideone.com/sXJPy এই বটের বিরুদ্ধে স্বল্পতম সম্ভব আত্মহত্যা প্রদর্শন করে। নোট করুন যে শেষে অতিরিক্ত 0 টি এটি পরীক্ষা করা যা এটি লুপটি সঠিকভাবে ভেঙে যায়।


এনবি আমি তৈরি করে একটি চরিত্র সংরক্ষণ করতে পারে read x বাধ্যতামূলক , তবে এটি পরীক্ষাকে হতাশ করে তুলবে। বোর্ডের পরে ফাঁকা রেখাটি সরিয়ে আমি একটি চরিত্রও বাঁচাতে পারি, তবে ...
পিটার টেলর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.