পটভূমি
একটি বিন্যাস এর সমতা , যেমন উইকিপিডিয়া দ্বারা সংজ্ঞায়িত , নিম্নরূপ:
একটি অনুগামের স্বাক্ষর বা স্বাক্ষর s sgn (σ) হিসাবে চিহ্নিত করা হয় এবং +1 সমান হলে +1 এবং σ1 বিজোড় হলে defined1 হিসাবে সংজ্ঞায়িত করা হয়।
একটি আদেশের চিহ্নটি স্পষ্টভাবে হিসাবে প্রকাশ করা যেতে পারে
sgn (σ) = (−1) ^ N (σ)
যেখানে এন (σ) হ'ল ইনভার্সনের সংখ্যা σ।
বিকল্পভাবে, একটি ক্রমবর্ধনের চিহ্ন transp এর ক্ষয় থেকে সংক্রমণ হিসাবে পণ্য হিসাবে সংজ্ঞা দেওয়া যেতে পারে σ
sgn (σ) = (−1) ^ মি
যেখানে মিটি পচনতে সংক্রমণের সংখ্যা।
আপনারা যারা তাদের গণিতে গ্রীক বর্ণমালা স্যুপকে পছন্দ করেন না তাদের জন্য আমি উদাহরণ দিয়ে কিছুটা সংজ্ঞাটি আরও সহজ করে তুলব (উইকিপিডিয়া থেকেও চুরি হয়েছে)।
উদাহরণ
ইনপুট অ্যারে {1, 2, 3, 4, 5}
, এবং এর একটি ক্রম বিবেচনা করুন , আসুন বলা যাক {3, 4, 5, 2, 1}
। আসল অ্যারে থেকে এর ক্রম ছাড়তে যাওয়ার জন্য আপনাকে অবশ্যই সূচকগুলিকে অদলবদল করতে হবে 0
এবং 2
, 1
এবং 3
তারপর 2
এবং 4
। যদিও এটি কোনও অনন্য সমাধান নয়, সমতাটি সুস্পষ্টভাবে সংজ্ঞায়িত হয়েছে সুতরাং এটি সমস্ত ক্ষেত্রেই কাজ করে।
যেহেতু এটির জন্য 3 টি অদলবদল প্রয়োজন, আমরা এই odd
প্যারিটিটি একটি প্যারিটির সাথে লেবেল করি । যেমনটি আপনি প্রত্যাশা করতে পারেন, এমন এক ক্রমশক্তি যা সমান পরিমাণে অদলবদলের প্রয়োজন তার একটি even
সমতা থাকার কথা বলা হয় ।
চ্যালেঞ্জ
আপনার চ্যালেঞ্জটি হ'ল একটি ক্রমের অনুপাত নির্ধারণ করার জন্য যতটা সম্ভব কম বাইটে একটি প্রোগ্রাম লিখুন। আপনার প্রোগ্রাম বা ফাংশন অবশ্যই:
- আর্গুমেন্ট হিসাবে স্বীকার করুন, একটি আদেশের আগে এবং পরে একটি সেট উপস্থাপন করে দুটি ইনপুট অ্যারে (বা স্ট্রিং)।
- সমাপ্তির পরে প্রদত্ত
e
বা এমনকিo
বিজোড়ের জন্য অক্ষরটি ফিরে বা মুদ্রণ করুন । - ধরে নেওয়া উচিত যে অ্যারে বা স্ট্রিংয়ের সমস্ত সূচকের স্বতন্ত্র মান রয়েছে।
পরীক্ষার কেস
ধরে নিচ্ছি আপনি নামের একটি ফাংশন ঘোষণা করেছেন f
:
f([10], [10]) == "e"
f([10, 30, 20], [30, 20, 10]) == "e"
f([10, 30, 20, 40], [30, 20, 40, 10]) == "o"
এটি কোড-গল্ফ , বাইটের মধ্যে সংক্ষিপ্ততম প্রোগ্রাম!
[10], [10] -> e
(শূন্য স্থানান্তর)। [10 30 20], [30 20 10] -> e
(দুটি স্থানান্তর) [10 30 20 40], [30 20 40 10] -> o
(তিনটি স্থানান্তর)