علی که با کمک شما توانست مکعبش را رنگ کند، به این فکر رفته که یک کلاس طراحی کند تا کمک کند امنیت بیشتری داشته باشد. برای همین از شما میخواهد تا کلاسی با جزییات زیر برایش طراحی کنید.
حال شما باید متدهای خواستهشده از کلاس `Security` را به صورتی که در ادامه توضیح دادهشده، تکمیل کنید.
```python security.py
class Security:
def secure(self, info):
pass
def is_social_account_info(self, param):
pass
def encrypt(self, s):
pass
```
## متد `encrypt(self, s)`
یک رشته به عنوان ورودی این متد داده میشود و معادل رمزنگاریشده آن در خروجی برگردانده میشود.
با توجه به توضیحات زیر، معادل رمزنگاریشده ورودی را محاسبه کنید.
+ ابتدا رشته به زیررشتههای یونیفورمش تقسیم میشود و سپس مقدار رمزنگاری شده رشته اصلی از به هم چسباندن مقدار رمزنگاری شده رشتههای یونیفورم به دست میآید.
+ با در کنار هم قرار دادن وزن تمام زیررشتههای یونیفرمِ یک رشته، یک عبارت عددی به دست میآید که همان معادل رمزنگاریشده رشته ورودی است.
+ رشته یونیفرم رشتهای است که تمام کاراکترهایش با هم یکسان باشند. مانند `c` یا `aa` یا `ccc`
+ برای یک رشته یونیفورم مقدار رمزنگاری اینگونه به دست میآید که به ازای هر کاراکتر مقدار رشتهای ضرب وزن آن کاراکتر در تعداد کاراکترهایی که قبلش آمده به علاوه یک را به انتهای جواب اضافه میکنیم. (این کار را از اول رشته شروع میکنیم و تا آخر آن طی میکنیم.)
+ برای مثال مقدار رمزنگاری رشته یونیفورم `cccc` برابر یا `36912` است.
+ وزن یک کاراکتر برابر است با کد عددی آن کاراکتر منهای عدد 96. مثلا کد کاراکتر `a` برابر 97 و وزن آن برابر با $$97-96=1$$ است.
## نمونه
``` python terminal terminal
>>> encrypt('abcccdd')
1236948
```
<details class="green">
<summary> **توضیحات نمونه** </summary>
کلیه زیررشتههای یونیفرم حاصل از رشته ورودی و وزن آنها در ادامه لیست شده:
| وزن | زیررشته یونیفرم |
|:------------------:|:------------------:|
| 1 | a |
| 2 | b |
| 369 | ccc |
| 48 | dd |
که با در کنار هم قرار دادن وزن آنها، به عبارت `1236948` میرسیم.
</details>
## متد `is_social_account_info(self, param)`
این متد یک رشته به عنوان پارامتر ورودی دریافت کرده و در خروجی مشخص میکند که آیا این رشته حاوی آدرس مربوط به یک اکانت شبکه اجتماعی هست یا نه.
در زمان استخدام، واحد حفاظت و امنیت، آدرس کلیه اکانتهای عمومی (public) افراد را پرسیده و به شکل زیر در اسناد ذخیره کرده است:
`[Social Network Name]:www.[domain]/[Account Name]`
برای مثال آدرس اکانت توییتر علی به این صورت ذخیره شده است:
`Twitter:www.twitter.com/javalover1990`
**توجه**
1. اسم شبکه اجتماعی همواره با حرف بزرگ انگلیسی شروع میشود.
2. دامنه فقط شامل حروف کوچک انگلیسی و عدد و کاراکتر `.` است.
3. آدرس اکانت شامل حرف یا عدد یا علامت زیرخط (`_`) است.
## نمونه
``` python terminal terminal
>>> is_social_account_info('Instagram:www.instagram.com/javafan')
True
```
## متد `secure(self, info)`
حال با استفاده از دو متد قبلی، میخواهیم اطلاعات مورد نظر را رمزنگاری کنیم. به این صورت که:
1. با استفاده از متد `is_social_account_info` بخشهایی که مربوط به اطلاعات حسابهای کاربری است را پیدا کنید.
2. با استفاده از متد `encrypt` بخش Account Name را رمزنگاری ک
ورودی یک متن است که شامل اطلاعات یک کارمند از جمله اطلاعات صفر یا چند حساب کاربری وی در شبکههای اجتماعی مختلف است.
## نمونه
``` python terminal terminal
>>> 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'
```
## نکات
+ میتوانید فایل اولیه این سوال را از [این لینک](/problemset/assignments/4367/download_problem_initial_project/33036/) دریافت کنید.
+ دقت کنید که هیچکدام از توابع نباید مقداری را چاپ کند، بلکه باید مقادیر مورد نظر را بازگرداند.
## نحوه ارسال
شما باید توابع `encrypt`، `is_social_account_info` و `secure` از کلاس `Security` موجود در فایل `security.py` را تکمیل و سپس این فایل را ارسال کنید.
واحد حفاظت و امنیت - پایتون