হাইড্রা হত্যাকারী হয়ে উঠুন


13

আপনি এই অঞ্চলের সেরা এবং বিখ্যাত নায়ক। ইদানীং গুজব ছড়িয়ে পড়েছে যে নিকটবর্তী জলাশয়ে একটি হাইড্রা ঝুলছে। আপনি যে সাহসী এবং পুণ্যবান নায়ক হিসাবে নিজেকে চিত্রিত করেছেন তা আপনি আজই পরে এসেছিলেন।

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

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

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

কার্য

আপনাকে ইনপুট হিসাবে দেওয়া হবে

  • হাইড্রা দিয়ে শুরু হওয়া মাথাগুলির সংখ্যা
  • হাইড্রা প্রতিটি পালা পুনরায় সরিয়ে নিয়ে যায় এমন সংখ্যাগুলির মাথা
  • প্রতিটি ব্যবহারের জন্য উপলব্ধ তরোয়ালগুলির একটি তালিকা (প্রত্যেকেই দ্বিখণ্ডক হয় বা প্রতিটি পালা নির্দিষ্ট সংখ্যক মাথা কেটে দেয়)

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

এটি একটি প্রশ্ন তাই উত্তরগুলি বাইটে স্কোর করা হবে, কম বাইট আরও ভাল।

পরীক্ষার কেস

অনুরোধের ভিত্তিতে আরও উপলব্ধ

5 heads, 9 each turn,  [-1,-2,-5] -> [-5]
12 heads, 1 each turn, [/2,-1] -> No solution
8 heads, 2 each turn,  [-9, -1] -> [-1,-9]
3 heads, 23 each turn, [/2,-1,-26] -> [-1,-1,-26,-26,-26,-26,-26,-26,-26,-26]
16 heads, 1 each turn, [/2, 4, 2] -> [/2,-4,/2,-4]

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


1
প্রতিটি পালা জন্মে মাথা সংখ্যা ধ্রুব, হ্যাঁ? মাথার সংখ্যা কেটে দেওয়া নির্ভর করে না?
স্মার্টস

1
@ কে স্মার্টস এটি সঠিক।
অ্যাডহক গার্ফ হান্টার

যদি দ্বিখণ্ডক কেবল তখনই কাজ করে যদি মাথা এমনকি থাকে তবে তার অর্থ কি তারা বেজোড় থাকলে কিছুই করে না? @ পাইরেট বেতে সমাধানটি তখন [/ 2, -26] হবে
dj0wns

1
@ dj0wns বিসেক্টরটি বিজোড় হওয়ার পরে ব্যবহার করা যাবে না
অ্যাডহক গার্ফ হান্টার

@ এন্নস যা সঠিক বলে মনে হচ্ছে, ঘটনাক্রমে [/2, -2, /2, -2, -4]এটিও কার্যকর হয়।
অ্যাডহক গার্ফ হান্টার

উত্তর:


3

জাভাস্ক্রিপ্ট, 230 223 বাইট

f=(h,t,s)=>{m=h-Math.min(...s),d=1,q=[],s.map(a=>q.push([],h));while(q.length){p=q.shift(),h=q.shift(),s.map(w=>!(a=w?h+w:h/2)?d=w:!(a%1)&a>0&a<m&!f[a+=t]?f[q.push([...p,w],a),a]=1:0);d<1?(q=[],p).push(d):0}return d<1?p:[]}

_=_=>f=(h,t,s)=>{m=h-Math.min(...s),d=1,q=[],s.map(a=>q.push([],h));while(q.length){p=q.shift(),h=q.shift(),s.map(w=>!(a=w?h+w:h/2)?d=w:!(a%1)&a>0&a<m&!f[a+=t]?f[q.push([...p,w],a),a]=1:0);d<1?(q=[],p).push(d):0}return d<1?p:[]}

console.log(`[${_()(5, 9,  [-1,-2,-5])}]`);
console.log(`[${_()(12, 1, [0,-1])}]`);
console.log(`[${_()(8, 2,  [-9,-1])}]`);
console.log(`[${_()(1, 2,  [0,-4])}]`);
console.log(`[${_()(3, 2,  [0,-4,-1])}]`);
console.log(`[${_()(3, 4,  [0,-4,-1])}]`);
console.log(`[${_()(3, 23, [0,-1,-26])}]`);
console.log(`[${_()(16, 1, [0,-4,-2])}]`);

অবরুদ্ধ সংস্করণ:

f=(heads,turn,swords)=>{
  max=heads-Math.min(...swords);

  found=1;
  flags=[];
  queue=[];
  swords.map(a=>queue.push([],heads));

  while(queue.length){
    path=queue.shift();
    heads=queue.shift();

    swords.map(sword=>{
      after=sword?heads+sword:heads/2;

      if(!after){
        found=sword;
      }else if(!(after%1)&after>0&after<max&!flags[after+=turn]){
        flags[after]=1;
        queue.push([...path,sword],after);
      }
    });

    if(found<1){
      path.push(found);
      break;
    }
  }

  return found<1?path:[];
}

দ্বিখণ্ডক হিসাবে প্রতিনিধিত্ব করা হয় 0

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