চ্যালেঞ্জটি হ'ল ম্যাট্রিক্সের হাফনিয়ানের জন্য কোডগল্ফ লিখুন । একটি- 2n
দ্বারা- 2n
প্রতিসাম্য ম্যাট্রিক্সের হাফনিয়ান A
হিসাবে সংজ্ঞায়িত করা হয়:
এখানে S 2n থেকে পূর্ণসংখ্যার সব একাধিক বিন্যাসন সেট প্রতিনিধিত্ব করে 1
করতে 2n
হলো, [1, 2n]
।
উইকিপিডিয়া লিঙ্কটি সংলগ্ন ম্যাট্রিক্স সম্পর্কে কথা বলে তবে আপনার কোডটি কোনও বাস্তব মূল্যবান প্রতিসাম্য ইনপুট ম্যাট্রিক্সের জন্য কাজ করা উচিত।
হাফনিয়ার অ্যাপ্লিকেশনগুলিতে আগ্রহী তাদের জন্য, ম্যাথওভারফ্লো লিঙ্কটি আরও কিছু আলোচনা করে।
আপনার কোডটি চাইলে ইনপুট নিতে পারে এবং যে কোনও সংবেদনশীল ফর্ম্যাটে আউটপুট দিতে পারে তবে দয়া করে আপনার উত্তরটিতে কীভাবে আপনার কোডটিতে ইনপুট সরবরাহ করবেন সে সম্পর্কে পরিষ্কার নির্দেশাবলী সহ একটি সম্পূর্ণ কাজের উদাহরণ অন্তর্ভুক্ত করুন।
ইনপুট ম্যাট্রিক্স সর্বদা বর্গক্ষেত্র এবং 16 এর 16 সর্বাধিক হবে There খালি ম্যাট্রিক্স বা বিজোড় মাত্রার ম্যাট্রিক্স পরিচালনা করতে সক্ষম হওয়ার দরকার নেই।
রেফারেন্স বাস্তবায়ন
মিঃ এক্সকোডারের কাছ থেকে পাইথন কোডের কয়েকটি উদাহরণ এখানে।
from itertools import permutations
from math import factorial
def hafnian(matrix):
my_sum = 0
n = len(matrix) // 2
for sigma in permutations(range(n*2)):
prod = 1
for j in range(n):
prod *= matrix[sigma[2*j]][sigma[2*j+1]]
my_sum += prod
return my_sum / (factorial(n) * 2 ** n)
print(hafnian([[0, 4.5], [4.5, 0]]))
4.5
print(hafnian([[0, 4.7, 4.6, 4.5], [4.7, 0, 2.1, 0.4], [4.6, 2.1, 0, 1.2], [4.5, 0.4, 1.2, 0]])
16.93
print(hafnian([[1.3, 4.1, 1.2, 0.0, 0.9, 4.4], [4.1, 4.2, 2.7, 1.2, 0.4, 1.7], [1.2, 2.7, 4.9, 4.7, 4.0, 3.7], [0.0, 1.2, 4.7, 2.2, 3.3, 1.8], [0.9, 0.4, 4.0, 3.3, 0.5, 4.4], [4.4, 1.7, 3.7, 1.8, 4.4, 3.2]])
262.458
হাফনিয়ার গণনার ভিন্ন উপায় অন্তর্ভুক্ত করার জন্য উইকির পৃষ্ঠাটি এখন (মার্চ 2 2018) শ্রীভাতসার দ্বারা আপডেট করা হয়েছে। এই গল্ফটি দেখতে খুব আকর্ষণীয় হবে।