কম্পিউটার টিউটোরিয়াল

পাইথনে সিটি ব্লক ভিজিট করার মোট দূরত্ব বের করুন


मान लीजिए हमारे पास अद्वितीय स्ट्रिंग्स का एक मैट्रिक्स है जो सिटी ब्लॉक्स को दर्शाता है, और एक और स्ट्रिंग्स की सूची है जिसमें विजिट करने वाले ब्लॉक्स हैं। यदि हम matrix[0][0] ब्लॉक पर हैं, तो हर ब्लॉक को क्रम से विजिट करने के लिए आवश्यक कुल मैनहट्टन दूरी ढूंढें।

यदि इनपुट इस तरह है:

QBC
DEZ
GGi

Block = [H,B,C]

तो आउटपुट 6 होगा क्योंकि "h" 2 ब्लॉक नीचे (दक्षिण) और 1 ब्लॉक दाएं (पूर्व), "b" 2 ब्लॉक ऊपर (उत्तर), "c" 1 ब्लॉक दाएं (पूर्व)।

इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:

  • coords := एक मैप जिसकी कुंजी 'start' और मान (0, 0) है
  • mat में प्रत्येक पंक्ति के लिए, करें:
    • mat में प्रत्येक कॉलम के लिए, करें:
      • (row,col) को coords[mat[row][col]] में डालें
  • dist := 0
  • blocks को शुरुआत में 'start' जोड़कर अपडेट करें
  • i को 0 से blocks के आकार -1 तक के लिए, करें:
    • c1 := coords[blocks[i]]
    • c2 := coords[blocks[i+1]]
    • d := |c1[0]-c2[0]| + |c1[1]-c2[1]|
    • dist := dist + d
  • dist लौटाएं

बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:

उदाहरण

class Solution:
    def solve(self, mat, blocks):
        coords = {'start': (0,0)}
        for row in range(len(mat)):
            for col in range(len(mat[row])):
                coords[mat[row][col]] = (row,col)
        dist = 0
        blocks = ['start']+blocks
        for i in range(len(blocks)-1):
            c1 = coords[blocks[i]]
            c2 = coords[blocks[i+1]]
            d = abs(c1[0]-c2[0]) + abs(c1[1]-c2[1])
            dist += d
        return dist

ob = Solution()
inp = [["q", "b", "c"], ["d", "e", "z"], ["g", "h", "i"]]
blk = ["h", "b", "c"]
print(ob.solve(inp, blk))

इनपुट

[["q", "b", "c"],["d", "e", "z"],["g", "h", "i"]]

आउटपुट

6

  1. C++-এ মোট হ্যামিং দূরত্ব (Total Hamming Distance) গণনা

  2. পাইথনে দুটি রেক্ট্যাঙ্গেল দ্বারা আচ্ছাদিত মোট এলিয়া বের করা

  3. পাইথন প্রোগ্রাম: দেয়া স্ট্রিং-এ শব্দ গণনা (Count Words in a Given String)

  4. পাইথনে Minkowski দূরত্ব নির্ণয়