এই চ্যালেঞ্জটি 2 ডি ম্যাজগুলিকে 1 ডি ম্যাজে রূপান্তর করা।
সংক্ষিপ্ত বিবরণ
+-+-+-+-+-+-+ +-+-+-+-+-+-+ graph {
| | | | |A| | B| A B A -- D
+ + + + +-+-+ + + + + +-+-+ \ | C -- D
| | | | | | | | \ | D -- E
+-+-+ +-+-+ + +-+-+ +-+-+ + \ | E -- F
| | |C D E F| C---D-E---F E -- G
+-+-+-+ +-+ + +-+-+-+ +-+ + | | B -- F
| | | | G | | .---G | F -- J
+ +-+-+-+ + + + +-+-+-+ + + .' / | G -- H
| | | | |H|I |J| H I-' J G -- I
+-+-+-+-+-+-+ +-+-+-+-+-+-+ (ascii) } // (graphviz dot)
Figure 1 Figure 2 Figure 3
এই চ্যালেঞ্জের উদ্দেশ্যে, একটি traditionalতিহ্যবাহী 2 ডি গোলকধাঁধাটি একটি আয়তক্ষেত্রাকার গোলকধাঁধা যা জাল পয়েন্টগুলি থেকে তৈরি হয়েছিল যেখানে নীচের সমস্তগুলি ধারণ করে:
- এটি বন্ধ (বাইরের রিমটি দেয়াল দ্বারা সংযুক্ত)।
- সমস্ত জাল পয়েন্টগুলি দেয়ালের সাথে সংযুক্ত
- এটি সংযুক্ত (প্রতিটি এবং দুটি জায়গার জন্য এক্স এবং ওয়াইয়ের মধ্যে একটি পথ রয়েছে)
- এটি অ্যাসাইক্লিক (ব্যাকট্র্যাকিং ছাড়াই কোনও এক্স স্পেস এক্স থেকে এক্স পর্যন্ত কোনও পাথ নেই)
চিত্র 1 একটি traditionalতিহ্যবাহী 2D গোলকধাঁধা দেখায়। এই ম্যাজগুলির আগ্রহের তিনটি ক্ষেত্র রয়েছে:
- ডেড শেষ - এমন এক স্থান থেকে যেখানে কেবলমাত্র একটি উপলভ্য পথ রয়েছে
- করিডোর - এমন দুটি জায়গা যেখানে থেকে দুটি উপলভ্য পথ রয়েছে
- সিদ্ধান্ত বিন্দু - যে স্থানগুলি থেকে তিন বা চারটি উপলভ্য পথ রয়েছে
এই জাতীয় প্রতিটি ধাঁধাটির জন্য, একটি গ্রাফ তৈরি করতে পারে যেখানে মৃত প্রান্ত এবং সিদ্ধান্তের পয়েন্টগুলি নোড হয় এবং একটি করিডোরের সাথে একটি পথ দ্বারা সংযুক্ত প্রতিটি দুটি নোডের মধ্যে একটি প্রান্ত থাকে। চিত্র 2 এ জাতীয় নোডযুক্ত লেবেলযুক্ত একই চিত্র এবং চিত্র 3 ধাঁধা এর গ্রাফ (এএসসিআইআই এবং গ্রাফভিজ ডট স্বীকৃতিতে) দেখায়।
1 ডি ম্যাজস
1 ডি ম্যাজগুলি ওয়ার্প পয়েন্টগুলি অন্তর্ভুক্ত করে, যা জোড়া আসে এবং একটি চিঠি ব্যবহার করে সনাক্ত করা হয় (উভয় ক্ষেত্রেই)। চিত্র 4 একটি উদাহরণ 1D গোলকধাঁধা দেখায়। এটি অন্যথায় 1 উচ্চতার 2 ডি গোলকধাঁধায় সমান, চিত্র 5-তে দেখানো হয়েছে, বিশেষত চিত্র 5 নোটটিতে চিহ্নিত করুন ল্যাটিস পয়েন্ট অবস্থানগুলি চিহ্নিত করে +
, যা বিকল্প বাম থেকে ডানদিকে চিহ্নিত হয়েছে ; 1 ডি গোলকধাঁধায়, বাম দিকের প্রাচীর দিয়ে শুরু হওয়া প্রতিটি অন্যান্য চরিত্রটিও একটি জাল পয়েন্ট।
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| D| D E|G E F| F | G | | D| D E|G E F| F | G |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 4 Figure 5
এই গোলকধাঁটি নেভিগেট করার নিয়ম নীচে রয়েছে। প্রতিটি পদক্ষেপ ফরোয়ার্ড ( >
) বা পিছনে ( <
) হিসাবে উপস্থাপিত হতে পারে । পূর্বনির্ধারিতভাবে এখানে এবং পশ্চাদপসরণ আমাদের স্বজ্ঞাত স্থানিক সচেতনতার একই অর্থ; এগিয়ে তত্ক্ষণাত ডানদিকে অবস্থিতিতে চলে যায় এবং তত্ক্ষণাত বাম দিকে পিছনে চলে যায়।
ওয়ার্প পয়েন্টগুলি এমন জায়গাগুলির প্রতিনিধিত্ব করে যা প্রতিবেশীদের সাথে সংশ্লেষকে অমূল্যভাবে পরিবর্তিত করে। যদি আপনি প্রতিবেশী থেকে কোনও ওয়ার্প পয়েন্টে আসেন তবে দুটি রেপ পয়েন্টের অবস্থানটি বদলে যাবে; যদি আপনি কোনও ওয়ার্প পয়েন্ট থেকে প্রতিবেশীর কাছে আসেন তবে সেগুলি অদলবদল করা হয় না। উদাহরণস্বরূপ, চিত্র 6 এ, 1 থেকে পিছনে সরে যাওয়া আপনাকে 2 এ নিয়ে আসে (যেহেতু 1 জি এর প্রতিবেশী, এবং আমরা প্রতিবেশী থেকে এগিয়ে চলেছি, পয়েন্ট 2 এবং @ অদলবদল হয়েছে)। 2 (ওয়ার্প পয়েন্ট জি) থেকে এগিয়ে যাওয়া আপনাকে 3 এ নিয়ে আসে (এখানে, আমরা একটি ওয়ার্প পয়েন্ট থেকে শুরু করছি, সুতরাং কোনও অদলবদল নেই)। একইভাবে, 3 থেকে পিছনে সরে যাওয়া আপনাকে @ এ নিয়ে আসে।
54 2367 89^ @1
| D| D E|G E F| F | G |
Y X
Figure 6
চিত্র 6 এছাড়াও চলাচলের ক্রম ব্যবহার করে এক্স থেকে Y পর্যন্ত নেভিগেশন একটি উদাহরণ দেখায় <<>><>>>>>
। এই পদক্ষেপগুলি আপনাকে 123456789^
ক্রম অনুসারে লেবেলযুক্ত পয়েন্টগুলিতে নিয়ে আসে । পরবর্তী বিভাগে কোড স্নিপেট ব্যবহার করে এটি নির্দ্বিধায় অনুভব করুন।
2D কে 1 ডি তে রূপান্তর করা হচ্ছে
একটি 1 ডি গোলকধাঁধা দেওয়া, যে কোনও গ্রাফ তৈরি করতে পারে যেখানে প্রতিটি নোড হয় মৃত প্রান্ত বা একটি ওয়ার্প পয়েন্ট জোড়া এবং একটি করিডোর বরাবর সংযুক্ত যে কোনও দুটি নোডের মধ্যে প্রান্তগুলি বিদ্যমান। এই গ্রাফটি আমাদের 1 ডি এবং 2 ডি ম্যাজগুলির তুলনা করতে দেয়।
উদাহরণস্বরূপ, চিত্র 4-এ 1 ডি গোলকধাঁধাটি চিত্র 1-এ একই ধাঁধা why গ্রাফ তৈরি করতে এই লেবেলগুলি ব্যবহার করে চিত্র 7 এর গ্রাফটি আবার চিত্র 3। চিত্র 8 এই গ্রাফটি তৈরির একটি ব্রেকআউট দেখায়।
| D| D E|G E F| F | G |
A C B J H I
Figure 7
| D| D E|G E F| F | G |
+ + + + + + + + + + + + + + + <- lattice points
|A |C | |B J|H I| <- dead ends
|A D|C D E|G E F|B F J|H G I| <- all nodes (dead ends+warp points); i.e.:
"where each end is either a dead end
or a warp point pair"; note that each
pair of warp points is the same node.
|A-D|C-D-E|G-E-F|B-F-J|H-G-I| <- corridors; note each is a connection, since
1 2 3 4 5 6 7 8 9 "edges exist between any two nodes
connected along a corridor"
graph { graph {
A -- D // 1 <----> A -- D
C -- D // 2 <----> C -- D
D -- E // 3 <----> D -- E
G -- E // 4 <----> E -- G
E -- F // 5 <----> E -- F
B -- F // 6 <----> B -- F
F -- J // 7 <----> F -- J
H -- G // 8 <----> G -- H
G -- I // 9 <----> G -- I
} ^ }
Built from | From Figure 3
1D maze `-> isomorphic mappings
Figure 8
(নোট করুন যে প্রতিটি গ্রাফের লেবেল এবং বিন্যাস চিত্রের উদ্দেশ্যে প্রান্তিককরণের জন্য কৃত্রিমভাবে বেছে নেওয়া হয়েছিল; সাধারণত এটি বলতে গ্রাফের আইসোমরফিজম সমস্যা )।
নিম্নলিখিত স্নিপেটটি 1D গোলকধাঁটির মেকানিক্স এবং 1D গোলকধাঁধা, সমতুল্য গ্রাফ এবং 2 ডি গোলকধাঁধার মধ্যে সংযোগটি কল্পনা করতে সহায়তা করে।
আপনি যেমন এই স্নিপেটে 1 ডি গোলকধাঁধা নেভিগেট হিসাবে, আপনি স্পর্শ সর্বশেষ দুটি নোড হাইলাইট করা হয়। সমতুল্য গ্রাফ এবং 2 ডি গোলকধাঁধায় একই নোড একইভাবে হাইলাইট করা হয়।
সাধারণভাবে, যে কোনও traditionalতিহ্যবাহী 2 ডি গোলকধাঁধাটির জন্য এই ধরণের সমতুল্য 1 ডি গোলকধাঁটি তৈরি করা যেতে পারে। কিছুটা জটিল উদাহরণ চিত্র 9:
+-+-+-+-+-+-+ +-+-+-+-+-+-+ graph {
| | | | | |A| | |B| A B A -- D
+ + + + + + + + + + + + + + \ / C -- D
| | | | | | | | | | \ / D -- E
+-+-+ + +-+-+ +-+-+ + +-+-+ \ / B -- E
| | |C D E | C---D-E E -- F
+-+-+-+ +-+ + +-+-+-+ +-+ + |\ E -- I
| | | | F | | .---F \ F -- G
+ +-+-+-+ + + + +-+-+-+ + + .' / \ G -- H
| | | | |G|H |I| G H-' I H -- I
+-+-+-+-+-+-+ +-+-+-+-+-+-+ (ascii) } // (graphviz dot)
Figure 9 Figure 10 Figure 11
| D| D E |F E | F | | D| D E |F E | F |
A C I B G H
Figure 12 Figure 13
এই গোলকধাঁটির চারটি পথ সহ একটি নোড রয়েছে (চিত্র 10-এ)। চিত্র 11 এর গ্রাফটি দেখায়। চিত্র 12 হ'ল সমান 1 ডি গোলকধাঁধা; চিত্র 13 এর সাথে চিত্র 11 এর সাথে তুলনা করতে মৃত প্রান্তগুলির লেবেলগুলির সাথে একই ধাঁধাটি দেখায়।
চ্যালেঞ্জ
ইনপুট হিসাবে একটি 2 ডি ধাঁধাঁ দেওয়া দেওয়া, একটি ফাংশন বা প্রোগ্রাম লিখুন যা 2 ডি গোলকধাঁধাটি ওয়ার্প পয়েন্টগুলির সাথে 1 ডি গোলকধাঁধায় রূপান্তর করে। ওয়ার্প পয়েন্টগুলি প্রতিটি ক্ষেত্রে 52 টি অক্ষরের ব্যবহার করতে পারে।
ইনপুট গ্যারান্টি দেয় (যদি এর কোনওটি যদি ইনপুটটিতে পূরণ না হয় তবে আপনাকে এটি মোকাবেলা করতে হবে না):
- ইনপুট ধাঁধাটি সংযুক্ত রয়েছে (এটি আপনি সর্বদা যে কোনও জায়গা থেকে অন্য কোনও জায়গায় যেতে পারেন)।
- ইনপুট ধাঁধা বন্ধ আছে।
- ইনপুট ধাঁধাটি আয়তক্ষেত্রাকার।
- সমস্ত জাল পয়েন্ট ব্যবহার
+
। - একই সারি ব্যবহারে জাল পয়েন্টের মধ্যে সমস্ত দেয়াল
|
- একই কলামে জাল পয়েন্টের মধ্যে সমস্ত দেয়াল
-
। - সমস্ত স্পেসগুলি একটি পাথের অংশ (এবং গোলকধাঁধার সমস্ত অংশ)।
- পাথগুলি সমস্ত স্থান (এটি সর্বদা traditionalতিহ্যবাহী, অ যুদ্ধবিহীন হবে)
- পথগুলি এক স্থান প্রশস্ত।
- গোলকধাঁধা একটি জাল পয়েন্ট সংযোগ করে নির্মিত হয়।
- গোলকধাঁধার গ্রাফে মোট 52 টিরও বেশি নোড (অর্থাত্ মৃত প্রান্ত এবং সিদ্ধান্ত পয়েন্ট) নেই।
আউটপুট ফরমেট:
- আপনার আউটপুটটি 1 ডি ধাঁধা দেখানো একক লাইন হওয়া উচিত ।
- আপনার আউটপুটে কোনও শীর্ষস্থানীয় / চলমান সাদা স্থান থাকতে হবে; ব্যাতিক্রমী একটি নতুন লাইন ঠিক আছে।
- প্রথম অক্ষর এবং তারপরে অন্যান্য প্রতিটি চরিত্র হ'ল জাল পয়েন্ট।
- সমস্ত দেয়াল জাল পয়েন্টে থাকা উচিত; এবং তাদের মধ্যে সমস্ত ওয়ার্প পয়েন্ট।
- আপনার 1 ডি গোলকধাঁধার গ্রাফটি 2 ডি গোলকোষের গ্রাফের সমতুল্য হওয়া উচিত।
- আপনার 1 ডি ম্যাজগুলি অবশ্যই কমপ্যাক্ট হওয়া উচিত; সমস্ত নন-জাল পয়েন্টগুলি অবশ্যই মৃত প্রান্তে (অর্থাত্ দেওয়াল সংলগ্ন) বা ওয়ার্প পয়েন্ট হতে হবে।
- শুধুমাত্র অক্ষর আপনার আউটপুটে ওয়ার্প পয়েন্ট হতে হবে। প্রতিটি ওয়ার্প পয়েন্ট লাইনে ঠিক দু'বার ঘটে।
উদাহরণ:
| D| D E|G E F| F | G | <- (1,2) The single line output
+ + + + + + + + + + + + + + + <- lattice point spacing... (3)
(4,6) lattice points are all walls or spaces
(5) See Figure 8
(7) D, E, F, G appear twice; no other labels
এটি কোড-গল্ফ। বিজয়ী হ'ল সর্বনিম্ন বাইট সহ সঠিক নন-লুফোল জমা।
পরীক্ষামূলক
এই চ্যালেঞ্জের জন্য কোনও পরীক্ষার কেস নেই, যেহেতু কোনও অনিয়ন্ত্রিত গোলকধাঁধার জন্য প্রচুর সংখ্যক সঠিক আউটপুট রয়েছে।
আমি অবশ্য সি ++ এ একটি পরীক্ষক তৈরি করেছি (এই পরীক্ষক গ্রাফ ক্যানোনিকালাইজেশনের মাধ্যমে উভয় সমাধান গ্রাফ করে )।
এছাড়াও সঠিক ফর্ম্যাটিংটি চিত্রিত করতে এখানে কয়েকটি উদাহরণ দেওয়া হয়েছে:
উদাহরণ 1
+-+-+-+-+-+-+
| | | |
+ + + + +-+-+
| | | |
+-+-+ +-+-+ +
| |
+-+-+-+ +-+ +
| | |
+ +-+-+-+ + +
| | | |
+-+-+-+-+-+-+
->
| D| D E|G E F| F | G |
উদাহরণ 2
+-+-+-+-+-+-+
| | | | |
+ + + + + + +
| | | | |
+-+-+ + +-+-+
| |
+-+-+-+ +-+ +
| | |
+ +-+-+-+ + +
| | | |
+-+-+-+-+-+-+
->
| D| D E |F E | F |