15 ধাঁধা সমাধানযোগ্য কিনা তা পরীক্ষা করে দেখুন


9

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

আপনার টাস্কটি এমন একটি প্রোগ্রাম তৈরি করা যা আপনার পছন্দের বিন্যাসে পূর্ণসংখ্যার একটি তালিকা গ্রহণ করে (0 থেকে 15 পর্যন্ত প্রতিটি সংখ্যার হুবুহু এক উদাহরণ থাকে, 0 ফাঁকা জায়গা থাকে) এতে টাইলগুলির বিন্যাসের অবস্থার প্রতিনিধিত্ব করে একটি 4x4 গ্রিড, এবং গ্রিড দ্রবণযোগ্য কিনা তা নির্ধারণ করে একটি একক বুলিয়ান মান আউটপুট দেয়।

যে কোনও ভাষায় এটি করার জন্য সংক্ষিপ্ততম কোডটি।


ভাল প্রশ্ন :)
ক্রંચার

আমি এই প্রশ্নটি জিজ্ঞাসা করতে যাচ্ছিলাম, তবে একটি স্বেচ্ছাসেবী পাশের দৈর্ঘ্য সহ; কিন্তু এটি চ্যালেঞ্জের খুব সামান্য যোগ করে।
জোনাথন অ্যালান

উত্তর:


0

জেলি , 9 বাইট

Œc>/€;TSḂ

একটি মোনাডিক লিঙ্কটি সারি-প্রধান ক্রমে পাঠ্য সংখ্যার একটি তালিকা গ্রহণ করে বাম-ডান এবং ডান-বামের মধ্যে পরিবর্তিত হয় যা 0ফলনযোগ্য হয় এবং 1যদি না হয় তবে (কোডটির ¬ডানদিকে এটিকে উল্টানো )।

এটি অনলাইন চেষ্টা করুন! (এই উদাহরণটি এমন একটি বোর্ড যেখানে 12 টি কেবল জায়গায় স্লাইড করা প্রয়োজন)

কিভাবে?

অনুরূপ জন ডিভোরাক এর উত্তর আমরা দলগুলো নিরূপণ এবং একটি ব্যাল মত প্রক্রিয়া সহজ পরীক্ষক-বোর্ড সমতা ইনপুট অর্ডার কাজে লাগাতে, যদিও পরিবর্তে সমতা বজায় সমতা পরীক্ষণ আমরা নন-জিরো সূচক এবং পরীক্ষা দিয়ে আউট-অফ-অর্ডার গণনা সমষ্টি কিনা অস্বাভাবিক:

Œc>/€;TSḂ - Link: list of integers
Œc        - unordered pairs
    €     - for each:
   /      -   reduce with:
  >       -     greater than?
      T   - truthy indices (i.e. [1..16] without 1-indexed index of 0)
     ;    - concatenate
       S  - sum
        Ḃ - is odd?

4

জে, 28 টি অক্ষর

((C.!.2=_1^i.&0)&.".&.stdin''

সারণি জুড়ে একক পথ ধরে পর্যায়ক্রমে বাম থেকে ডানে এবং ডানে বামে সারিগুলি সহ ইনপুট ক্রমটি সারি-প্রধান। ধরে নিই শূন্যটি উপরের বাম কোণার সাথে সম্পর্কিত।

উইন্ডোজ ব্যবহার:

<nul set /p="0 1 2 3 7 6 5 4 8 9 10 11 15 14 13 12" | jconsole c:\...\15.jhs

ব্যাখ্যা:

  • <nul set /p=ইনপুটটিতে একটি নতুন লাইন প্রতিরোধ করতে ব্যবহৃত হয়, যা echoউত্পাদন ".করে না যা পছন্দ করে না। অবশ্যই, ইউনিক্স সমর্থন করে echo /n
  • v&.".&.stdin''"ভি আন্ডার পার্স আন্ডার স্টিডিন" এর অর্থ "ইনপুট, তারপরে ইনপুটটি বিশ্লেষণ করুন, তারপরে ভি করুন, তারপরে পার্স (= ফর্ম্যাট) পূর্বাবস্থায় ফিরে আনুন (= আউটপুট)"। 1!:1]3এটি একটি চরিত্রের চেয়ে ছোট, তবে এটির সংজ্ঞা উল্টো নেই।
  • C.!.2এর অর্থ "অনুক্রমের সমান্তরতা"। এটি হয় 1(এমনকি সমতা) বা _1(বিজোড় সমতা) ফেরত দেয় । এটাই,_1^inversions
  • _1^i.&0 এর অর্থ "-1 এর সূচকের বিদ্যুতে" -1।
  • সুতরাং, এর C.!.2=_1^i.&0অর্থ "কি অনুক্রমের সমতাটি গর্তের অবস্থানের সমতা সমান করে?"

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

সঠিকতার প্রমাণ:

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


আপনি যখন "শূন্যটিও বিজোড় একটি সমপরিমাণ পজিশনের মধ্যে পরিবর্তিত হন" বলে থাকেন: এটি কি +1, -1, +4 বা -4 দ্বারা পরিবর্তন হয় না? আমি মনে করি যে পরীক্ষিত প্যাটার্নটি আপনার প্রয়োজনীয় রঙ দেয় তবে এটি আরও সঠিকভাবে বর্ণনা করা যেতে পারে।
পিটার টেলর

@ পিটারটেলর আপনি ঠিক বলেছেন; দুঃখিত। আমার সম্পাদনাটি কি বৈধ ফিক্স হিসাবে গণনা করে?
জন ডিভোরাক

আমি মনে করি আপনার সম্পাদনাটি একটি সম্পূর্ণ পৃথক সমস্যা সম্বোধন করে। আমি যেটুকু উদ্ধৃত করেছি তা শেষ অনুচ্ছেদে রয়েছে।
পিটার টেলর

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