(এই চ্যালেঞ্জটি খুব অনুরূপ, তবে এই বর্তমান চ্যালেঞ্জটিতে অতিরিক্ত জটিলতা রয়েছে))
একটি 2-মাত্রিক কক্ষটি কল্পনা করুন, যেখানে দেয়ালগুলি সমতল আয়না দিয়ে আবদ্ধ করা হয়েছে।
হঠাৎ ঘরে একটি আলোর মরীচি আঘাত হানে, যেখানে দেওয়ালের একটি টুকরো গায়েব! লাইটবিম ঘরের চারপাশে নাচছে, প্রাচীরের আয়না দ্বারা প্রতিবিম্বিত হচ্ছে এবং অবশেষে ঘরটি আবার ছেড়ে চলে গেল।
যুক্তিটা
: আপনি 5 ভেরিয়েবল দেওয়া হয় ডব্লিউ, এইচ, x, y এবং টু Z ।
এখন, তারা কি মানে?
ডাব্লু, এইচ হ'ল ঘরের আকার (দেয়াল সহ), ডাব্লু প্রস্থ এবং এইচ উচ্চতা।
এক্স, ওয়াই এমন স্থানাংক যা প্রাচীরটির গর্ত রয়েছে। আপনি ধরে নিতে পারেন যে এটি সর্বদা প্রাচীরের টাইলের উপরে অবস্থিত। স্থানাঙ্কগুলি 0-ভিত্তিক, এক্স-অক্ষটি ডানদিকে এবং Y- অক্ষটি নীচের দিকে নির্দেশ করে।
জেড একটি একক অক্ষর, আলোটি ঘরে পড়ে এমন দিকটি উপস্থাপন করে, হয় \বা হয় /।
ঘরটি নিম্নলিখিত অক্ষরগুলি দিয়ে তৈরি করতে হবে:
|অনুভূমিক দেয়াল জন্য-উল্লম্ব দেয়াল জন্য+কোণে জন্য
উদাহরণ: (ডাব্লু = 7, এইচ = 4)
+-----+
| |
| |
+-----+
এখন আমাদের একটি ঘর আছে, দেয়ালের টাইলগুলির মধ্যে একটি ধ্বংস করতে দিন, যাতে আলোর একটি মরীচি ঘরে পড়ে। আলোর মরীচিগুলি হ'ল তির্যক রেখাগুলি, প্রতিনিধিত্ব করা হয় \এবং /অক্ষরগুলি।
\আলোর মরীচি দিয়ে X = 2, Y = 0 এ ওয়াল টাইলটি প্রতিস্থাপন করা যাক ।
+-\---+
| |
| |
+-----+
আগত আলোটি আয়নার দেয়ালটি আঘাত না করা অবধি রুম জুড়ে তির্যকভাবে ভ্রমণ করে। যদি কোনও প্রাচীর আঘাতপ্রাপ্ত হয়, দিকটি প্রাচীরের অক্ষ বরাবর উল্টে যায় এবং মরীচিটি ভ্রমণ করে।
+-\---+
|\ \/\|
| \/\/|
+-----+
এই উদাহরণে, হালকা মরীচি এমন এক জায়গায় পৌঁছে যায় যেখানে দেয়ালের এক কোণে আঘাত করা হয়, যা এমন প্রভাব ফেলে যে মরীচি পুরোপুরি বিপরীত হয়ে যায় এবং পুরো পথটি ভ্রমণ করে শেষ পর্যন্ত ঘরটি ছেড়ে যায়।
তোমার কাজ
এমন একটি প্রোগ্রাম লিখুন যা ঘরটি এবং আলোক বিমের পুরো পথটি মুদ্রণ করবে, যতক্ষণ না এটি ঘরটি আবার ছেড়ে যায় বা অসীম লুপে পুনরাবৃত্তি না করে।
ইনপুট
ইনপুট কোনো যুক্তিসংগত বিন্যাসে প্রাপ্ত করা হতে পারে, কিন্তু 4 পূর্ণসংখ্যার ডব্লিউ, এইচ, x, y এবং চরিত্র জেড, উদাহরণস্বরূপ অন্তর্ভুক্ত করা হয়েছে [10, 8, 0, 3, \]।
আপনি ধরে নিতে পারেন:
- ডাব্লু, এইচ> = 3
- এক্স, ওয়াই সর্বদা একটি দেয়ালে অবস্থিত
- জেড কেবলমাত্র মানগুলি
\এবং রাখতে সক্ষম হবে/।
আউটপুট
আপনি সিদ্ধান্ত নিতে পারেন আপনি কোনও স্ট্রিং ফিরে এসেছেন বা সরাসরি আউটপুট এ stdout।
এতে ঘরের প্রাচীর এবং হালকা মরীচি অন্তর্ভুক্ত করতে হবে (উপরে ASCII অক্ষর দ্বারা সংজ্ঞায়িত)।
বিধি
- স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।
- এটি কোড-গল্ফ , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোড, কোনও ভাষায়, জিতে।
- এই চ্যালেঞ্জটি প্রকাশের আগে তৈরি হওয়া সমস্ত কোডিং ভাষাগুলিকে অনুমোদিত are
উদাহরণ
ইনপুট: [5, 4, 2, 0, /]
+-/-+
|/ /|
|\/ |
+---+
ইনপুট: [20, 3, 0, 1, \]
+------------------+
\/\/\/\/\/\/\/\/\/\|
+------------------+
ইনপুট: [10, 8, 0, 3, \] (অসীম লুপের উদাহরণ যা ঘরটি আবার ছাড়বে না))
+--------+
|/\/\/\/\|
|\/\/\/\/|
\/\/\/\/\|
|\/\/\/\/|
|/\/\/\/\|
|\/\/\/\/|
+--------+
শুভকামনা!