একটি বম ডিফিউজ করতে হবে। একটি সার্কুলার অ্যারে code (দৈর্ঘ্য n) এবং একটি কী k দেওয়া আছে। প্রতিটি সংখ্যা একসাথে রিপ্লেস করতে হবে:
k > 0: i-তম সংখ্যা = পরবর্তী kটি সংখ্যার যোগফল
k < 0: i-তম সংখ্যা = পূর্বের |k|টি সংখ্যার যোগফল
k = 0: i-তম সংখ্যা = 0
সার্কুলার মানে code[n-1]-এর পর code[0], code[0]-এর আগে code[n-1]। ডিক্রিপ্টেড কোড রিটার্ন করুন।
ইনপুট: code = [8,2,3,5], k = 3 → আউটপুট: [10, 16, 15, 13]।
সমাধানের ধাপসমূহ
decode := []
প্রতিটি i = 0 থেকে n-1:
- যদি k > 0: sum = next k elements (mod n)
- যদি k == 0: sum = 0
- যদি k < 0: sum = previous |k| elements (mod n)
- decode.append(sum)
decode রিটার্ন করুন
উদাহরণ (Python)
def solve(code, k):
decode = []
n = len(code)
for i in range(n):
if k > 0:
s = 0
j = i + 1
m = k
while m:
s += code[j % n]
m -= 1
j += 1
decode.append(s)
elif k == 0:
decode.append(0)
else:
s = 0
j = i - 1
m = k
while m:
s += code[j % n]
m += 1
j -= 1
decode.append(s)
return decode
code = [8, 2, 3, 5]
k = 3
print(solve(code, k))
ইনপুট
[8,2,3,5], 3
আউটপুট
[10, 16, 15, 13]