ল্যাটিন স্কোয়ার হলো একটি ম্যাট্রিক্স যাতে একটি বিশেষ প্যাটার্ন থাকে। প্যাটার্ন পরীক্ষা করার জন্য বিভিন্ন উদাহরণ দেখি।
1 2 2 1 1 2 3 3 1 2 2 3 1 1 2 3 4 4 1 2 3 3 4 1 2 2 3 4 1
আপনি যে ল্যাটিন স্কোয়ার পাবেন সেটি আলাদা আকারের হতে পারে যেমনটি উপরের উদাহরণগুলতে দেখা যাচ্ছে। কিন্তু, আপনি যদি সাবধানে উপরের ম্যাট্রিক্সগুলোর প্যাটার্ন পর্যবেক্ষণ করেন, তাহলে আপনি খুঁজে পাবেন যে পिछলে রোয়ের শেষ সংখ্যা পরের রোয়ের প্রথম এলিমেন্ট হিসেবে আসে।
এটিই ল্যাটিন স্কোয়ারে লুকানো প্যাটার্ন। ইনপুট n-এর জন্য উপরের ম্যাট্রিক্স জেনারেট করার প্রোগ্রাম লিখতে হবে।
অ্যালগরিদম
- n কে আপনার পছন্দের যেকোনো সংখ্যা দিয়ে ইনিশিয়ালাইজ করুন।
- n + 1 মান সহ একটি সংখ্যা ইনিশিয়ালাইজ করুন এবং এটিকে first_half_end বলুন।
- একটি লুপ লিখুন যা 1 থেকে n পর্যন্ত উভয় ইনক্লুসিভ ইটারেট করবে।
- first_half_end-এর মানকে first_half_start নামে একটি ভেরিয়েবলে অ্যাসাইন করুন।
- একটি লুপ লিখুন যতক্ষণ না first_half_start n-এর মানের কাছে পৌঁছায়।
- ইটারেটিং ভেরিয়েবল অর্থাৎ first_half_start প্রিন্ট করুন।
- একটি লুপ লিখুন যা 1 থেকে first_half_end পর্যন্ত ইটারেট করবে।
- ইটারেটিং ভেরিয়েবল প্রিন্ট করুন।
- first_half_end-এর মান ১ কমানো।
- পরবর্তী রোয়ে যান।
বাস্তবায়ন
পাইথনে উপরের অ্যালগরিদমের বাস্তবায়ন নিচে দেওয়া হলো
def generateLatinSquare(n): first_half_end = n + 1 for i in range(1, n + 1): first_half_start = first_half_end while (first_half_start <= n): print(first_half_start, end=" ") first_half_start += 1 for second_half_start in range(1, first_half_end): print(second_half_start, end=" ") first_half_end -= 1 print() print() if __name__ == "__main__": generateLatinSquare(2) generateLatinSquare(3) generateLatinSquare(4)
আউটপুট
আপনি যদি উপরের কোড চালান, তাহলে আপনি নিচের ফলাফল পাবেন।
1 2 2 1 1 2 3 3 1 2 2 3 1 1 2 3 4 4 1 2 3 3 4 1 2 2 3 4 1