আয়না একটি ঘর


18

(এই চ্যালেঞ্জটি খুব অনুরূপ, তবে এই বর্তমান চ্যালেঞ্জটিতে অতিরিক্ত জটিলতা রয়েছে))


একটি 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, \] (অসীম লুপের উদাহরণ যা ঘরটি আবার ছাড়বে না))

+--------+
|/\/\/\/\|
|\/\/\/\/|
\/\/\/\/\|
|\/\/\/\/|
|/\/\/\/\|
|\/\/\/\/|
+--------+

শুভকামনা!

উত্তর:


5

কাঠকয়লা , 55 বাইট

BNNJNNPψ↷⎇⁼δ/⎇∧⁻⁻θ¹ζIε⁷I3⎇∧IζIε⁵I1W¬℅KK«¹F³¿∧κ℅KK«↷κ¶↷κ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। সম্পাদনা: কেন জানি না তবে সেই কোডটি এখনই কাজ করছে না। পরিবর্তে এখানে একটি টুইট সংস্করণ। মূল কোডের ব্যাখ্যা:

BNN

বাইরের বাক্স আঁকুন।

JNNPψ

কার্সারটি এন্ট্রি পয়েন্টে সরান এবং এই মুহুর্তে বাক্সে একটি গর্ত করুন, সুতরাং এটি পটভূমিতে পরিণত হয়।

↷⎇⁼δ/⎇∧⁻⁻θ¹ζIε⁷I3⎇∧IζIε⁵I1P

প্রাথমিক রেখাংশটি মুদ্রণের জন্য উপযুক্ত দিকটিতে ঘোরান।

W¬℅KK«¹

কার্সারটি একটি গর্তের ওপরে গেলে, পরবর্তী লাইনের অংশটি আঁকুন।

F³¿∧κ℅KK«↷κ¶↷κ

পরবর্তী রেখার বিভাগটি আঁকতে এমন কোনও গর্তের সন্ধান করুন। এটি একই কোডটি তিনবার পুনরাবৃত্তি করে কাজ করে। প্রথমবার, কিছুই হয় না। দ্বিতীয়বার, যদি কার্সারটি কোনও গর্তের উপরে না থাকে তবে এটি ডান 45 ° ঘোরান then এটি এটি একটি অক্ষতে প্রতিবিম্বিত করার প্রভাব ফেলে। তৃতীয় বার, যদি কার্সারটি এখনও কোনও গর্তের উপরে না থাকে তবে এটি ডান 90 rot ঘোরান then এটি অন্য অক্ষের প্রতিচ্ছবি পরিবর্তন করার প্রভাব ফেলে। যদি এখনও কোনও গর্ত না থাকে তবে কোনও কোণ বা অসীম লুপ পৌঁছে গেছে, সুতরাং বাহ্যিক লুপটি থামে।


1
লোকেরা আপনার কোডটি পরীক্ষা করে পরীক্ষা করার জন্য, এটি ভার্ফোস সংস্করণটি পৃথকভাবে অনলাইনে গল্ফড কোডের সাথে একটি লিঙ্ক রাখতে সহায়তা করবে।
ট্রাইকোপলাক্স


@ ট্রাইকোপ্লেক্সটি সহজ ছিল
এমডি এক্সএফ

@ ট্রাইকোপলাক্স টিআইও লিঙ্কটি আউটপুটটিতে গল্ফ কোডটি দেখায় যা আমি এখান থেকে এটি অনুলিপি করে আটকিয়ে রেখেছি ...
নীল

1
@ থ্রিচোপল্যাক্স আপনি যখন ব্যবহার করেন -v -slতখন এটি প্রকৃত অনুবাদিত সংযুক্ত কোডটি মুদ্রিত হিসাবে কার্যকর হয়। এটি অবশ্যই ডায়ারবোসিফায়ারকে সঠিক সংযোগ কোড তৈরির উপর নির্ভর করে, কারণ যদি এটি না হয় তবে উত্পন্ন কোডটি ব্যর্থ হয়, যদিও মূল ভার্বোজ কোডটি প্রযুক্তিগতভাবে সঠিক ছিল।
নীল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.