কম্পিউটার

পাইথনে কারেন্সি আর্বিট্রেজ খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের কাছে মুদ্রা বিনিময় হারের একটি N x N টেবিল আছে। আমাদের চেক করতে হবে যে ট্রেডের কিছু সিকোয়েন্স আছে কি না আমরা করতে পারি। এখন যে কোনো মুদ্রার কিছু পরিমাণ A দিয়ে শুরু করে, আমরা সেই মুদ্রার A-এর থেকেও বেশি কিছু পরিমাণে শেষ করতে পারি। কোন লেনদেনের খরচ নেই এবং আমরা ভগ্নাংশের পরিমাণও ট্রেড করতে পারি।

পাইথনে কারেন্সি আর্বিট্রেজ খুঁজে বের করার প্রোগ্রাম

এই ম্যাট্রিক্সে এন্ট্রিতে থাকা মান [I, j] মুদ্রা j এর পরিমাণকে প্রতিনিধিত্ব করে যা আমরা মুদ্রা i এর একক দিয়ে কিনতে পারি। এখন বিবেচনা করুন মুদ্রা 0 হল USD, 1 হল CAD এবং 2 হল EUR। আমরা নিম্নলিখিত -

দিয়ে একটি সালিশ করতে পারি
  • 0.65 EUR

    এ 1 CAD বিক্রি করুন
  • 0.65 ইউরো 0.7865 USD (0.65 * 1.21) এ বিক্রি করুন

  • 0.7865 USD বিক্রি করুন 1.00672 CAD (0.65 * 1.21 * 1.28)

সুতরাং, যদি ইনপুট মত হয়

1 1.28 0.82
0.78 1 0.65
1.21 1.55 1

তাহলে আউটপুট হবে True।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • আমি 0 থেকে ম্যাট্রিক্সের আকারের মধ্যে, কর

    • j এর জন্য রেঞ্জ 0 থেকে ম্যাট্রিক্সের আকার[0], করুন

      • ম্যাট্রিক্স[i,j] :=−log বেস 2 এর মান (ম্যাট্রিক্স[I, j])

  • v :=ম্যাট্রিক্সের সারি গণনা

  • k এর জন্য 0 থেকে v রেঞ্জে, করুন

    • 0 থেকে v রেঞ্জের জন্য, করুন

      • 0 থেকে v রেঞ্জের মধ্যে j এর জন্য, করুন

        • ম্যাট্রিক্স[I, j] :=ম্যাট্রিক্স[I, j] এবং (ম্যাট্রিক্স[I, k] + ম্যাট্রিক্স[k,j])

  • ম্যাট্রিক্সের কর্ণের যেকোন আইটেম অ-শূন্য হলে True ফেরত দিন।

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

পাইথন

import math
class Solution:
   def solve(self, matrix):
      for i in range(len(matrix)):
         for j in range(len(matrix[0])):
            matrix[i][j] = −math.log(matrix[i][j], 2)
   v = len(matrix)
   for k in range(0, v):
      for i in range(0, v):
         for j in range(0, v):
            matrix[i][j] = min(matrix[i][j], matrix[i][k] + matrix[k][j])
   return any(matrix[i][i] < 0 for i in range(len(matrix)))
ob = Solution()
matrix = [
   [1, 1.28, 0.82],
   [0.78, 1, 0.65],
   [1.21, 1.55, 1]
]
print(ob.solve(matrix))

ইনপুট

matrix = [
   [1, 1.28, 0.82],
   [0.78, 1, 0.65],
   [1.21, 1.55, 1]
]

আউটপুট

True

  1. পাইথনে বহুভুজের পরিধি খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে একটি প্রদত্ত গ্রাফে বিশেষ ধরনের সাবগ্রাফ খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে Prim-এর অ্যালগরিদম ব্যবহার করে একটি MST খুঁজে বের করার প্রোগ্রাম

  4. পাইথনের প্রত্যেকের দ্বারা গ্রাফটি অতিক্রম করা যায় কিনা তা খুঁজে বের করার প্রোগ্রাম