কম্পিউটার

পাইথন ব্যবহার করে একটি বৃত্তাকার ট্র্যাকে সর্বাধিক পরিদর্শন করা সেক্টর খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের একটি সংখ্যা n এবং একটি অ্যারে আছে যাকে রাউন্ড বলে। আমাদের একটি বৃত্তাকার ট্র্যাক রয়েছে যা 1 থেকে n পর্যন্ত লেবেলযুক্ত বিভিন্ন সেক্টর নিয়ে গঠিত। এখন বিবেচনা করুন এই ট্র্যাকে একটি রেস অনুষ্ঠিত হবে, রেসটি মি বিভিন্ন রাউন্ড নিয়ে গঠিত। ith রাউন্ডটি সেক্টর রাউন্ডে শুরু হয় [i - 1] এবং শেষ হয় সেক্টর রাউন্ডে [i]। উদাহরণস্বরূপ, যদি রাউন্ড 1 সেক্টর রাউন্ডে শুরু হয়[0] এবং শেষ হয় সেক্টর রাউন্ডে[1]। তাই আমাদের সবচেয়ে বেশি পরিদর্শন করা সেক্টরগুলিকে ক্রমবর্ধমান ক্রমে বাছাই করতে হবে। (ট্র্যাক নম্বরগুলি ঘড়ির কাঁটার বিপরীত দিকে সেক্টর নম্বরের ক্রমবর্ধমান ক্রম অনুসারে)

সুতরাং, যদি ইনপুটটি n =4 রাউন্ড =[1,3,1,2] এর মত হয়, তাহলে আউটপুট হবে [1, 2]

পাইথন ব্যবহার করে একটি বৃত্তাকার ট্র্যাকে সর্বাধিক পরিদর্শন করা সেক্টর খুঁজে বের করার প্রোগ্রাম

কারণ রেসটি সেক্টর 1 থেকে শুরু হয়। পরিদর্শন করা সেক্টরগুলির ক্রম নিম্নরূপ:[1,2,3 (প্রথম রাউন্ডের শেষ), 4,1 (দ্বিতীয় রাউন্ডের শেষ), 2 (3য় রাউন্ডের শেষ)]। এখানে 1 এবং 2 সেক্টর দুটি দুবার পরিদর্শন করা হয়েছে এবং তারা সবচেয়ে বেশি পরিদর্শন করা সেক্টর। এবং সেক্টর 3 এবং 4 শুধুমাত্র একবার পরিদর্শন করা হয়।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • d :=একটি নতুন মানচিত্র

  • 1 থেকে n রেঞ্জে j এর জন্য, করুন

    • d[j] :=0

  • d[রাউন্ডস[0]] :=1

  • আমি রেঞ্জ 1 থেকে রাউন্ডের আকার - 1 এর জন্য, করুন

    • যদি রাউন্ডস[i]> রাউন্ডস[i-1] হয়, তাহলে

      • রেঞ্জ রাউন্ডে j এর জন্য[i-1]+1 থেকে রাউন্ড[i]+1, করুন

        • d[j] :=d[j] + 1

    • অন্যথায়,

      • রেঞ্জ রাউন্ডে j এর জন্য[i-1]+1 থেকে n, করুন

        • d[j] :=d[j] + 1

      • 1 থেকে রাউন্ডের মধ্যে j এর জন্য [i], করুন

        • d[j] :=d[j] + 1

  • curr :=d[রাউন্ডস[0]]

  • আউট :=[রাউন্ডস[0]]

  • 1 থেকে n রেঞ্জের জন্য, করুন

    • যদি আমি রাউন্ডস[0] এর মত না হয়, তাহলে

      • যদি d[i]> curr, তাহলে

        • curr :=d[i]

        • আউট :=[i]

      • অন্যথায় যখন d[i] curr এর মত হয়, তখন

  • সাজানোর পরে ফিরে আসুন

উদাহরণ (পাইথন)

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

def solve(n, rounds):d ={} রেঞ্জে j এর জন্য(1,n+1):d[j] =0 d[rounds[0]] =1 i এর রেঞ্জে (1, len) (রাউন্ডস)):যদি রাউন্ডস[i]> রাউন্ডস[i-1]:রেঞ্জে j এর জন্য(রাউন্ডস[i-1]+1, রাউন্ডস[i]+1):d[j] +=1 অন্য:এর জন্য j রেঞ্জে (রাউন্ডস[i-1]+1, n+1):d[j] +=1 রেঞ্জে j এর জন্য(1, রাউন্ডস[i]+1):d[j] +=1 curr =d [রাউন্ডস[0]] আউট =[রাউন্ডস[0]] রেঞ্জে i এর জন্য (1, n+1):যদি i !=রাউন্ডস[0]:যদি d[i]> curr:curr =d[i] আউট =[i] elif d[i] ==curr:out =out + [i] return(sorted(out))n =4rounds =[1,3,1,2]print(solve(n, rounds)) 

ইনপুট

4, [1,3,1,2]

আউটপুট

[1, 2]

  1. আয়তক্ষেত্রের যোগফল খুঁজে বের করার প্রোগ্রাম যার যোগফল পাইথনে সর্বাধিক k

  2. পাইথনে k বৃদ্ধির পরে সর্বাধিক সংঘটিত সংখ্যা খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে একটি বৃত্তাকার তালিকায় অ-সংলগ্ন উপাদানগুলির যোগফল খুঁজে বের করার জন্য প্রোগ্রাম

  4. পাইথনে একটি পরিসরে নোডের সংখ্যা খুঁজে বের করার প্রোগ্রাম