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

পাইথনে ৩টি শীর্ষবিন্দু দেওয়া থাকলে রেক্ট্যাঙ্গেলের ৪র্থ শীর্ষবিন্দুর কোঅর্ডিনেট

একটি Q x P গ্রিড দেওয়া আছে যেটে ঠিক ৩টি '*' (অ্যাস্ট্রিস্ক) আছে, বাকি সব '.'। '*' গুলো একটি রেক্ট্যাঙ্গেলের ৩টি শীর্ষবিন্দু (vertex)। বাকি ১টি শীর্ষবিন্দুর কোঅর্ডিনেট (1-based indexing) বের করতে হবে।

উদাহরণ

ইনপুট: grid = [".*.", "...", "*.*"]

আউটপুট: (1, 3)

সমাধানের পদ্ধতি

  1. প্রতিটি সারি (row) ও কলাম (col)-এ কতগুলো '*' আছে তা গুনুন।
  2. রেক্ট্যাঙ্গেলের দুটি শীর্ষবিন্দু একই সারি/কলামে থাকবে।
  3. যে সারিতে ১টি '*' আছে, সেটি হলো missing vertex-এর সারি।
  4. যে কলামে ১টি '*' আছে, সেটি হলো missing vertex-এর কলাম।
  5. 1-based indexing-এ রিটার্ন করুন।

পাইথন কোড


def get_missing_vertex(grid):
    p = len(grid)
    q = len(grid[0])
    row = dict.fromkeys(range(p), 0)
    col = dict.fromkeys(range(q), 0)
    
    for i in range(p):
        for j in range(q):
            if grid[i][j] == '*':
                row[i] += 1
                col[j] += 1
    
    x_coord = y_coord = 0
    for k, v in row.items():
        if v == 1:
            x_coord = k
    for k, v in col.items():
        if v == 1:
            y_coord = k
    
    return (x_coord + 1, y_coord + 1)

grid = [".*.", "...", "*.*"]
print(get_missing_vertex(grid))

ইনপুট

[".*.", "...", "*.*"]

আউটপুট

(1, 3)
  1. পাইথনে দিয়ে k সংখ্যক یونিক ক্যারেক্টার সম্বলিত দীর্ঘতম সাবস্ট্রিং খুঁজে বের করা

  2. পাইথনে কলাম সওয়াপ (swap) অনুমত থাকলে ১-র সবচেয়ে বড় রেক্ট্যাঙ্গেল খুঁজে বের করা

  3. পাইথনে অ্যারের সব ভালো ইনডেক্স খুঁজে বের করা

  4. পাইথনে নেস্টেড লিস্ট থেকে সর্বোচ্চ ভ্যালু 가진 সাবলিস্ট বের করা (Find sublist with maximum value)