কম্পিউটার

C++ এ র্যান্ডম ফ্লিপ ম্যাট্রিক্স


ধরুন আমাদের একটি বাইনারি ম্যাট্রিক্স আছে যেখানে সারির n_rows সংখ্যা এবং কলামের n_cols সংখ্যা রয়েছে। এখানে সমস্ত মান প্রাথমিকভাবে 0। আমাদের একটি ফাংশন flip() সংজ্ঞায়িত করতে হবে যা এলোমেলোভাবে একটি 0 মান পছন্দ করে, এটি 1 এ পরিবর্তন করে এবং তারপর সেই মানের অবস্থান [row.id, col.id] প্রদান করে। এছাড়াও, আমাদের অন্য একটি ফাংশন রিসেট() লিখতে হবে যা সমস্ত মান 0-এ সেট করে। আমাদের সিস্টেমের Math.random()-এ কলের সংখ্যা কমিয়ে আনার চেষ্টা করতে হবে এবং সময় ও স্থান জটিলতা অপ্টিমাইজ করতে হবে।

যদি আমাদের ক্রম 2x3 এর ম্যাট্রিক্স থাকে এবং আমরা চারবার ফ্লিপ বলি, তাহলে ফলাফল হবে [0,1], [1,2], [1,0], [1,1]।

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

  • গর্ত নামে একটি মানচিত্র তৈরি করুন,
  • ইনিশিয়ালাইজারে, নিম্নলিখিতগুলি করুন
  • র্যান্ডম নম্বর জেনারেটর শুরু করুন, n :=সারি সংখ্যা, m :=কলের সংখ্যা,
  • আকার :=n * m
  • ফ্লিপ পদ্ধতিতে, নিম্নলিখিতগুলি করুন -
  • id :=র্যান্ডম সংখ্যা মোড সাইজ, সাইজ 1 কমিয়ে দিন, rid :=id
  • যদি id ছিদ্রে থাকে, তাহলে id :=holes[id]
  • গর্ত[রিড] :=গর্ত [আকার] যখন গর্তের আকার অন্যথায় আকারে
  • একটি জোড়া ফেরত দিন (id / m, id mod m)
  • রিসেট পদ্ধতিতে, করুন
  • আকার :=n x m, এবং গর্তগুলি পরিষ্কার করুন

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

উদাহরণ

#include নেমস্পেস ব্যবহার করে std;void print_vector(vector v){ cout <<"["; for(int i =0; i holes; int n; int m; int আকার; সমাধান(int n_rows, int n_cols) { srand(time(NULL)); n =n_সারি; m =n_cols; আকার =n * m; } ভেক্টর flip() { int id =rand() % সাইজ; আকার--; int rid =id; if(holes.count(id)){ id =holes[id]; } holes[rid] =holes.count(size)? গর্ত [আকার] :আকার; রিটার্ন {id / m, id % m}; } void reset() { size =n * m; holes.clear(); }};প্রধান(){সমাধান ob(2,2); print_vector(ob.flip()); print_vector(ob.flip()); print_vector(ob.flip()); print_vector(ob.flip());}

ইনপুট

2,2 ব্যবহার করে কনস্ট্রাক্টর শুরু করুন এবং চারবার ফ্লিপ কল করুন

আউটপুট

<প্রে>[1, 1, ][0, 0, ][1, 0, ][0, 1, ]
  1. C++ এ ম্যাট্রিক্সের সারি-ভিত্তিক বনাম কলাম-ভিত্তিক ট্রাভার্সাল

  2. C++ তে বিসিমেট্রিক ম্যাট্রিক্স?

  3. C++ এ একটি বুলিয়ান ম্যাট্রিক্স প্রশ্ন?

  4. C++ এ এলোমেলো সংখ্যা তৈরি