কানেক্ট 4 খেলুন!


20

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

বোর্ডটি একটি 6x7 অ্যারে, যেখানে প্রতিটি ঘর খালি ('') থাকতে পারে, এতে আপনার টুকরা ('এক্স') বা আপনার প্রতিপক্ষের টুকরা ('ও') থাকতে পারে। একটি উদাহরণ বোর্ড:

O      
XX    X
XOX  OO
XOO OXO
OXXOXXO
XOXOXOX

তির্যক জয়ের জন্য আপনি কলাম 3 এ (কলামগুলি 0-6, বাম দিক থেকে সংখ্যাযুক্ত) খেলতে চাইবেন। সুতরাং আপনি আউটপুট:

3

আপনার কোড অবশ্যই একটি কলাম নম্বর আউটপুট, এবং এটি নিম্নলিখিত মানদণ্ড পূরণ করতে হবে:

  1. আপনি ইতিমধ্যে এটিতে 6 টি টুকরোযুক্ত কোনও কলামে খেলতে পারবেন না।
  2. যদি কমপক্ষে একটি বিজয়ী পদক্ষেপ থাকে তবে আপনার অবশ্যই একটি খেলতে হবে।
  3. আপনি যদি তার প্রতিপক্ষকে তার পরবর্তী পদক্ষেপে জিততে বাধা দিতে পারেন তবে আপনাকে অবশ্যই তা করতে হবে।

নোট করুন যে সর্বোত্তম খেলার প্রয়োজন হয় না, কেবলমাত্র আপনি তাৎক্ষণিকভাবে জয়লাভ করেন বা আপনার প্রতিপক্ষের তাত্ক্ষণিক জয়কে আটকাবেন। যদি আপনার প্রতিপক্ষের জয়ের একাধিক উপায় থাকে তবে আপনাকে তাদের কোনওটি ব্লক করার দরকার নেই।

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

সংক্ষিপ্ততম কোড জিতেছে।

উদাহরণ 1

      X
      O
      X
      O
 OOO  X
 XXX  O

জয়ের জন্য আপনাকে অবশ্যই কলাম 0 বা 4 খেলতে হবে।

উদাহরণ 2

      X
X     X
O     O
XOX  XO
XXO XOX
XXO XXO

আপনার প্রতিপক্ষের তাত্ক্ষণিক জয়কে ব্লক করতে আপনার অবশ্যই কলাম 3 খেলতে হবে।

উদাহরণ 3

X      
XO     
OX    O
XO   XX
XXO OOO
OOO XXO

আপনি আপনার প্রতিপক্ষকে বিজয়ী হতে বা আটকাতে পারবেন না, সুতরাং আপনি যে কোনও কলাম 1-6 খেলতে পারেন (0 পূর্ণ রয়েছে)।

উদাহরণ 4

X      
O      
X      
OOO    
XOX    
OXOX   

আপনি 3 কলামে খেলতে পারবেন না, কারণ এটি আপনার প্রতিপক্ষকে তত্ক্ষণাত জিততে দেয়। আপনি 1-2 বা 4-6 কলামে খেলতে পারেন।

উত্তর:


9

সি, 234 286 256 অক্ষর

প্রতিটি পদক্ষেপের চেষ্টা অনুসরণ করে প্রতিপক্ষের বিজয়ী পদক্ষেপগুলি পরীক্ষা করে সঠিকভাবে সমস্যার সমাধানের জন্য স্থির।

এই কোডটি ইনপুট ফাইলের ফর্ম্যাটটির প্রতি অত্যন্ত সংবেদনশীল - প্রতিটি লাইনে অবশ্যই 7 টি অক্ষর + নতুনলাইন কনটেন করতে হবে।
বোর্ডটি 7x6 এর পরিবর্তে 8x8 ম্যাট্রিক্স হিসাবে ধরা হয়। অষ্টম কলামে নিউলাইনগুলি রয়েছে এবং 2 টি অতিরিক্ত সারিটিতে শূন্য রয়েছে, সুতরাং তারা সমাধানে হস্তক্ষেপ করবেন না। এগুলি আসলে সহায়তা করে - ডানদিকের ডানদিকের কলাম থেকে ডানে সরে যাওয়ার সময় আপনি নিউলাইন কলামে এসে আঘাত করেন যা একটি সীমানা পরীক্ষা হিসাবে কাজ করে।

wজয়ের বা অবরুদ্ধ করার সুযোগের জন্য একটি অবস্থান পরীক্ষা করে। qচারপাশে পরীক্ষা করার জন্য সেল হওয়া উচিত। এটি 4 টি দিক দিয়ে লুপ করতে পুনর্বার ব্যবহার করে (9,8,7 দিয়ে শুরু হয়, তারপরে বেশ কয়েকবার 1)। পিছনে এবং উভয় দিকের দিক
Cথেকে শুরু করে অভিন্ন চরিত্রগুলির ক্রমের জন্য চেক করে। এটি উভয় সিকোয়েন্সের যোগফল দেয় (প্রারম্ভিক অবস্থান গণনা করছে না), সুতরাং যদি এটি 3 ফেরত দেয় তবে 4 এর সারি রয়েছে।qd

char B[99],q;
C(i,d){
    return B[d*i+++q]-B[q]?d>0?C(1,-d):0:1+C(i,d);
}
w(x){
    return x&&C(1,x>6?x:1)>2|w(x-1);
}
t(l,c,r,v){
    for(;c--;)B[q=c]&32&B[c+8]-32?r=w(9,B[c]=l)?v=c:v||r*t(79,l,0,1)?r:c,B[c]=32:0;
    return r;
}
main(){
    putchar(48+t(88,16+read(0,B+16,48),0,0)%8);
}

5

পাইথন 2.x - 594 591 576 557 523 459 458 433 বাইট

এটি আমি এ পর্যন্ত সেরা অর্জন করেছি। আমার ধারণা, সিটিকে হারাতে খুব কঠিন I

r=range
f=[]
exec'f+=list(raw_input());'*6
def n(p):
 o,b,a,k=[],1,'O',lambda q:any([o[i:i+4]==list(q)*4for o in(f[x-x%7:],f[x%7::7])for i in r(3)]+[all(q==f[7*(y+u*i)+z+i]for i in r(4))for u,z,v,c in((1,0,3,4),(-1,3,6,3))for y in r(z,v)for z in r(c)])
 for x in r(42):
    if x>34<a>f[x]or x<35and f[x+7]>'0'>f[x]:f[x]=p;z=k(p)*b;o=z*[x]+o+[x]*(a==p or n(a)[1]);b-=z;f[x]=' '
 return o[0]%7,b
a,b,c,d=n('X')+n('O')
print(a,(c,a)[d])[b]

যদি ইফ-লাইন (লাইন 7) এর একটি ট্যাব অন্তর্ভুক্ত থাকে। এসই ট্যাব পছন্দ করে না।


2
এগুলি পরিমার্জন করতে আমি অনেক বেশি সময় ব্যয় করি। এছাড়াও, 458 বাইট সংস্করণ # 4 উদাহরণস্বরূপ সঠিকভাবে কাজ করে নি। 25 বাইট দূরে নিন এবং এটি হয়। ম্যাজিক।
qu
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.