এই চ্যালেঞ্জ ঢিলেঢালাভাবে Zachtronics খেলা দ্বারা অনুপ্রাণিত হয় Infinifactory ।
আপনাকে পরিদর্শনকারীদের একটি আয়তক্ষেত্রাকার গ্রিডের শীর্ষ-দর্শন দর্শন দেওয়া হবে, যার দ্বারা প্রতিনিধিত্ব করা হয়েছে >v<^
। কনভেয়রবিহীন কক্ষগুলি থাকতে পারে, স্পেস দ্বারা প্রতিনিধিত্ব করা হয়। এখানে একটি উদাহরণ:
> <vv <
v ^ >v v
>v^^>vv^
^>^ v
> v<v >>
>v v<^
এই সেটআপটি স্পষ্টতই অসীম সংখ্যক স্পেস দ্বারা বেষ্টিত।
তদতিরিক্ত, আপনাকে পণ্যসম্ভারের একটি আয়তক্ষেত্রাকার টুকরা দেওয়া হবে যা গ্রিডের উপরের বাম কোণে কনভেয়রগুলির উপর স্থাপন করা হয়েছে। আপনার কাজটি কার্গোটি কখনই বিশ্রামে আসে কিনা বা এটি কোনও লুপে চলা শেষ হবে কিনা তা নির্ধারণ করা।
অবশ্যই, কার্গো এক সাথে সাথে বেশ কয়েকটি পরিবাহককে coverেকে দেবে, সুতরাং প্রতিটি পদক্ষেপে কার্গোটির দিক নির্ণয় করার নিয়ম এখানে রইল:
বিপক্ষ পরিবাহকরা একে অপরকে বাতিল করে। সুতরাং যদি 3x2 কার্গো নীচের কোনও প্যাচগুলি আবরণ করে (স্পষ্টতার জন্য হাইফেন এবং পাইপগুলির সাথে বর্ণিত) তবে ফলাফলটি একই হবে:
+---+ +---+ +---+ |>>^| | ^| |v^^| |^<<| |^ | |^^v| +---+ +---+ +---+
একই জন্য এইগুলি হয়:
+---+ +---+ +---+ |v^<| | | |><>| |>>>| |>> | |>><| +---+ +---+ +---+
যেহেতু কার্গোরের নীচে একটি পরিবাহকের সঠিক অবস্থান অপ্রাসঙ্গিক, তাই আপনি কোন জোড় বাতিল করেন তা বিবেচ্য নয়।
অন্যান্য নিয়মের আগে এই বাতিলকরণ প্রয়োগ করা হয়। অতএব, অন্যান্য নিয়মের জন্য কেবলমাত্র দুটি দিক থেকে কেবল পরিবহন থাকবে।
- কার্গো যদি কোনও পরিবাহককে মোটেই coverেকে না রাখে (হয় তবে সমস্ত পরিবাহক বাতিল করে দেয় কারণ এটি কেবলমাত্র স্পেসগুলি কভার করে বা এটি পুরোপুরি গ্রিডের বাইরে চলে গেছে), এটি বিশ্রামে আসে।
কার্গো অন্য দিকের চেয়ে এক দিকের বেশি বাহককে coversেকে রাখে, কার্গো সেই দিকে চলে moves উদাহরণস্বরূপ, যদি একটি 3x2 কার্গো নিম্নলিখিত প্যাচটি coveredেকে রাখে
>> ^>^
এটি ডানদিকে চলে যাবে, কারণ আরও
>
কিছু রয়েছে^
। অন্যদিকে, এটি coveredেকে রাখলে>>^ ^
এই নিয়ম প্রযোজ্য হবে না, এর মধ্যে একটি টাই আছে, কারণ
>
এবং^
।এটি কেবলমাত্র সেই ক্ষেত্রে ছেড়ে দেয় যেখানে সংলগ্ন দিকগুলির মধ্যে একটি টাই থাকে (বিপরীত দিকের মধ্যে একটি টাই বাতিল হয়ে যেত)। এই ক্ষেত্রে, পণ্যসম্ভার অক্ষ এটি আগে থেকেই চলছে বরাবর চলন্ত রাখে। যেমন একটি রাইট চলন্ত বা বাম-চলন্ত 3x2 পণ্যসম্ভার এখন প্যাচ আচ্ছাদন করা হয়
>>^ ^
এটি ডান দিকে সরানো হবে। যদি এই প্যাচটি উপরে বা নীচের দিকে চলে আসে তবে এটি এখন পরিবর্তে উপরে উঠে যাবে। যদি সিমুলেশনের প্রথম ধাপে এই ধরণের দ্বন্দ্ব দেখা দেয় তবে ধরে নিন যে কার্গো ডানদিকে চলে আসছিল।
বিস্তারিত উদাহরণ
শীর্ষে পরিবাহক গ্রিড এবং একটি 3x2 কার্গো বিবেচনা করুন। নিম্নলিখিতটি প্রক্রিয়াটির ধাপে ধাপে দৃশ্যমান is প্রতিটি পদক্ষেপে গ্রিড সমন্বিত থাকে, যার সাথে কার্গো প্রতিনিধিত্ব করে #
, একটি ছোট বাক্স যা কার্গো দ্বারা coveredাকা কনভেয়রকে দেখায়, বাতিল হওয়ার পরে পরিবাহকগুলির সাথে অন্য একটি বাক্স এবং যে নিয়মটি নির্ধারণ করে যে কার্গোটি সরানো হয়:
###vv < > <vv < > <vv < > <vv < > <vv < > <vv <
###^ >v v ###^ >v v v ^ >v v v ^ >v v v ^ >v v v ^ >v v
>v^^>vv^ ###v^^>vv^ ###v^^>vv^ ###^^>vv^ ###^>vv^ >###>vv^
^>^ v ^>^ v ### ^>^ v ###^>^ v ###>^ v ###^ v
> v<v >> > v<v >> > v<v >> > v<v >> > v<v >> > v<v >>
>v v<^ >v v<^ >v v<^ >v v<^ >v v<^ >v v<^
+---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+
|> <| | | | v | | v | | >| | >| | >v| | >v| |>v^| |> ^| |v^^| | ^^|
| v | | v | | >| | >| | | | | | | | | | ^| | | | ^>| | >|
+---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+
Rule 3 Rule 4 Rule 3 Rule 4 Rule 4 Rule 3
================================================================================
> <vv < > <### < > <vv <
v ###v v v ###v v v ###v v
>###>vv^ >v^^>vv^ >###>vv^
^>^ v ^>^ v ^>^ v
> v<v >> > v<v >> > v<v >>
>v v<^ >v v<^ >v v<^
+---+ +---+ +---+ +---+ +---+ +---+
|^ >| | >| |vv | | v | |^ >| | >|
|v^^| | ^^| |^ >| | >| |v^^| | ^^|
+---+ +---+ +---+ +---+ +---+ +---+
Rule 3 Rule 4 Rule 3
এই মুহুর্তে, কার্গো শেষ দুটি ফ্রেমের মধ্যে একটি লুপে প্রবেশ করে।
পরিবর্তে একটি 2x3 কার্গো বিবেচনা করুন:
##<vv < >##vv < > <vv < > <vv < > <vv < > <vv <
## ^ >v v ##^ >v v ##^ >v v v ^ >v v v ^ >v v v ^ >v v
##>v^^>vv^ ##v^^>vv^ ##v^^>vv^ ##v^^>vv^ ##^^>vv^ >v^^>vv^
^>^ v ^>^ v ## ^>^ v ## ^>^ v ##^>^ v ##^>^ v
> v<v >> > v<v >> > v<v >> >##v<v >> > ##<v >> > ##<v >>
>v v<^ >v v<^ >v v<^ >v v<^ >v v<^ ## v<^
+--+ +--+ +--+ +--+ +--+ +--+ +--+ +--+ +--+ +--+ +--+ +--+
|> | |> | | <| | | |v | |v | | >| | >| |>v| |>v| | | | |
| v| | v| |v | |v | | >| | >| | | | | | | | | | v| | v|
| | | | | >| | | | | | | | | | | | v| | v| |>v| |>v|
+--+ +--+ +--+ +--+ +--+ +--+ +--+ +--+ +--+ +--+ +--+ +--+
Rule 4 Rule 3 Rule 4 Rule 3 Rule 3 Rule 3
================================================================================
> <vv < > <vv < > <vv <
v ^ >v v v ^ >v v v ^ >v v
>v^^>vv^ >v^^>vv^ >v^^>vv^
^>^ v ^>^ v ^>^ v
> ##<v >> > v<v >> > v<v >>
## v<^ ## v<^ >v v<^
## ## ##
## ##
##
+--+ +--+ +--+ +--+ +--+ +--+
| v| | v| |>v| |>v| | | | |
|>v| |>v| | | | | | | | |
| | | | | | | | | | | |
+--+ +--+ +--+ +--+ +--+ +--+
Rule 3 Rule 4 Rule 2
শেষ পদক্ষেপে, বিধি 2 প্রয়োগ হয় কারণ কার্গো গ্রিডটি সরিয়ে নিয়েছে তাই এটি বিশ্রামে আসে এবং কোনও লুপ থাকবে না।
বিধি এবং অনুমান
আপনার ইনপুটটি কার্গোটির প্রস্থ এবং উচ্চতা সহ উপরে বর্ণিত হিসাবে পরিবাহক গ্রিড হবে। আপনি যে কোনও সুবিধাজনক ক্রম এবং ফর্ম্যাটে এই তিনটি পরামিতি নিতে পারেন। গ্রিডের জন্য, এর অর্থ এই যে আপনি পৃথক গ্রিড কোষগুলি অক্ষর দ্বারা উপস্থাপিত হওয়া অবধি যতক্ষণ না পৃথক গ্রিড কোষ অক্ষর দ্বারা প্রতিনিধিত্ব করা হয় ততক্ষণ আপনি নিউলাইন বা অন্যান্য অক্ষর দ্বারা পৃথক করা লাইনের সাথে একটি স্ট্রিং বা স্ট্রিংগুলির একটি অ্যারে বা অক্ষরের অ্যারের একটি অ্যারে পড়তে পারেন >v<^
and স্পেস।
যদি কমপক্ষে দুটি ফ্রেমের লুপ বা কার্গো বিশ্রামে আসে তবে একটি মিথ্যা মানের সেটআপের ফলাফলের ফলে আপনাকে সত্যবাদী মানের আউটপুট করা উচিত ।
আপনি ধরে নিতে পারেন যে গ্রিডটি ফাঁকা স্থানগুলির সাথে একটি আয়তক্ষেত্রে প্যাড করা হবে এবং শুরুতে কার্গো গ্রিডের সাথে ফিট হবে।
আপনি STDIN (অথবা নিকটতম বিকল্প), কমান্ড-লাইন আর্গুমেন্ট বা ফাংশন আর্গুমেন্টের মাধ্যমে ইনপুট নিয়ে কোনও প্রোগ্রাম বা ফাংশন লিখতে এবং STDOUT (বা নিকটতম বিকল্প), ফাংশন রিটার্ন মান বা ফাংশন (আউট) প্যারামিটারের মাধ্যমে ফলাফল আউটপুট করতে পারেন।
এটি কোড গল্ফ, তাই সংক্ষিপ্ত উত্তরটি (বাইটে) জেতে।
পরীক্ষার মামলা
পরীক্ষার কেসগুলি গ্রিড দ্বারা শ্রেণিবদ্ধ করা হয়।
Grid (2x2):
>v
^<
Width Height Loop?
1 1 True
1 2 True
2 1 True
2 2 False
Grid (3x3):
> v
^ <
Width Height Loop?
1 1 False
1 2 False
1 3 False
2 1 False
2 2 True
2 3 True
3 1 False
3 2 True
3 3 False
Grid (4x3):
>^>v
v^v
^ <<
Width Height Loop?
2 2 False
Grid (6x5):
>v>v>v
^v^v^v
^v^v^v
^>^>^v
^<<<<<
Width Height Loop?
1 1 True
1 2 False
2 1 True
2 2 True
2 4 True
2 5 False
3 1 False
3 2 True
3 3 True
3 5 True
6 2 False
6 3 True
6 5 False
Grid (10x6):
> <vv <
v ^ >v v
>v^^>vv^
^>^ v
> v<v >>
>v v<^
Width Height Loop?
1 1 False
2 3 False
2 6 False
3 2 True
5 4 False
6 1 True
10 6 False
পরীক্ষার কেসগুলির অতিরিক্ত সেট হিসাবে বিবেচনা করুন যে গ্রিডটি কেবলমাত্র ফাঁকা স্থানের অন্তর্গত রয়েছে এমন কোনও ইনপুট অবশ্যই মিথ্যা ফলাফল অর্জন করবে।
আমি সমস্ত পরীক্ষার কেস ম্যানুয়ালি পরীক্ষা করে দেখেছি, তাই যদি আপনি মনে করেন যে আমি কোনও ভুল করেছি।
[^^/v<]
হয়ে যায় [[0,1] [0,1];[0,-1] [-1,0]]
? বা আপনি কী বোঝাতে চাইছেন যে এটি আমাদের উপর নির্ভর করে এটি এসটিডিন, একটি স্ট্রিং ইনপুট, একটি চর অ্যারে ইনপুট ইত্যাদি? তবে এটি এখনও ^, v,> এবং <আকারে থাকা উচিত?
><^v
বা একটি স্থান দ্বারা প্রতিনিধিত্ব করা উচিত । আমি এটা স্পষ্ট করব।