लैटिन वर्ग एक मैट्रिक्स है जिसमें एक विशेष पैटर्न होता है। आइए पैटर्न की जांच करने के लिए विभिन्न उदाहरण देखें।
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 मान n तक न पहुंच जाए।
- पुनरावृत्त चर यानी first_half_start को प्रिंट करें।
- एक लूप लिखें जो 1 से first_half_end तक पुनरावृत्त हो।
- पुनरावर्ती चर प्रिंट करें।
- फर्स्ट_हाफ_एंड के मान को 1 से घटाएं।
- अगली पंक्ति ले जाएँ।
कार्यान्वयन
C++ में उपरोक्त एल्गोरिथम का कार्यान्वयन निम्नलिखित है
#include <bits/stdc++.h> using namespace std; void generateLatinSquare(int n) { int first_half_end = n + 1; for (int i = 1; i <= n; i++) { int first_half_start = first_half_end; while (first_half_start <= n) { cout << first_half_start << " "; first_half_start++; } for (int second_half_start = 1; second_half_start < first_half_end; second_half_start++){ cout << second_half_start << " "; } first_half_end--; cout << endl; } cout << endl; } int main(void) { generateLatinSquare(2); generateLatinSquare(3); generateLatinSquare(4); return 0; }
आउटपुट
यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्न परिणाम प्राप्त होंगे।
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