পটভূমি
নিজেকে একটি মাত্রিক গোলকধাঁধাতে হারিয়ে যেতে আপনি জাগ্রত! একটি রহস্যময় জিনি (বা কিছু) উপস্থিত হয় এবং ব্যাখ্যা করে যে প্রস্থানটি আপনার সামনে রয়েছে, তবে এটি আপনার এবং প্রস্থানটির মধ্যে একটি চ্যালেঞ্জের একটি সিরিজ। আপনি যখন ঘোরাফেরা করছেন আপনি বুঝতে পারবেন তথাকথিত সমস্ত চ্যালেঞ্জগুলি কেবল লক দরজা। আপনি প্রথমে টি-আকৃতির কী-গর্তযুক্ত একটি দরজা দেখতে পেয়েছেন এবং নিজের মতো কোনও চাবি নেই, নিজের পদক্ষেপগুলি আবার সরিয়ে নিয়ে, একটি T
আকৃতির একটি চাবি খুঁজছেন ।
হতাশ হয়ে আপনি মাটিতে কীগুলির বর্ণমালার স্যুপ খুঁজে পাবেন, যার মধ্যে কোনওটিই আপনি পেরিয়ে আসা দরজার সাথে মেলে না। কিছু প্রতিভা (বা বুদ্ধিমান) এর স্ট্রোক দ্বারা, আপনি স্থির করেন যে আপনি যদি সেখানে খুব t
শক্তভাবে জ্যাম করেন তবে নিম্ন- আকারের আকারের কীটি স্লটে ফিট করতে সক্ষম হতে পারে। আপনি t
হাতের লোয়ার-কেস কীটি নিয়ে দরজার কাছে যাওয়ার সাথে সাথে T
গর্তটি সবুজ জ্বলে উঠবে এবং দরজাটি আপনার সামনে দ্রবীভূত হবে।
এক নিচে, আরও অনেক ...
চ্যালেঞ্জ
এই চ্যালেঞ্জের লক্ষ্যটি গোলকধাঁধা থেকে বেরিয়ে আসতে আপনাকে কত পদক্ষেপ নেয় তা চিহ্নিত করা।
এই চ্যালেঞ্জটির ইনপুটটি গোলকধাঁধা: একটি স্ট্রিং যেখানে কেবলমাত্র অক্ষর থাকে [A-Za-z^$ ]
। শব্দকোষ:
^
- শুরুর জায়গা। ইনপুট ঠিক একটি থাকতে হবে^
।$
- প্রস্থান (স্বাধীনতা!) ইনপুট ঠিক একটি থাকতে হবে$
।[A-Z]
- মূল চিঠিগুলি দরজা বোঝায়। আপনি যদি ইতিমধ্যে প্রয়োজনীয় কীটি সংগ্রহ করেন তবে আপনি কেবলমাত্র এই দরজা দিয়ে যেতে পারবেন।[a-z]
- লোয়ার কেস চিঠিগুলি কীগুলি বোঝায়। আপনি যে কীটি রেখেছেন সেই স্থানটিতে হাঁটার মাধ্যমে এই কীগুলি সংগ্রহ করুন।
ইনপুটটিতে প্রতিটি মূল বর্ণের সর্বাধিক একটি থাকবে। এর অর্থ সর্বমোট দরজার সংখ্যা 0-26 এর মধ্যে থাকবে।
প্রতিটি লক দরজা [A-Z]
ঠিক একটি অনুরূপ নিম্নতর চাবি থাকবে [a-z]
। ইনপুটটিতে অনেকগুলি স্পেস ( ) থাকতে পারে ।
সমস্ত দরজা শুরুর ডানদিকে এবং প্রস্থানের বাম দিকে থাকবে। সুতরাং কোন অতিরিক্ত অতিরিক্ত দরজা থাকবে না। সমস্ত ইনপুট সমাধানযোগ্য হবে।
এই চ্যালেঞ্জের আউটপুট একটি সংখ্যা হবে, গোলকধাঁধা থেকে বেরিয়ে আসার জন্য যে পদক্ষেপ নিয়েছে number
অ্যালগরিদম
এই জঘন্য স্থানটি থেকে বেরিয়ে আসার জন্য আপনার পদ্ধতিগত পদ্ধতির পদ্ধতিটি নিম্নরূপ:
- শুরুতে (
^
) শুরু করুন এবং আপনার সামনে যে কোনও কী সংগ্রহ করে (ডানদিকে) এগিয়ে যান। - আপনি যখন কোনও দরজাটি পেরিয়ে আসেন, আপনার যদি সঠিক কী থাকে তবে আপনি দরজার দিকে এগিয়ে যান। যদি আপনার কাছে সঠিক কী না থাকে তবে আপনি যে দরজাটি খুলতে পারছেন না তার সন্ধান না পাওয়া অবধি আপনি কীগুলি সংগ্রহ করে পিছনে (বাম দিকে) হাঁটবেন।
- আপনি যখন বর্তমান সমস্যাযুক্ত দরজার জন্য কীটি সংগ্রহ করেন, আপনি ডানদিকে ফিরে যান এবং আরও এগিয়ে যান।
- আপনি প্রস্থান (
$
) এ যাওয়ার আগ পর্যন্ত এই প্রক্রিয়াটি পুনরাবৃত্তি করুন ।
অভিজ্ঞ গল্ফাররা বুঝতে পারবেন যে আপনার কোডটিকে এই নির্দিষ্ট অ্যালগরিদমটি প্রয়োগ করা উচিত নয় যতক্ষণ না এটি একই ফলাফলকে ছাড়িয়ে যায় যদি আপনি এই অ্যালগরিদমটি চালান।
কাউন্টিং
প্রতিবার যখন আপনি একটি বর্গ থেকে অন্য স্কোয়ারের দিকে পা রাখবেন, তখন এটি একটি পদক্ষেপ হিসাবে গণ্য হবে। 180º ঘুরিয়ে দেওয়া কোনও অতিরিক্ত পদক্ষেপ নেয় না। প্রয়োজনীয় চাবি ছাড়া আপনি কোনও দরজার দিকে এগিয়ে যেতে পারবেন না। এটি বাছাই করতে আপনাকে অবশ্যই একটি কীতে উঠতে হবে এবং জয়ের জন্য প্রস্থানের দিকে যেতে হবে। আপনার প্রথম পদক্ষেপের পরে, শুরু স্থান ( ^
) অন্য নিয়মিত জায়গার মতোই আচরণ করে।
উদাহরণ
এই উদাহরণগুলিতে আমি শূন্যস্থানগুলি মানব-পঠনযোগ্যতার আন্ডারস্কোর হিসাবে রেখেছি।
ইনপুট হয় _a_^_A__$__
। আউটপুট হয় 11
। আপনি 1
সামনের দিকে এগিয়ে যান, লক্ষ্য করুন যে A
দরজার জন্য আপনার কোনও চাবি নেই , এবং তারপরে মুখের বিষয়ে। আপনি a
( 3
পদক্ষেপ পিছনে, এখন 4
মোট) সম্বলিত স্থান দখল না করা পর্যন্ত আপনি পিছনে হাঁটাবেন । তারপরে আপনি প্রস্থান না করে ( 7
দফায় এগিয়ে, 11
মোট) মোট স্থান দখল না করা পর্যন্ত আপনি এগিয়ে যান ।
ইনপুট হয় b__j^__a_AJB_$
। আউটপুটটি হ'ল 41
গোলকধাঁধার পিছনে দুটি পৃথক ট্রিপ করুন, একটিটি j
চাবি পেতে এবং তার পরেরটি b
কীটি পাওয়ার জন্য ।
ইনপুট হয় __m__t_^__x_T_MX_$____
। আউটপুট হয় 44
। আপনি x
কীটি পেতে কোনও বাড়তি ট্রিপ করবেন না , যেমন আপনি এটি শুরু থেকে ঘরে T
।
ইনপুট হয় g_t_^G_T$
। আউটপুট হয় 12
। আপনি G
কোনও চাবি ছাড়া এবং অবিলম্বে মুখোমুখি হয়ে স্থানটিতে যেতে পারবেন না । আপনি t
কীটির পথে কীটি বেছে নেওয়ার পক্ষে যথেষ্ট ভাগ্যবান g
এবং এভাবে আপনার স্বাধীনতার পথে দু'টি দরজা খোলার জন্য।
ইনপুট হয় _^_____$
। আউটপুট হয় 6
। এটা সহজ.
I / O নির্দেশিকা এবং বিজয়ী মানদণ্ড
স্ট্যান্ডার্ড আই / ও বিধি প্রযোজ্য। এটি একটি কোড-গল্ফ চ্যালেঞ্জ।
A
এ bA^aB$
অতিরিক্ত পারেন না। ;)