বেফুঞ্জ একটি দ্বিমাত্রিক এসোটেরিক প্রোগ্রামিং ভাষা। মূল ধারণাটি হ'ল (এক-চরিত্র) কমান্ডগুলি 2-মাত্রিক গ্রিডে স্থাপন করা হয়। কন্ট্রোল ফ্লো গ্রিড জুড়ে হাঁটবে, কমান্ডগুলি সম্পাদন করবে এবং এটি একটি তীর ( >^<v
) কে আঘাত করবে তখন দিক পরিবর্তন করবে । কমান্ডগুলি স্ট্যাক-ভিত্তিক; দেখতে এই তালিকায় । Http://esolangs.org/wiki/Befunge এও দেখুন ।
বেফুঞ্জ -98 এর স্পেসিফিকেশন উপলব্ধ।
সমস্যা
এমন একটি প্রোগ্রাম লিখুন যা বেফুঞ্জ প্রোগ্রামটিকে আরও কমপ্যাক্ট উপস্থাপনায় রূপান্তর করে। উদাহরণস্বরূপ, নিম্নলিখিত প্রোগ্রাম মুদ্রণ 0
:
> 0 v
> @ .
^ <
এই ক্ষেত্রে, এটি ফাঁকা সারি সরিয়ে প্রোগ্রামের আচরণ পরিবর্তন না করে সংযোগ করা যেতে পারে
>0v
>@.
^ <
আরও পরিশীলিত ট্রান্সফর্মেশনগুলি ঘোরানো বা কমান্ডগুলির সিকোয়েন্সগুলিকে মিরর করে এবং প্রোগ্রামটি কমপ্যাক্ট করার জন্য অপ্রয়োজনীয় নিয়ন্ত্রণ-প্রবাহ কমান্ডগুলি অপসারণ করতে পারে। উদাহরণস্বরূপ, এই প্রোগ্রামের সাথে:
>12345v
6
v....7<
.
.
.
@
আপনি প্রোগ্রামের শেষটি গর্তে টেক করতে পারেন:
>12345v
>...@ 6
^....7<
প্রথম উদাহরণের জন্য, সবচেয়ে কমপ্যাক্ট প্রোগ্রামটি সম্ভব possible
>0.@
আউটপুট প্রোগ্রামটি একই ফলাফল দেয় আপনি কোনও রূপান্তর ব্যবহার করতে পারেন।
ইনপুট প্রোগ্রাম
ইনপুট প্রোগ্রামগুলি বৈধ বেফঞ্জ -৮৮ প্রোগ্রাম।
আপনি ধরে নিতে পারেন যে ইনপুট প্রোগ্রামটি ডিটারমিনিস্টিক। এটি, এটি বহিরাগত অবস্থা পড়ার আদেশগুলি ব্যবহার করে না: ব্যবহারকারী ইনপুট কমান্ড &
এবং ~
, র্যান্ডমাইজার ?
এবং স্ব-পরিবর্তনকারী কোড কমান্ড p
এবং g
।
আপনি ইনপুট প্রোগ্রামটি সমাপ্ত বলে ধরে নিতে পারেন।
স্কোরিং
এটি কোনও কোড গল্ফ নয়, এমন একটি প্রোগ্রাম লিখতে সমস্যা যা কোড গল্ফিং করে।
ইনপুটটি পরীক্ষার কেসগুলির একটি সেট (বেফুঞ্জ প্রোগ্রাম যা উপরের ইনপুট বিধিনিষেধকে মেটায়)। মোট স্কোর হল পরীক্ষার ক্ষেত্রে স্কোরগুলির যোগফল।
প্রতিটি পরীক্ষার ক্ষেত্রে স্কোর
স্কোরটি আউটপুট প্রোগ্রামের খালি নয় এমন কোষগুলির উত্তল হলের ক্ষেত্রফল, যেখানে প্রতিটি কক্ষকে একটি বর্গ হিসাবে বিবেচনা করা হয় যার চারটি কোণ কার্তেসিয়ান সমতলের জাল পয়েন্ট। উদাহরণস্বরূপ, একটি প্রোগ্রাম
> v
@ <
9.5 এর স্কোর পায়।
যদি আপনার প্রোগ্রামটি কোনও নির্দিষ্ট ইনপুটটিতে যুক্তিসঙ্গত পরিমাণ এবং মেমরির অবসান না করে তবে স্কোরটি ইনপুট প্রোগ্রামের। (এটি কারণ আপনি তুচ্ছভাবে একটি সময়-সীমাবদ্ধ মোড়কে যুক্ত করতে পারেন যা আপনার প্রোগ্রামটি সময়মতো শেষ না হলে ইনপুট প্রোগ্রামটি অপরিবর্তিত রাখে))
আপনার প্রোগ্রামটি প্রক্রিয়া করার পরে যদি টেস্ট-কেস প্রোগ্রামটির আলাদা ফলাফল হয় (বা শেষ করতে ব্যর্থ হয়) তবে স্কোরটি ইনপুট প্রোগ্রামের স্কোর এবং 100 পয়েন্টের জরিমানা।
.
এর অর্থ আউটপুট পূর্ণসংখ্যা, তবে আপনি যদি উপরের বাম থেকে শুরু করেন তবে স্ট্যাকের আউটপুট পর্যন্ত পূর্ণসংখ্যা নেই।
.
একটি পূর্ণসংখ্যা বের করে। এছাড়াও, যখন স্ট্যাকের পর্যাপ্ত প্যারামিটার না থাকে, তখন বেফুঞ্জ ভান করে যে পরিবর্তে সেখানে পর্যাপ্ত পরিমাণ শূন্য রয়েছে। সুতরাং দ্বিতীয় উদাহরণ আউটপুট হবে 000
।
g
এবং p
অনুমোদিত নয় (দুঃখিত, তাদের সম্পর্কে ভুলে গেছেন; সম্পাদিত)।