Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm hiểu kinh doanh chênh lệch tiền tệ bằng Python

Giả sử chúng ta có một N x N bảng tỷ giá hối đoái tiền tệ. Chúng ta phải kiểm tra xem có một số chuỗi giao dịch mà chúng ta có thể thực hiện hay không. Bây giờ bắt đầu với một số lượng A của bất kỳ loại tiền nào, chúng ta có thể kết thúc với một số lượng lớn hơn A của loại tiền đó. Không có chi phí giao dịch và chúng tôi cũng có thể giao dịch số lượng nhỏ.

Chương trình tìm hiểu kinh doanh chênh lệch tiền tệ bằng Python

Giá trị tại mục [I, j] trong ma trận này đại diện cho số lượng tiền tệ j mà chúng ta có thể mua với một đơn vị tiền tệ i. Bây giờ hãy coi tiền tệ 0 là USD, 1 là CAD và 2 là EUR. Chúng tôi có thể thực hiện chuyên đăng quảng cáo với những điều sau đây -

  • Bán 1 CAD với giá 0,65 EUR

  • Bán 0,65 EUR với giá 0,7865 USD (0,65 * 1,21)

  • Bán 0,7865 USD với giá 1,00672 CAD (0,65 * 1,21 * 1,28)

Vì vậy, nếu đầu vào giống như

1 1,28 0,82
0,78 1 0,65
1,21 1,55 1

thì đầu ra sẽ là True.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • đối với tôi trong phạm vi từ 0 đến kích thước của ma trận, thực hiện

    • đối với j trong phạm vi 0 đến kích thước của ma trận [0], thực hiện

      • ma trận [i, j]:=−log giá trị cơ số 2 của (ma trận [I, j])

  • v:=số hàng của ma trận

  • đối với k trong phạm vi từ 0 đến v, thực hiện

    • đối với tôi trong phạm vi từ 0 đến v, thực hiện

      • đối với j trong phạm vi từ 0 đến v, thực hiện

        • ma trận [I, j]:=tối thiểu của ma trận [I, j] và (ma trận [I, k] + ma trận [k, j])

  • trả về True nếu bất kỳ mục nào trong đường chéo của ma trận khác 0.

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Python

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))

Đầu vào

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

Đầu ra

True