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

โปรแกรมหาอัตราการแปลงของสองสกุลเงินใน Python


สมมติว่าเราได้รับสามอาร์เรย์ curr_a, curr_b และ conv_rate อาร์เรย์แรกมีชื่อสกุลเงินบางชื่อ เช่นเดียวกับอาร์เรย์ที่สอง และอาร์เรย์ conv_rate มีอัตราการแปลงภายในรายการ curr_a[i] ถึง cuur_b[i] รายการของ conv_rate[i] คืออัตรา Conversion ระหว่าง 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

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • temp :=แผนที่ใหม่ที่มี 0 เป็นค่าเริ่มต้น
  • อุณหภูมิ[src] :=1
  • ผม :=0
  • p :=จริง
  • ในขณะที่ p และ i <=ขนาดของอุณหภูมิ ให้ทำ
    • p :=ผิด
    • สำหรับแต่ละ x ใน curr_a, y ใน curr_b และ z ใน conv_rate ให้ทำ
      • ถ้า temp[x] * z> temp[y] ไม่ใช่ศูนย์ ดังนั้น
        • temp[y] :=temp[x] * z
        • p :=จริง
      • ผม :=ผม + 1
  • ถ้าฉัน <=ขนาดอุณหภูมิ แล้ว
    • อุณหภูมิกลับ[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