এই প্রশ্নটি জিজ্ঞাসা করার জন্য বেশ কয়েকটি আগের প্রচেষ্টা হয়েছে, তবে এই সাইটের আধুনিক মানদণ্ডের সাথেও মানা হয় না। প্রতি মেটা আলোচনা , আমি এটা একটি উপায় যে আমাদের আধুনিক rulesets অধীনে সুষ্ঠু প্রতিযোগিতা জন্য করতে পারবেন মধ্যে reposting করছি।
পটভূমি
একজন যে শব্দ কবিতা প্রভৃতি উলটা করিয়া পড়িলেও একই থাকে একটি স্ট্রিং যে, "একই সম্মুখে এবং পিছনের দিকে লেখা আছে", অর্থাত স্ট্রিং এর বিপরীত স্ট্রিং নিজেই সমান। আমরা এখানে "সুবিধাজনক প্যালিনড্রোমস" সম্পর্কে কথা বলছি না, তবে চরিত্রের দ্বারা অক্ষর বিপরীত; উদাহরণস্বরূপ, ()()
একটি প্যালিনড্রোম নয়, তবে ())(
।
কাজটি
একটি প্রোগ্রাম বা ফাংশন লিখুন যা স্ট্রিং এস (বা আপনার ভাষায় উপযুক্ত সমতুল্য) ইনপুট হিসাবে গ্রহণ করে এবং তার একটি আউটপুট কিউ (আপনার পছন্দসই এক ধরণের) রয়েছে। আপনি ইনপুট নিতে এবং আউটপুট সরবরাহ করতে যে কোনও যুক্তিসঙ্গত উপায় ব্যবহার করতে পারেন ।
- যখন ইনপুট এস একটি প্যালিনড্রোম হয়, আউটপুট Q এর মান A হওয়া উচিত (এটি কোনও প্যালিনড্রমিক এস এর জন্য একই )।
- যখন ইনপুট এস কোনও প্যালিনড্রোম নয়, আউটপুট Q এর মান বি হওয়া উচিত (এটি কোনও নাল-প্যালিনড্রমিক এস এর জন্য একই )।
- এ এবং বি অবশ্যই একে অপরের থেকে পৃথক হতে হবে।
বা অন্য কথায়: সমস্ত প্যালিনড্রোমকে একটি মানতে এবং সমস্ত নন-প্যালিনড্রোমকে অন্য মানচিত্রে মানচিত্র করুন।
অতিরিক্তভাবে, আপনি যে প্রোগ্রাম বা ফাংশনটি লিখেছেন তা অবশ্যই একটি প্যালিনড্রোম হতে হবে (যেমন এর উত্স কোডটি অবশ্যই প্যালিনড্রমিক হতে হবে), এটি এটিকে একটি সীমাবদ্ধ-উত্স চ্যালেঞ্জ তৈরি করে।
ব্যাখ্যা
- যদিও
true
এবং এ এবং বি এরfalse
জন্য সুস্পষ্ট পছন্দ , আপনি আপনার "একটি প্যালিনড্রোম" এবং "প্যালিনড্রোম নন" আউটপুটগুলির জন্য যে কোনও দুটি পৃথক মান ব্যবহার করতে পারেন, যার বুলিয়ান হওয়ার দরকার নেই। - আমরা এখানে অক্ষরের স্তরে স্ট্রিং রিভার্সাল সংজ্ঞায়িত করছি ;
éé
ইউটিএফ -8 বা ল্যাটিন -1 এ প্রোগ্রামটি এনকোড করা হয়েছে তা নির্বিশেষে প্যালিনড্রমিক ic যদিও এটি ইউটিএফ -8 এনকোডিংয়ের পরে অক্টেটের একটি প্যালিনড্রমিক ক্রম নয়। - যাইহোক, আপনার প্রোগ্রামে যদি ASCII বিহীন অক্ষর থাকে তবে এটিকে কেবল ASCII ইনপুটটির জন্য কাজ করা দরকার। বিশেষ করে, ইনপুট এস শুধুমাত্র (স্থান সহ, কিন্তু সম্পর্কে newline ছাড়া) মুদ্রণযোগ্য ASCII অক্ষর উপস্থিত থাকবে। অন্যান্য জিনিসের মধ্যে, এর অর্থ হ'ল যদি আপনি ইনপুটটিকে অক্ষরের অনুক্রমের পরিবর্তে বাইটের ক্রম হিসাবে বিবেচনা করেন তবে আপনার প্রোগ্রামটি এখনও স্পেসিফিকেশনটি মেনে চলবে (যদি না আপনার ভাষার আই / ও এনকোডিং খুব অদ্ভুত থাকে)। যেমন, পূর্বের বুলেটে একটি প্যালিনড্রোমের সংজ্ঞাটি তখনই গুরুত্বপূর্ণ হয় যখন প্রোগ্রামটির সঠিক ফর্ম রয়েছে কিনা তা যাচাই করা হয়।
- একটি মন্তব্য বা স্ট্রিং আক্ষরিক অর্ধেক প্রোগ্রামটি লুকানো আইনানুগ হয়; আপনার দৈর্ঘ্যে স্কোর হচ্ছে, সৃজনশীলতা নয়, সুতরাং আপনার প্রোগ্রামটি প্যালিনড্রোম কিনা তা নিশ্চিত করতে "বিরক্তিকর" পদ্ধতিগুলি নির্দ্বিধায় ব্যবহার করুন। অবশ্যই, আপনি দৈর্ঘ্যের উপর স্কোর করা হচ্ছে, আপনার প্রোগ্রামের কিছু অংশ যা কিছু না করে আপনার স্কোরকে আরও খারাপ করতে চলেছে, সুতরাং আপনার প্রোগ্রামের উভয় অংশকে ব্যবহার করতে সক্ষম হবেন সম্ভবত আপনি যদি এটি পরিচালনা করতে পারেন তবে সহায়ক হতে পারে ।
- যেহেতু বিজয়ের মানদণ্ডটি বাইটগুলি পরিমাপ করা হয়, আপনার প্রোগ্রামটি এটি স্কোর করতে সক্ষম হওয়ার জন্য আপনাকে যে এনকোডিংটি লেখা হয়েছে তা নির্দিষ্ট করতে হবে (যদিও এটি বেশিরভাগ ক্ষেত্রে আপনি কী এনকোডিংটি ব্যবহার করছেন তা স্পষ্ট হবে)।
বিজয়ের মানদণ্ড
যদিও প্রোগ্রামটি চরিত্র স্তরে প্যালিনড্রোম হওয়া দরকার, আমরা কে জিতবে তা দেখার জন্য আমরা বাইট ব্যবহার করছি। বিশেষত, আপনার প্রোগ্রামটি যত কম সংখ্যক, বাইটে পরিমাপ করা তত ভাল; এটি একটি কোড-গল্ফ চ্যালেঞ্জ। সাবমিশনগুলিকে (বিশেষত একই ভাষায় জমা দেওয়া) তুলনা করার অনুমতি দেওয়ার জন্য, আপনার প্রোগ্রামের জন্য একটি বাইট গণনা আপনার জমা দেওয়ার শিরোনামে (আরও একটি অক্ষর গণনা, যদি এটি বাইট সংখ্যা থেকে পৃথক হয়) রাখুন।
(
সাথে a
এবং এর )
সাথে প্রতিস্থাপনের চেষ্টা করুন b
। কি abab
একটি যে শব্দ কবিতা প্রভৃতি উলটা করিয়া পড়িলেও একই থাকে ? না, এটা হতে হবে abba
। তাহলে ()()
প্যালিনড্রোমও নয়; এটা হতে হবে ())(
।
()() is not a palindrome, but ())( is.
অভিনন্দন, আপনি এটিকে reddit এ তৈরি করেছেন!