কখনও কখনও ব্রেইনফাক কোড লেখার সময়, আপনি এটি ডিবাগিংকে উত্সাহিত করার জন্য প্রয়োজনের চেয়ে দীর্ঘতর করার প্রয়োজন বোধ করেন । আপনি কেবল ><
সেখানে প্রবেশের মাধ্যমে এটি করতে পারেন , তবে এটি কী মজা? আপনার কোড পড়ে যে কেউ বিভ্রান্ত করার জন্য আপনাকে আরও কিছু কম ও কম NIPey লাগবে।
ব্রেইনফাকের দ্রুত পরিচয়
ব্রেইনফাক একটি অদ্ভুত প্রোগ্রামিং ভাষা যা 1993 সালে আরবান মোলার তৈরি করেছিলেন এবং এটি চরম সংক্ষিপ্ততার জন্য উল্লেখযোগ্য। (উইকিপিডিয়া)
Brainfuck আট কমান্ড উপর ভিত্তি করে একটি ভাষা: +-><,.[]
। কোডটি টিউরিং মেশিনের মতো কোনও কিছুর উপরে চালিত হয়: একটি অসীম টেপ যার উপরে মানগুলি পরিবর্তন করা যায়। এই চ্যালেঞ্জের মধ্যে আমরা প্রথম চারটির দিকে মনোনিবেশ করব:
+ increment the value at the pointer
- decrement the value at the pointer
> move the pointer right
< move the pointer left
ব্রেইনফাক এনওপি
একটি ব্রেইনফাক এনওপি হ'ল ব্রেনফাক চরিত্রগুলির একটি ক্রম যা কোনও রাজ্য থেকে মৃত্যুদন্ড কার্যকর করা হলে, রাজ্যে কোনও পরিবর্তন আনার দিকে পরিচালিত করে। এগুলিতে উপরে বর্ণিত চারটি চরিত্র রয়েছে।
চ্যালেঞ্জ
চ্যালেঞ্জটি হ'ল এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা কার্যকর করা হলে প্রদত্ত দৈর্ঘ্যের একটি এলোমেলো ব্রেইনফাক এনওপি উত্পন্ন করে।
ইনপুট
আপনি ইনপুট হিসাবে একটি nonnegative এমনকি পূর্ণসংখ্যার পাবেন n
। (বিজোড়ের জন্য এনওপিগুলি অসম্ভব n
))
আউটপুট
আপনি দৈর্ঘ্যের একটি এলোমেলো ব্রেইনফাক এনওপি আউটপুট পাবেন n
।
বিধি
- এনওপি-র সংজ্ঞা: প্রোগ্রামের আউটপুট যখন কোনও মস্তিস্কে প্রোগ্রামের যে কোনও সময়ে সন্নিবেশ করা হয়, তখন বলা প্রোগ্রামের আচরণটি কোনওভাবেই বদলাতে হবে না। অন্য কথায়, এটি অবশ্যই দোভাষীদের অবস্থার পরিবর্তন করবে না।
- মনে রাখবেন যে উদাহরণস্বরূপটি
+>-<
ভুল, কারণ এটি দুটি কক্ষের মান পরিবর্তন করে তাদের পরিবর্তন না করে। পোস্ট করার আগে দয়া করে এর জন্য আপনার সমাধানটি পরীক্ষা করুন। - এছাড়াও মনে রাখবেন যে এটি
+>-<->+<
এমন একটি এনওপি যা কেবল অপসারণের মাধ্যমে কোনও কিছুতেই হ্রাস করা যায় না><
<>
+-
-+
। সুতরাং, আপনি এমন একটি অ্যালগরিদম ব্যবহার করতে পারবেন না যা কেবল একে অপরের মধ্যে সন্নিবেশ করায়।
- মনে রাখবেন যে উদাহরণস্বরূপটি
- দৈর্ঘ্যের প্রতিটি বৈধ এনওপিকে
n
আউটপুটে উপস্থিত হওয়ার ননজারো সুযোগ থাকতে হবে। বিতরণ অভিন্ন হতে হবে না, যদিও। - প্রশ্নে ব্রেইনফাক ইন্টারপ্রেটারে সালিসী নির্ভুলতা কোষগুলির দ্বিগুণ অনন্ত টেপ রয়েছে। এটি হ'ল আপনি উভয় দিক থেকে সীমাহীনভাবে যেতে পারবেন এবং প্রতিটি ঘরে অনির্দিষ্টকালের জন্য বৃদ্ধি / হ্রাস করতে পারবেন।
- প্রোগ্রামটি আমার মেশিনে = 100 এর জন্য 1 মিনিটের মধ্যে
n
শেষ করতে হবে , যাতে কোনও সম্ভাব্য এনওপি তৈরি করা যায় না এবং একটি বাছাই করা যায় না। - যদি অবৈধ ইনপুট দেওয়া হয় (অ-পূর্ণসংখ্যা, নেতিবাচক, বিজোড় ইত্যাদি) আপনি ক্র্যাশ সহ আপনার পছন্দসই কিছু করতে পারেন।
স্কোরিং
এটি কোড-গল্ফ , তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর ins
উদাহরণ
এখানে n
= 4 এর জন্য সমস্ত বৈধ আউটপুট রয়েছে :
++-- +-+- +--+ --++ -+-+ -++-
>><< ><>< ><<> <<>> <><> <>><
><+- ><-+ <>+- <>-+
>+-< >-+< <+-> <-+>
+><- -><+ +<>- -<>+
+->< -+>< +-<> -+<>
এখানে n
= 20 এর কয়েকটি সম্ভাব্য আউটপুট রয়েছে :
+>>->+<->-<<<->>++<<
>+>-<+<->+-<>->+<-<+
+--+-++--++-+--+-++-
>>>>>>>>>+-<<<<<<<<<
.
একটি পার্শ্ব-প্রতিক্রিয়া আছে, ,
একটি মান ওভাররাইট করে যা ব্যবহার ব্যতীত পুনরুদ্ধার করা যায় না []
। তবে []
শূন্যের মান নির্ধারণ করবে। এটি কোনও মানকেও ওভাররাইট করে (যাতে []
এটি পুনরুদ্ধার করার জন্য আমাদের আরও একটি প্রয়োজন ) তবে এর মতো কিছু সহ আমাদের এমন একটি ঘর অনুসন্ধান করতে [>]
হবে এবং আমরা যে অবস্থান থেকে এসেছি তা নির্ভরযোগ্যভাবে ফিরে আসা অসম্ভব।
+-<>
আপনি চেয়েছিলেন তা ব্যবহার করে না :a