علی که با کمک شما توانست مکعبش را رنگ کند، به این فکر رفته که یک کلاس طراحی کند تا کمک کند امنیت بیشتری داشته باشد. برای همین از شما می‌خواهد تا کلاسی با جزییات زیر برایش طراحی کنید.

حال شما باید متدهای خواسته‌شده از کلاس Security را به صورتی که در ادامه توضیح داده‌شده، تکمیل کنید.

class Security:
    def secure(self, info):
        pass

    def is_social_account_info(self, param):
        pass

    def encrypt(self, s):
        pass
Python
security.py

متد encrypt(self, s)

یک رشته به عنوان ورودی این متد داده می‌شود و معادل رمزنگاری‌شده آن در خروجی برگردانده می‌شود.

با توجه به توضیحات زیر، معادل رمز‌نگاری‌شده ورودی را محاسبه کنید.

  • ابتدا رشته به زیررشته‌های یونیفورمش تقسیم می‌شود و سپس مقدار رمزنگاری شده رشته اصلی از به هم چسباندن مقدار رمزنگاری شده رشته‌های یونیفورم به دست می‌آید.
  • با در کنار هم قرار دادن وزن تمام زیر‌رشته‌‎های یونیفرمِ یک رشته، یک عبارت عددی به دست می‌آید که همان معادل رمز‌نگاری‌شده رشته ورودی است.
  • رشته یونیفرم رشته‌‎ای است که تمام کاراکتر‌هایش با هم یکسان باشند. مانند c یا aa یا ccc
  • برای یک رشته یونیفورم مقدار رمزنگاری این‌گونه به دست می‌آید که به ازای هر کاراکتر مقدار رشته‌ای ضرب وزن آن کاراکتر در تعداد کاراکترهایی که قبلش آمده به علاوه یک را به انتهای جواب اضافه می‌کنیم. (این کار را از اول رشته شروع می‌کنیم و تا آخر آن طی می‌کنیم.)
  • برای مثال مقدار رمزنگاری رشته یونیفورم cccc برابر یا 36912 است.
  • وزن یک کاراکتر برابر است با کد عددی آن کاراکتر منهای عدد 96. مثلا کد کاراکتر a برابر 97 و وزن آن برابر با 9796=197-96=1 است.

نمونه

>>> encrypt('abcccdd')
1236948
Python
terminal

توضیحات نمونه

کلیه زیررشته‌های یونیفرم حاصل از رشته ورودی و وزن آن‌ها در ادامه لیست شده:

وزن زیررشته یونیفرم
1 a
2 b
369 ccc
48 dd

که با در کنار هم قرار دادن وزن آن‌ها، به عبارت 1236948 می‌رسیم.

متد is_social_account_info(self, param)

این متد یک رشته به عنوان پارامتر ورودی دریافت کرده و در خروجی مشخص می‌کند که آیا این رشته حاوی آدرس مربوط به یک اکانت شبکه اجتماعی هست یا نه. در زمان استخدام، واحد حفاظت و امنیت، آدرس کلیه اکانت‌های عمومی (public) افراد را پرسیده و به شکل زیر در اسناد ذخیره کرده است:

[Social Network Name]:www.[domain]/[Account Name]

برای مثال آدرس اکانت توییتر علی به این صورت ذخیره شده است:

Twitter:www.twitter.com/javalover1990

توجه

  1. اسم شبکه اجتماعی همواره با حرف بزرگ انگلیسی شروع می‌شود.
  2. دامنه فقط شامل حروف کوچک انگلیسی و عدد و کاراکتر . است.
  3. آدرس اکانت شامل حرف یا عدد یا علامت زیرخط (_) است.

نمونه

>>> is_social_account_info('Instagram:www.instagram.com/javafan')
True
Python
terminal

متد secure(self, info)

حال با استفاده از دو متد قبلی، می‌خواهیم اطلاعات مورد نظر را رمزنگاری کنیم. به این صورت که:

  1. با استفاده از متد is_social_account_info بخش‌هایی که مربوط به اطلاعات حساب‌های کاربری است را پیدا کنید.
  2. با استفاده از متد encrypt بخش Account Name را رمزنگاری ک

ورودی یک متن است که شامل اطلاعات یک کارمند از جمله اطلاعات صفر یا چند حساب کاربری وی در شبکه‌های اجتماعی مختلف است.

نمونه

>>> secure('FirstName:Ali, LastName:Alavi, BirthDate:1990/02/02 Gender:male Instagram:www.instagram.com/aalavi Degree:Master Twitter:www.twiter.com/alaviii imdb:www.imdb.com/alavi')
'FirstName:Ali, LastName:Alavi, BirthDate:1990/02/02 Gender:male Instagram:www.instagram.com/12121229 Degree:Master Twitter:www.twiter.com/11212291827 imdb:www.imdb.com/alavi'
Python
terminal

نکات

  • می‌توانید فایل اولیه این سوال را از این لینک دریافت کنید.
  • دقت کنید که هیچ‌کدام از توابع نباید مقداری را چاپ کند، بلکه باید مقادیر مورد نظر را بازگرداند.

نحوه ارسال

شما باید توابع encrypt، is_social_account_info و secure از کلاس Security موجود در فایل security.py را تکمیل و سپس این فایل را ارسال کنید.


ارسال پاسخ برای این سؤال
فایلی انتخاب نشده است.