চেকারস: কিং মি?


14

চ্যালেঞ্জ:

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

বিধি :

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

ইনপুট:

বোর্ডের স্পেসগুলি নিম্নলিখিত অক্ষর হিসাবে সংজ্ঞায়িত করে একটি 8x8 চেকারবোর্ড (যতক্ষণ না তারা ধারাবাহিকভাবে বিকল্প ব্যবহার করতে পারেন):

। - খালি

আর - লাল টুকরা

বি - কালো টুকরা

আউটপুট:

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

ইনপুট 1:

. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
R . . . . . . .

আউটপুট 1:

7

ইনপুট 2:

. . . . . . . .
. . . . . . . .
. . . . . B . .
. . . . . . . .
. . . B . . . .
. . . . . . . .
. B . . . . . .
R . . . . . . .

আউটপুট 2:

2

ইনপুট 3:

. B . B . B . B
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
R . . . . . . .

আউটপুট 3:

-1

ইনপুট 4:

. . . . . . . R
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
R . . . . . . .

আউটপুট 4:

0

ইনপুট 5:

. . . . . . . .
. . . . . . . .
. . . . . . . .
. B . . B . . .
B . . . . B . .
. B . B . . . .
. . B . . B . .
. . . R R . . .

আউটপুট 5:

4

ইনপুট 6:

. . . . . . . .
. . . . . . . .
. B . . . . . .
. . B . . . . .
. B . B . . . .
. . . . R . . .
. . . B . . . .
. . . . R . . .

আউটপুট 6:

2

ইনপুট 7:

. . . . . . . .
. . . . . . . .
. . B . . . . .
. . . . . . . .
. . B . . . . .
. B . B . B . .
. . . . B . . .
. . . . . R . R

আউটপুট 7:

4

স্কোরিং:

এটি , তাই বাইট জেতে সংক্ষিপ্ততম কোড।


1
আপনি দ্বিগুণ / ট্রিপল জাম্প করতে পারেন যেহেতু দ্বিতীয় পরীক্ষার কেসটি 2 হওয়া উচিত নয়?
জেমস

একটি ইনপুট হিসাবে পূর্ণসংখ্যার অ্যারের রাজ্য অ্যারে ঠিক আছে?
জোনাথন অ্যালান

1
আমি আরও একটি টেস্টকেস যুক্ত করেছি যা কঠিন প্রমাণ করা উচিত। এটি সর্বোত্তম সম্ভাব্য সমাধানটি পাওয়ার জন্য একাধিক লাফ, একাধিক টুকরো এবং পিছনে পিছনে লাফিয়ে জড়িত।
orlp

1
@ অরল্প এইচএম, আমি বলতে যাচ্ছিলাম যে লাল টুকরো কোনওটিকেই পিছনের দিকে যেতে দেওয়া হবে না কারণ তাদের কেউই রাজা নয় (সুতরাং চ্যালেঞ্জের মূল বিষয়), তবে দেখা যাচ্ছে যে কিছু লোক নিয়ম করে খেলেন যেখানে পিছন দিকে ক্যাপচার করার অনুমতি অ-মঞ্জুরিপ্রাপ্ত is প্রথম ক্যাপচার এগিয়ে থাকলে আত্মীয়ের টুকরো। আমি নিয়মগুলিতে এটি যুক্ত করব যেহেতু আমি আগে এটি সম্পর্কে অবগত ছিলাম না।
ইয়োডল

1
ooooooooh, আপনাকে কেবল একটি লাল টুকরা বেছে নিতে হবে না, তারা দল বেঁধতে পারে! আমি এটি পেয়েছি
গ্রেগ মার্টিন

উত্তর:


4

জাভাস্ক্রিপ্ট (ES6), 354 322 বাইট

এর সাথে ইনপুট হিসাবে একটি অ্যারে নেয়:

  • 0 = খালি স্কোয়ার
  • 1 = লাল টুকরা
  • 2 = কালো টুকরা

পদক্ষেপের সর্বোত্তম সংখ্যা, বা যদি কোনও সমাধান না হয় তবে 99 প্রদান করে।

এটি খুব দ্রুত তবে আরও গল্ফ করা যেতে পারে।

F=(b,n=0,C=-1,i)=>b.map((v,f,X,T,x=f&7,y=f>>3)=>v-1||(y&&n<m?[-9,-7,7,9].map(d=>(N=c=X=-1,r=(d&7)<2,T=(t=f+d)>=0&t<64&&(x||r)&&(x<7||!r)?(!b[t]&d<0)?t:b[t]&1?N:b[t]&2&&(d<0&y>1|d>0&C==f)?(X=t,x>1||r)&&(x<6|!r)&&!b[t+=d]?c=t:N:N:N)+1&&(b[f]=b[X]=0,b[T]=1,F(b,n+!(C==f&c>N),c,1),b[f]=1,b[X]=2,b[T]=0)):m=n<m?n:m),m=i?m:99)|m

var test = [
  [ 0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    1,0,0,0,0,0,0,0
  ],
  [ 0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,2,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,2,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,2,0,0,0,0,0,0,
    1,0,0,0,0,0,0,0
  ],
  [ 0,2,0,2,0,2,0,2,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    1,0,0,0,0,0,0,0
  ],
  [ 0,0,0,0,0,0,0,1,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    1,0,0,0,0,0,0,0
  ],
  [ 0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,2,0,0,2,0,0,0,
    2,0,0,0,0,2,0,0,
    0,2,0,2,0,0,0,0,
    0,0,2,0,0,2,0,0,
    0,0,0,1,1,0,0,0
  ],
  [ 0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,2,0,0,0,0,0,0,
    0,0,2,0,0,0,0,0,
    0,2,0,2,0,0,0,0,
    0,0,0,0,1,0,0,0,
    0,0,0,2,0,0,0,0,
    0,0,0,0,1,0,0,0
  ],
  [ 0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,2,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,2,0,0,0,0,0,
    0,2,0,2,0,2,0,0,
    0,0,0,0,2,0,0,0,
    0,0,0,0,0,1,0,1
  ]
];

test.forEach((b, n) => {
  console.log("Test #" + (n + 1) + " : " + F(b));
});


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