এই সমস্যায়, আমাদের একটি স্ট্রিং দেওয়া হয়েছে যা অক্ষরের একটি ক্রম। এবং আমাদেরকে জিগ-জ্যাগ প্যাটার্নের দৈর্ঘ্য দেওয়া হয়েছে এবং আমাদের এই জিগ-জ্যাগ স্ট্রিংটির সংযোজন স্ট্রিংটি n সারিতে প্রিন্ট করতে হবে।
ধারণাটি আরও ভালভাবে বোঝার জন্য আসুন কয়েকটি উদাহরণ দেখি,
উদাহরণ
Input : string = ‘STUVWXYZ’ n = 2. Output : SUWYTVXZ
ব্যাখ্যা − একটি 2-সারির প্যাটার্নের জন্য স্ট্রিংয়ের জন্য জিগ-জ্যাগ প্যাটার্ন হল −
S U W Y T V X Z
এই জিগ-জ্যাগ প্যাটার্নের সংমিশ্রণ হল - SUWYTVXZ৷
উদাহরণ
Input : string = ABCDEFGH n = 3 Output: ADGBEHCF
ব্যাখ্যা − তিনটি সারি সহ স্ট্রিংয়ের জন্য জিগজ্যাগ প্যাটার্ন হল −
A E B D F H C G
জিগজ্যাগ প্যাটার্নের সংমিশ্রণ হল - AEBDFHCG
এখন যেহেতু আমরা সমস্যাটি জানি, আসুন এটির জন্য একটি সমাধান ডিজাইন করি। মৃত্যু n না হওয়া পর্যন্ত আমরা এখানে স্ট্রিং এর নিচে এবং পরবর্তী উপাদান প্রচার করব। এবং তারপর যথাযথভাবে উঠুন যতক্ষণ না মৃত্যু শূন্য হয়ে যায় এবং তারপরে আবার নেমে যান। এবং তারপর সমাধানের জন্য প্রতিটি সারি প্রিন্ট করুন।
এই ধারণার উপর ভিত্তি করে আসুন একটি অ্যালগরিদম তৈরি করি যা সমস্যার সমাধান করতে পারে,
অ্যালগরিদম
Step 1 : Take an array of string of size n, string arr[n], row for current row no. i.e. string in the array and the direction as 1(indicating downward traversal). Step 2 : Traverse the string and follow step 3 - 7. For every character of the string. Step 3 : Append the character to the current string in the array based on the value of row. Step 4 : If row = n-1, direction = 1. Step 5 : if row = 0, direction = -1. Step 6 : if direction = 1, row++ . Step 7 : else row--. Step 8 : print all string on the array from 0 to n-1 in sequence.
উদাহরণ
এখন এই অ্যালগরিদমের উপর ভিত্তি করে আমাদের সমাধান বাস্তবায়ন করার জন্য একটি প্রোগ্রাম তৈরি করুন −
#include<bits/stdc++.h> using namespace std; void ZigZagConcatenationString(string str, int n){ if (n == 1){ cout << str; return; } int len = str.length(); string arr[n]; int row = 0; int direction = 1; bool down; for (int i = 0; i < len; ++i){ arr[row].push_back(str[i]); if (row == n-1) direction = -1; else if (row == 0) direction = 1; (direction == 1)? (row++): (row--); } for (int i = 0; i < n; ++i) cout << arr[i]; } int main(){ string str = "ABCDEFGH"; int n = 3; ZigZagConcatenationString(str, n); return 0; }
আউটপুট
AEBDFHCG