পলিগ্লটগুলি এমন প্রোগ্রাম যা একসাথে একাধিক প্রোগ্রামিং ভাষায় বৈধ। বেশিরভাগ এই জাতীয় বহুগঠনগুলি এমনভাবে লেখা হয় যে একটি ভাষার নির্দিষ্ট কিছু রচনাগুলি অন্য ভাষার ভাষ্য হিসাবে ব্যাখ্যা করা হয় (উদাহরণস্বরূপ #define
সিতে বেশ কয়েকটি স্ক্রিপ্টিং ভাষায় একটি মন্তব্য হিসাবে ব্যাখ্যা করা হয়)।
আমি দেখতে আগ্রহী যে এটি একটি তুচ্ছ-বহুবিধ বহুগ্লোট তৈরি করা সম্ভব কিনা যাতে কোনও মন্তব্য নেই, তবে আপনি যখন কোনও অ-হোয়াইটস্পেস অক্ষর অপসারণ করেন তখনই তাত্ক্ষণিকভাবে পরিবর্তিত হয়, তাই আমি আপনাকে চ্যালেঞ্জ জানাই যে এই জাতীয় একটি প্রোগ্রাম নিয়ে আসুন।
কংক্রিটের নিয়মগুলি নিম্নরূপ:
- (আউটপুট)। আপনার প্রোগ্রামটি অবশ্যই আপনার প্রতিটি ভাষার অধীনে কনসোলে কিছু আউটপুট তৈরি করতে পারে। এটি হ'ল, আপনার প্রোগ্রামটি কোনও কিছুই প্রিন্ট না করে কেবল প্রস্থান করার অনুমতি নেই।
- (ভ্যারিয়েন্স)। স্ট্যান্ডার্ড বহুগ্লোট সংজ্ঞাটি শিথিলকরণ হিসাবে, প্রোগ্রামের আউটপুট বিভিন্ন ভাষার মধ্যে পৃথক হতে পারে।
- (ত্রুটি)। আপনার প্রোগ্রামটি অবশ্যই আপনার কোনও ভাষার অধীনে কোনও ত্রুটি (বিস্তৃতভাবে সংজ্ঞায়িত) উত্পাদন করতে পারে না। বেশিরভাগ ভাষার ক্ষেত্রে এটি সংকলক এবং / বা দোভাষী থেকে শূন্য-বহির্গমন কোড ফেরত হিসাবে সংজ্ঞায়িত।
- (সীমাবদ্ধতা)। আপনার কোড থেকে কোন একক অ হোয়াইটস্পেস অক্ষর অপসারণের অধীনে তার আচরণ পরিবর্তন করার জন্য আপনার প্রোগ্রাম কারণ উচিত যে আপনার ভাষার একটি। প্রোগ্রামটি সেই ভাষার জন্য অবৈধ হয়ে, বা উত্পাদিত আউটপুট পরিবর্তন করে "পরিবর্তন" করতে পারে।
- এটি একটি কোড চ্যালেঞ্জ । বিজয়ী হ'ল প্রোগ্রাম যা বেশিরভাগ প্রোগ্রামিং ভাষায় বৈধ। সংক্ষিপ্ত প্রোগ্রাম দৈর্ঘ্যের পক্ষে বন্ধনগুলি ভাঙ্গা হবে।
সীমাবদ্ধতার বিধিটি বেশ কয়েকটি অক্ষর অপসারণ করতে প্রযোজ্য নয়। এটি হ'ল ঠিক আছে যদি এক সাথে বেশ কয়েকটি অক্ষর অপসারণ করা হয় তবে আপনার কোনও ভাষার কোনও পরিবর্তন হবে না change
লক্ষ্য করুন যে সীমাবদ্ধতার বিধিটি সূচিত করে যে আপনি হোয়াইটস্পেসকে আপনার কোনও একটি ভাষা হিসাবে ব্যবহার করতে পারবেন না, কারণ কোনও অ-শ্বেতস্পেস অক্ষর অপসারণ করা হোয়াইটস্পেস প্রোগ্রামের আচরণকে পরিবর্তন করবে না।
পাইথন 2 এবং পাইথন 3 ভাষার জন্য উপরের সমস্ত বিধিনিষেধ পূরণ করে এমন একটি প্রোগ্রামের একটি সাধারণ উদাহরণ এখানে:
print("Hello World!")
কোনও অক্ষর মুছে print
ফেলা উভয় ভাষাকে একটি নিক্ষেপ করবে NameError
; যে কোনও ব্র্যাকেট বা উদ্ধৃতি SyntaxError
অপসারণ করা একটি নিক্ষেপ করবে এবং কোনও স্ট্রিং অক্ষর অপসারণ করলে উভয় ভাষায় আউটপুট পরিবর্তন হবে। (উল্লেখ্য print("hello", "world")
এটি উপরের নিয়মের অধীনে আরও সূক্ষ্ম, তবে এখনও বৈধ প্রোগ্রাম)।
এই উদাহরণটি কিছুটা খোঁড়া কারণ পাইথন 2 এবং পাইথন 3 খুব একই রকম, তাই আমি অন্য কোনও সমাধান গ্রহণ করব না যা কেবল একই ভাষার বিভিন্ন সংস্করণ ব্যবহার করে (বিশেষত পাইথন 2 এবং পাইথন 3)।
print("Hello World!")