কম্পিউটার

পাইথনে বোমা নিষ্ক্রিয় করতে কোড ডিক্রিপ্ট করার প্রোগ্রাম


ধরুন একটি বোমা আছে যা আপনি নিষ্ক্রিয় করতে যাচ্ছেন, এবং আপনার সময় ফুরিয়ে আসছে! আপনার n দৈর্ঘ্যের একটি বৃত্তাকার অ্যারে কোড আছে এবং একটি কী k আছে। এখন কোড ডিক্রিপ্ট করতে, আপনাকে অবশ্যই প্রতিটি নম্বর প্রতিস্থাপন করতে হবে। সমস্ত সংখ্যা একযোগে প্রতিস্থাপিত হয়. কিছু নিয়ম আছে -

  • k> 0 হলে ith সংখ্যাকে পরবর্তী k সংখ্যার যোগফল দিয়ে প্রতিস্থাপন করুন।

  • যদি k <0 হয় তাহলে ith সংখ্যাকে পূর্ববর্তী k সংখ্যার যোগফল দিয়ে প্রতিস্থাপন করুন।

  • k =0 হলে ith সংখ্যাকে 0 দিয়ে প্রতিস্থাপন করুন।

এখানে কোডটি বৃত্তাকার, তাই কোড[n-1]-এর পরবর্তী উপাদান হল কোড[0], এবং কোড[0]-এর আগের উপাদান হল কোড[n-1]। অবশেষে আমাদের ডিক্রিপ্ট করা কোড ফেরত দিতে হবে।

সুতরাং, যদি ইনপুট কোড =[8,2,3,5], k =3 এর মত হয়, তাহলে আউটপুট হবে [10, 16, 15, 13], কারণ, প্রতিটি কী-এর জন্য আমরা পরবর্তী তিনটি উপাদান যোগফল দিয়ে প্রতিস্থাপন করি। তাই কোড[0] হবে 10, কোড[1] হবে 16, কোড[2] হবে 15 এবং কোড[3] হবে 13।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব &mius;

  • ডিকোড :=একটি নতুন তালিকা

  • i এর জন্য 0 থেকে কোডের আকার - 1, করুন

    • যদি k> 0 হয়, তাহলে

      • যোগফল :=0

      • j :=i+1

      • m :=k

      • যখন m অ-শূন্য, কর

        • যোগফল :=যোগফল + কোড[জে মোড দৈর্ঘ্য কোড]

        • m :=m - 1

        • j :=j + 1

      • ডিকোডের শেষে যোগফল যোগ করুন

    • অন্যথায় যখন k 0 এর সমান হয়, তখন

      • ডিকোডের শেষে 0 ঢোকান

    • অন্যথায়,

      • যোগফল :=0

      • j :=i-1

      • m :=k

      • যখন m অ-শূন্য, কর

        • যোগফল :=যোগফল + কোড[জে মোড দৈর্ঘ্য কোড]

        • m :=m + 1

        • j :=j - 1

      • ডিকোডের শেষে যোগফল যোগ করুন

  • রিটার্ন ডিকোড

উদাহরণ (পাইথন)

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

def solve(code, k):
   decode = []
   for i in range(len(code)):
      if k > 0:
         sum = 0
         j = i+1
         m = k
         while(m):
            sum+=code[j%len(code)]
            m-=1
            j+=1
         decode.append(sum)

      elif k == 0:
         decode.append(0)

      else:
         sum = 0
         j = i-1
         m = k
         while(m):
            sum+=code[j%len(code)]
            m+=1
            j-=1
         decode.append(sum)

   return decode

code = [8,2,3,5]
k = 3
print(solve(code, k))

ইনপুট

[8,2,3,5], 3

আউটপুট

[10, 16, 15, 13]

  1. পাইথনে নির্দেশিত গ্রাফটি বিপরীত করার জন্য প্রোগ্রাম

  2. পাইথন প্রোগ্রামে অ্যারের সমষ্টি খুঁজুন

  3. একটি ম্যাট্রিক্সের স্থানান্তর খুঁজে পেতে পাইথন প্রোগ্রাম

  4. অ্যারের যোগফল খুঁজে পেতে পাইথন প্রোগ্রাম