دیتاهای محرمانه یک گروه سایبری فاش شده است. حالا شما باید این داده را بررسی کنید تا میزان بزرگی و شدت حمله آینده این گروه را بفهمید. برای این کار هر بار که یک کلمهی مشکوک (Keyword) مرتبط با عملیات میبینید، آن را بشمارید تا شدت حملهای را که قرار است رخ دهد، محاسبه کنید.
برای این کار نیاز است ایجنتی بنویسید که یک متن و قوانین متن را دریافت کند و با بررسی متن و بر اساس قوانین متن، به جواب دست پیدا کند و عدد شدت تهدید محاسبهشده را خروجی بدهد.
محاسبه به این ترتیب است که در متن داده شده، هر کلمه یک وزن خاص دارد و تکرار بیشتر یا وجود کلمات سنگینتر، نشانه خطر بالاتر است. باید مجموع این خطر را بهعنوان عدد نهایی گزارش بدهید.
فرمول محاسبه امتیاز تهدید (Threat Score) اینگونه است:
```
Threat Score = مجموعِ (تعداد مشاهده هر کلمه × وزن آن)
```
# آنچه باید آپلود کنید
شما باید فایل `solution.py` را ارسال کنید و در آن کلاس `ThreatScore` را پیادهسازی کنید که حاوی تابعی به اسم `run` باشد که یک آرگومان بهعنوان ورودی میگیرد. همچنین میتوانید در کنار برنامهتان ماژولهای مورد نیاز برای اجرا را در `python_requirements.txt` قرار دهید. برای مثال:
```python solution.py
class ThreatScore:
def __init__(self, api_token):
self.api_token = api_token
def run(self, text, rules):
return "Your Answer"
```
**توجه**
ورودیهای text و rules هر دو متنی میباشند و به تابع run داده میشوند. انتظار میرود خروجی کد شما یک عدد (int) باشد.
در ادامه میتوانید یک تستکیس حلشده را مشاهده کنید.
## نمونه
``` python
text = "در طول هفته گذشته، اسکنهای بیوقفه در شبکه ثبت شد و پاسخهای سریعی در پی آن بود. کنترل کامل توسط مهاجم برقرار گشت، تماسهای مشکوک برقرار شد و کاشت ایمپلنت موفقیتآمیز اعلام شد. گروهی از زامبیها فعال شدند و اولین تریگر خطر فعال گردید. آلودگی در سیستم تأیید شد و شواهدی از سازش و تزریق کد به منظور اجرای فوری وجود داشت. فرآیند استقرار بدافزار و همچنین سوءاستفادههایی که منجر به بارگذاری یک پیلود شد، مشاهده شد. یک در پشتی به شکل ماهرانهای در سیستم قرار گرفت و نشانههایی از روز صفر و اضافه شدن به باتنت دیده شد."
rules = "اسکن: ۱، پاسخ: ۲، کنترل: ۳، تماس مشکوک: ۴، ایمپلنت: ۵، زامبی: ۶، تریگر: ۷، آلودگی: ۸، سازش: ۹، تزریق: ۱۰، اجرا: ۱۱، استقرار: ۱۲، بدافزار: ۱۳، سوءاستفاده: ۱۴، پیلود: ۱۵، در پشتی: ۱۶، روز صفر: ۱۷، باتنت: ۱۸"
ts = ThreatScore(your_api_key)
print(ts.run(text, rules)) # 171
```
در مثال ورودی بالا امتیاز تهدید اینطور محاسبه میشود:
```
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18
```
یعنی جواب نهاییای که کد بازمیگرداند میشود:
```
171
```
تذکر: ممکن است کلمات بهصورت جمع هم باشند(مثلا تماسهای مشکوک نیز چون تماس مشکوک کلمهی کلیدی است، یکبار محسوب میشود.