সংযোগ 4 এর বিজয়ী নির্ধারণ করুন


19

আপনাকে আংশিকভাবে পূর্ণ সংযোগ 4 গ্রিড (7x6) দেওয়া হবে।

O X             
O X          
X O X O     O
X O X O   X X
O X X X O O X
O O O X X O X

(ইনপুটটি 1 ডি বা 2 ডি অ্যারে এবং অক্ষর বা সংখ্যা ইত্যাদি হিসাবে দেওয়া যেতে পারে)

ধরুন

  • এক্স গেমটি শুরু করেছিল।
  • এখনও কেউ জিতেনি।
  • খেলোয়াড়রা এখন অবধি ভাল খেলেনি, তবে এখন থেকে তারা উভয়ই কৌশল অবলম্বন করবে।
  • ইনপুট গ্রিড ত্রুটিযুক্ত নয়।

আপনাকে অবশ্যই একটি একক মান আউটপুট করতে হবে যা নির্দেশ করে কোন প্লেয়ার জিতবে (বা একটি ড্র)

কোড গল্ফ চ্যালেঞ্জ; তাই সংক্ষিপ্ততম কোড জয়ী। আপনার প্রোগ্রামটির যথাযথ পরিমাণে আউটপুটকে প্রকৃতভাবে গণনা করতে হবে না, তবে আপনি প্রমাণ করতে সক্ষম হবেন যে একটি সীমাবদ্ধ সময়ের মধ্যে আউটপুট সঠিকভাবে পাওয়া যাবে।



@ মার্টিনবাটনার এর অর্থ কি আমি নীচু হয়ে যাব, না আমার প্রশ্নটি এখানে রেখে দেওয়া কি ঠিক?
ভুতগুলি_ইন_কোড

4
এর অর্থ হ'ল প্রশ্নগুলি সম্পর্কিত, এর চেয়ে বেশি কিছুই নয়, কিছু কম নয়। লিঙ্কটি পোস্ট করার উদ্দেশ্য হ'ল চ্যালেঞ্জগুলি একে অপরের "লিঙ্কযুক্ত" সাইডবারে উপস্থিত হওয়া, যাতে লোকেরা সম্পর্কিত চ্যালেঞ্জগুলি আরও সহজে খুঁজে পেতে পারে। আমি যদি আপনার প্রশ্নটিকে একটি সদৃশ মনে করি তবে আমি তাই বলতাম (বা কেবল এটি বন্ধ করে দিয়েছি), তাই চিন্তা করবেন না। :)
মার্টিন ইন্ডার

2
"সর্বোত্তম খেলা" ভাল সংজ্ঞা দেওয়া হয়েছে? যদি তা হয় তবে আপনি কি সেরা খেলার জন্য অ্যালগরিদম বর্ণনা করে একটি লিঙ্ক সরবরাহ করতে পারেন?
রেইনবোল্ট

2
@ রেনবোল্ট এটি সমাধান হয়ে গেছে এবং নিখুঁত অ্যালগরিদমও রয়েছে। আরও জন্য উইকিপিডিয়া পড়ুন ।
ভুতগুলি_ইন_কোড

উত্তর:


16

পার্ল, 119 118 117 বাইট

জন্য +4 অন্তর্ভুক্ত -0p

STDIN এ ফাঁকা স্থান দিয়ে ঘোরানো বোর্ড দিন (মাধ্যাকর্ষণটি ডানদিকে পাথর টানছে)

connect4.pl
  OXXX
   XOO
    OX
  OOXX
  XXXO
XXOOXO
OOXXOO
^D

connect4.pl:

#!/usr/bin/perl -p0
y/XO/OX/if$^S|y/X//>y/O//;$_=$$_||=/Z@{[map"|O".".{$_}O"x3,0,5..7]}/sx||s% (?! )%$_="$`X$'";do$0%eg?/1/?3:1+/2/:2

3খেলোয়াড়ের স্থানান্তরিত করতে প্লেয়ার জিতলে মুদ্রণ করে , 1খেলোয়াড় সরানো হলে হারায় এবং 2ড্রয়ের জন্য।

পুরানো পার্লগুলিতে আপনি একটি ^Sবাইট পেতে আক্ষরিক ব্যবহার করতে পারেন । আপনি যদি চরম অদক্ষতা মনে করেন না তবে আপনি $$_||=(স্থানান্তর টেবিল) ছেড়ে দিতে পারেন এবং আরও 6 বাইট অর্জন করতে পারেন । যদি আপনি এটি ছেড়ে দেন তবে $_=এটি আপনাকে ফলাফলের পরিবর্তে কোথায় খেলতে হবে তা দেখিয়ে দেবে (খেললে খেলতে হবে 1এবং একটি থাকলে জিততে হবে, খেললে খেলতে হবে 2এবং একটি আছে বা খেললে 3হেরে যাবে)

একটি সম্পূর্ণ মিনিম্যাক্স ট্রি তৈরি করে এবং মূল্যায়ন করে। বোর্ডটি ইতিমধ্যে যথাযথভাবে ভরাট না হলে আপনি মেমরি এবং সময় ফুরিয়ে যাবেন।


2
কেন পৃথিবীতে কেউ নীচে নামল? গল্ফিংটি সত্যই আশ্চর্যজনক (আমি পার্ল সহ গল্ফ এবং এরকম সমাধান পাওয়া চরমভাবে কঠিন - আমি নিশ্চিত নই যে আমি জানি যে কোনও পার্ল গল্ফার সেই কোডটি নিয়ে আসতে পারে)। এবং কোডের প্রয়োজনীয় আচরণ রয়েছে।
দাদা

এটি আমার মস্তিষ্ককে আঘাত করে। +1 টি!
লেভেলোহিউম্যান

@ দাদা আপনি কীভাবে জানেন যে এই উত্তরটি নিচে ভোট দেওয়া হয়েছে? আমি ভোট হিসাবে 3 টি দেখছি ...
রোজলুপি

@ রোসলুপ যখন আমি এই পোস্টটি প্রথম দেখি তখন এটিতে 1 টি ডাউনওয়েট ছিল। এছাড়াও, যখন আপনার পর্যাপ্ত প্রতিনিধি রয়েছে, আপনি দেখতে পাচ্ছেন যে কোনও পোস্টে কতগুলি আপ এবং ডাউন ভোট রয়েছে: সেক্ষেত্রে, এখন এটি 4 টি উপরে এবং 1 নিচে রয়েছে।
দাদা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.