Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมหาอัตราแลกเปลี่ยนระหว่างสองสกุลเงินใน Python

สมมติว่าเราได้รับอาร์เรย์ 3 อาร์เรย์ ได้แก่ curr_a, curr_b, และ conv_rate อาร์เรย์แรกและอาร์เรย์ที่สองมีชื่อสกุลเงิน อาร์เรย์ conv_rate มีอัตราแลกเปลี่ยนจาก curr_a[i] ไป curr_b[i] กำหนดสกุลเงินต้นทาง src และปลายทาง dest เราต้องหาอัตราแลกเปลี่ยนจาก src ไป dest คืนค่าผลลัพธ์ หากไม่สามารถทำได้คืนค่า 0

เช่น ถ้าอินพุตคือ src = "INR", dest = "JPY", curr_a = ["INR", "GBP", "EUR"], curr_b = ["GBP", "EUR", "JPY"], conv_rate = [0.009, 1.17, 129.67] ผลลัพธ์จะเป็น 1.3654250999999997

ขั้นตอนการแก้ปัญหา

  1. temp := แมปใหม่ค่าเริ่มต้น 0, temp[src] := 1
  2. i := 0, p := True
  3. ในขณะที่ p และ i <= ขนาดของ temp:
    • p := False
    • สำหรับแต่ละ x, y, z ใน zip(curr_a, curr_b, conv_rate):
      • ถ้า temp[x] * z > temp[y] และไม่เป็นศูนย์:
        • temp[y] := temp[x] * z
        • p := True
    • i := i + 1
  4. ถ้า i <= ขนาดของ temp คืนค่า temp[dest] มิฉะนั้น -1

ตัวอย่างการใช้งาน

from collections import defaultdict

def solve(src, dest, curr_a, curr_b, conv_rate):
    temp = defaultdict(int)
    temp[src] = 1
    i = 0
    p = True
    while p and i <= len(temp):
        p = False
        for x, y, z in zip(curr_a, curr_b, conv_rate):
            if temp[x] * z > temp[y]:
                temp[y] = temp[x] * z
                p = True
        i += 1
    return temp[dest] if i <= len(temp) else -1

print(solve("INR", "JPY", ["INR", "GBP", "EUR"], ["GBP", "EUR", "JPY"], [0.009, 1.17, 129.67]))

อินพุต

"INR", "JPY", ["INR", "GBP", "EUR"], ["GBP", "EUR", "JPY"], [0.009, 1.17, 129.67]

เอาต์พุต

1.3654251