সমস্যা
একটি ম্যাজিক্যাল স্ট্রিং str শুধু '1' এবং '2' দিয়ে গঠিত এবং নিচের নিয়মগুলো মানে:
স্ট্রিংটি ম্যাজিক্যাল কারণ স্ট্রিংয়ের সংলগ্ন '1' ও '2'-এর ঘটনার সংখ্যা কনক্যাট করলে স্ট্রিংটি নিজে আবার পাওয়া যায়।
স্ট্রিংয়ের প্রথম কিছু এলিমেন্ট:
str = "1221121221221121122......"
যদি সংলগ্ন '1' ও '2' গোষ্ঠীভাগ করি:
1 22 11 2 1 22 1 22 11 2 11 22 ......
এবং প্রতিটি গোষ্ঠীর '1' বা '2'-এর ঘটনা:
1 2 2 1 1 2 1 2 2 1 2 2 ......
দেখা যাচ্ছে ঘটনার সিকোয়েন্সটি স্ট্রিংটি নিজেই।
আমাদের একটি ইন্টিজার num ইনপুট দেওয়া আছে, আমাদের ম্যাজিক্যাল স্ট্রিংয়ের প্রথম num সংখ্যক ক্যারেক্টারে কতগুলো '1' আছে সেটি রিটার্ন করতে হবে।
উদাহরণ:
ইনপুট হলে:
const num = 6;
আউটপুট হবে:
const output = 3;
আউটপুট ব্যাখ্যা:
ম্যাজিক্যাল স্ট্রিংয়ের প্রথম ৬ এলিমেন্ট: "12211" এ তিনটি '1' আছে।
উদাহরণ
কোডটি নিচের মতো:
const num = 6; const magicalString = (num = 1) => { let ind = 12; let str = '1221121221221121122'; while(str.length < num){ const end = str.substring(str.length - 1) === '2' ? '1' : '2'; str = parseInt(str.substring(ind, ind + 1)) === 2 ? str + end + end : str + end; ind++; }; return (str.substring(0, num).match(/1/g)||[]).length; }; console.log(magicalString(num)); আউটপুট
কনসোলে আউটপুট:
3