সিজেম, 33 32 20 19 17 বাইট
@ Sp3000 এবং @ মার্টিনব্যাটনার এর ব্যাপক সমর্থন সহ সংশোধিত সংস্করণ:
qN/_z]{:e`z,3<}/|
এটি অনলাইনে চেষ্টা করুন
অবদানসমূহ
- @ Sp3000 আমার মূল অ্যালগরিদমে একটি সমালোচনামূলক সরলীকরণের পরামর্শ দিয়েছে।
- @ মার্টিনব্যাটনার তার উন্মাদ গল্ফিং দক্ষতাকে সংশোধিত পদ্ধতির প্রয়োগ করেছেন, যা প্রায় অবশ্যই সরলকরণ বিবেচনার পরেও আমার তুলনায় কম সংক্ষিপ্ত কোডের ফলাফল হয়েছিল।
অ্যালগরিদম এবং প্রুফ
নীচে অনুভূমিকভাবে পৃথকভাবে ধাঁধা ধাঁধা জন্য মানদণ্ড ব্যাখ্যা। উল্লম্ব কেসটি সারিগুলির পরিবর্তে কলামগুলি দেখে বা অক্ষর ম্যাট্রিক্স ট্রান্সপোজ করে এবং আবার সারিগুলিকে দেখে নির্ধারণ করা যেতে পারে।
একই অক্ষরের সর্বাধিক ক্রমের জন্য আমি "প্রসারিত" শব্দটি ব্যবহার করব। উদাহরণস্বরূপ, নিম্নলিখিত সারিতে যথাক্রমে 1, 2 এবং 3 টি প্রসারিত রয়েছে:
AAAAAAAA
BBBAAAAA
AABBBAAA
আমি সারি / ধাঁধাতে "ইন্টারলকড" শব্দটিও ব্যবহার করব যা বিচ্ছিন্ন হতে পারে না।
মূল পর্যবেক্ষণটি হ'ল ধাঁধাটি বিচ্ছিন্ন হয়ে যেতে পারে এবং যদি সমস্ত সারিতে সর্বাধিক 2 টি প্রসার থাকে । বা বিপরীত হয়, এটি যদি কেবল 2 টিরও বেশি প্রসারযুক্ত কোনও সারি থাকে তবেই এটি সংযুক্ত থাকে ।
নিম্নলিখিতগুলি কোনও কঠোর গাণিতিক প্রমাণ হিসাবে যোগ্যতা অর্জন করতে পারে না তবে আমি বিশ্বাস করি যে এটি কেন নিশ্চিত হতে পারে তা একটি দৃinc়প্রত্যয়ী ব্যাখ্যা দেয়।
ধাঁধাটি যদি ২ টিরও বেশি প্রসারিতের সারি থাকে তবে ধাঁধাটি আন্তঃসংযোগযুক্ত তা দেখতে সহজ। 3 টি প্রসারিত সারিটির দিকে তাকানো:
BBBAAB
এটি স্পষ্ট যে এটি ধাঁধাটি বিচ্ছিন্ন হওয়া থেকে বাধা দেয় কারণ A
প্রসারিতগুলির মধ্যে প্রসারিতটি লক থাকে B
। এর অর্থ হ'ল সারিটি আন্তঃসংযোগযুক্ত, যার ফলে পুরো ধাঁধাটি আন্তঃসংযোগযুক্ত হয়ে যায়।
প্রমাণের বিপরীত দিকটি তেমন স্পষ্ট নয়। আমাদের দেখাতে হবে যে কোনও ইন্টারলকড ধাঁধা নেই যেখানে সমস্ত সারিতে কেবল 1 বা 2 টি প্রসারিত রয়েছে। কয়েকটি পর্যবেক্ষণ দিয়ে শুরু:
- কেবল 1 টি প্রসারযুক্ত সারিগুলি ধাঁধাটি আন্তঃসংযোগযুক্ত হওয়ার ক্ষেত্রে অবদান রাখে না, কারণ তারা কোনও সংঘর্ষ ছাড়াই উভয় দিকেই স্লাইড করতে পারে।
- যদি 2 টি প্রসারযুক্ত সমস্ত সারিগুলির একই ক্রম থাকে
A
এবং B
ধাঁধাটি স্পষ্টভাবে আন্তঃসংযোগযুক্ত হয় না। এই ক্ষেত্রে, সমস্ত A
কোষ সমস্ত কক্ষের বাকী থাকে B
বা তদ্বিপরীত হয় এবং দুটি টুকরো আলাদা করে স্লাইড করার সময় কোনও সংঘর্ষ হয় না।
একমাত্র কৌশলযুক্ত ধাঁধাটি এমন ধাঁধা হবে যেখানে আমাদের বিভিন্ন ক্রমের ২ টি প্রসার সহ সারি রয়েছে। আমি প্রদর্শন করতে যাচ্ছি যে নির্দিষ্ট ধরণের নির্দিষ্টকরণের অধীনে এই ধরণের ধাঁধা বিদ্যমান না । এটি দেখানোর জন্য, আসুন একটি আংশিক ধাঁধা দেখুন যা এই কনফিগারেশনটিতে রয়েছে, যেখানে .
ওয়াইল্ডকার্ড রয়েছে:
.......
AAABBBB
.......
BBAAAAA
.......
এখন, স্পেসিফিকেশনটি বলে যে উভয় A
এবং B
ঘর উভয়ই সমস্ত বৈধ ধাঁধাতে সহজভাবে সংযুক্ত। A
উপরের আংশিক ধাঁধাতে ঘরগুলি সংযুক্ত করতে আমাদের কাছে দুটি বিকল্প রয়েছে:
আমরা এর প্রসারিতগুলির একটিতে প্রায় লুপ করি B
, উদাহরণস্বরূপ:
..AAAAAA
AAABBBBA
.......A
BBAAAAAA
........
এটি করার জন্য, আমরা অনিবার্যভাবে সারিগুলির একটিতে 3 টি প্রসারিত করতে প্রসারিত করি, সুতরাং এটি আমাদের কোনও বৈধ ধাঁধা দেয় না যেখানে সমস্ত সারিতে সর্বাধিক 2 প্রসারিত থাকে।
আমরা তাদের সরাসরি পথে সংযুক্ত করি:
.......
AAABBBB
..A....
BBAAAAA
.......
A
কোষ এখন কেবল সংযুক্ত করা হয়, এবং এখনও আছে অধিক 2 ছড়িয়ে সঙ্গে কোন সারি। তবে B
কোষগুলিকেও সহজভাবে সংযুক্ত করা দরকার। সরাসরি পথ এখন সংযুক্ত দ্বারা অবরুদ্ধ করা আছে A
কোষ, এবং সংযুক্ত হওয়ার জন্য একমাত্র উপায় B
কোষের ছড়িয়ে এক প্রায় লুপ হয় A
কোষ। এটি কেস 1-এ ফিরে যায়, যেখানে আমরা 3 টি প্রসারিত সারি তৈরি না করে এটি করতে পারি না।
প্রসারগুলি গণনা করতে, বাস্তবায়নে সিজেএম আরএলই অপারেটর ব্যবহার করা হয়।
কোডের ব্যাখ্যা
qN/ Get input and split at newlines.
_z Make a transposed copy.
] Wrap the original and transposed puzzle in an array so that we can
loop over the two.
{ Start of loop over original and transposed puzzle.
:e` Apply RLE to all rows.
z, Transpose the matrix with the RLE rows, and take the element count of the
result. Or in other words, take the column count. This will be the length
of the longest row after RLE.
3< Check the length for less than 3.
}/ End of loop over original and transposed puzzle.
| Or the results of the two.