জিজ্ঞাসা উবুন্টু স্ট্যাক এক্সচেঞ্জের এই উত্তর থেকে এই চ্যালেঞ্জটি অনুপ্রাণিত হয়েছে ।
ইন্ট্রো
পাইপগুলির সাথে উইন্ডোজ এমই স্ক্রিনসেভারটি মনে আছে ? নস্টালজিয়াকে ফিরিয়ে আনার সময়!
চ্যালেঞ্জ
আপনার এমন একটি প্রোগ্রাম বা ফাংশন লিখতে হবে যা স্ক্রিনসেভারের একটি ASCII প্রতিনিধিত্ব করবে। স্ক্রিনসেভারে একটি একক পাইপ থাকা উচিত যা আধ-এলোমেলো দিকগুলিতে বৃদ্ধি পাবে।
পাইপের শুরুটি এলোমেলোভাবে পর্দার যে কোনও সীমানায় স্থাপন করা হবে এবং পাইপের টুকরোটি সীমানার দিকে লম্ব হওয়া উচিত (কোণার প্রথম-পাইপগুলি অনুভূমিক বা উল্লম্ব হতে পারে)। প্রতিটি টিক পাইপটি একটি 80%সুযোগে (অনুভূমিক / উল্লম্ব) সম্মুখ দিকে যে দিকে চলছে সেদিকে বৃদ্ধি পাবে বা একটি সুযোগে একটি কোণে নিয়ে যাবে 20%।
পাইপ উপস্থাপনা
পাইপটি তৈরি করতে, 6 টি ইউনিকোড অক্ষর ব্যবহৃত হবে
─ \u2500 horizontal pipe
│ \u2502 vertical pipe
┌ \u250C upper left corner pipe
┐ \u2510 upper right corner pipe
└ \u2514 lower left corner pipe
┘ \u2518 lower right corner pipe
ইনপুট
প্রোগ্রাম / ফাংশনটিতে ইনপুটটির 3 টি মান লাগবে, যা ফাংশন পরামিতিগুলির মাধ্যমে সংগ্রহ করা বা ব্যবহারকারীর কাছে প্রম্প্ট করা যেতে পারে।
- টিক্সের পরিমাণ
- পর্দার প্রস্থ
- পর্দার উচ্চতা
টিক্সের পরিমাণ
প্রতিটি টিকের জন্য, পাইপের একটি অংশটি স্ক্রিনে যুক্ত করা হবে। পাইপগুলি পুরাতন পাইপের টুকরোগুলি একই জায়গায় স্থিত করে ফেললে তা ওভাররাইট করে।
উদাহরণস্বরূপ, 3x3 আকারের একটি পর্দা নিন
ticks == 3
─┐
┘
ticks == 4
─┐
└┘
ticks == 5
│┐
└┘
যখনই কোনও পাইপ পর্দা থেকে প্রস্থান করে, সর্বশেষ উদাহরণে যেমন 5 টিক, তখন একটি এলোমেলো সীমানায় একটি নতুন পাইপ স্পোন করবে। উদাহরণ স্বরূপ:
ticks == 6
│┐
└┘
─
নতুন পাইপে অনুভূমিক বা উল্লম্ব হওয়ার 50% সুযোগ থাকা উচিত।
পর্দার প্রস্থ / উচ্চতা
যদি আপনার পছন্দের ভাষাটিতে পছন্দ হয় তবে স্ক্রিনের প্রস্থ এবং উচ্চতা একক মানে একত্রিত হতে পারে। স্ক্রিনের প্রস্থ এবং উচ্চতা সর্বদা সর্বনিম্ন মান 1 এবং সর্বাধিক 255 এর মান হতে পারে your আপনার কনসোলের সীমানা অতিক্রম করবেন না। (উদাহরণ: উইন্ডোজ 80x25 সেন্টিমিটার উইন্ডো)
আউটপুট
আপনার প্রোগ্রাম / ফাংশনের আউটপুট স্ক্রিনে মুদ্রণ করা উচিত, বা কোনও ফাংশন থেকে ফিরে আসতে হবে। আপনার প্রোগ্রামের প্রতিটি রানের জন্য পাইপের একটি আলাদা সেট তৈরি করা উচিত।
পরীক্ষার মামলা
নিম্নলিখিত পরীক্ষার ক্ষেত্রে বৈধ আউটপুটগুলির সমস্ত এলোমেলো উদাহরণ
f(4, 3, 3)
│
─┘
│
f(5, 3, 3)
│
─┘┌
│
f(6, 3, 3)
─│
─┘┌
│
f(7, 3, 3)
──
─┘┌
│
স্পষ্টতই, যত বেশি টিকটিক ঘটনা ঘটেছে, আপনার প্রোগ্রামটির বৈধতা প্রমাণ করা তত কঠিন। অতএব, আপনার আউটপুট চলমান একটি gif পোস্ট করা পছন্দ করা হবে। যদি এটি সম্ভব না হয় তবে দয়া করে আপনার কোডের একটি সংস্করণ পোস্ট করুন যার মধ্যে আউটপুট মুদ্রণ রয়েছে includes স্পষ্টতই, এটি আপনার স্কোরের পক্ষে গণনা করবে না।
বিধি
- এটি কোড-গল্ফ , সংক্ষিপ্ত পরিমাণে বাইট জিতেছে
- স্ট্যান্ডার্ড লুফোলস প্রযোজ্য
- আপনি যদি আপনার উত্স কোডটিতে ইউনিকোড পাইপ অক্ষর ব্যবহার করেন তবে আপনি সেগুলি একটি একক বাইট হিসাবে গণনা করতে পারেন
এটি বেশ কঠিন চ্যালেঞ্জ যা সম্ভবত অনেকগুলি সৃজনশীল উপায়ে সমাধান করা যেতে পারে, সংক্ষিপ্ত esolangs এর উত্তর ইতিমধ্যে থাকা সত্ত্বেও আপনাকে আরও ভার্জিক ভাষায় একটি উত্তর লিখতে উত্সাহিত করা হবে। এটি প্রতি ভাষাতে সংক্ষিপ্ত উত্তরগুলির একটি ক্যাটালগ তৈরি করবে। অভিনব রঙিন জিআইএফ জন্য বোনাস আপবোটস;)
শুভ গল্ফিং!
দাবি অস্বীকার: আমি জানি যে ইউনিকোডের অক্ষরগুলি ASCII নয়, তবে আরও ভাল নামের অভাবে আমি এটিকে কেবল ASCII আর্ট বলি। পরামর্শ স্বাগত জানাই :)



