یکی از چالشهای امروزی در زمینهی شبکههای اجتماعی، شناسایی پیامهای اسپم (*spam*) میباشد. معمولا پیامها از نظر اسپم بودن در چهار دسته زیر طبقهبندی میشوند:
+ دسته **Not Spam** [NOT_SPAM]:
+ پیامهایی که اسپم طبقهبندی نمیشوند.
+ دسته **Invalid Sender** [INVALID_SENDER]:
+ پیامهایی که شناسه فرستنده آنها تنها از اعداد تشکیل شده است.
+ دسته **Invalid Content** [INVALID_CONTENT]:
+ پیامهایی که در بدنه آنها تعداد کاراکترهای غیرحرف، غیرعدد و غیرفاصله بیش از نصف طول پیام باشد و در آن حداقل یک بار زیررشتهی $spam$ تکرار شده باشد.
+ دسته **Fully Invalid** [FULLY_INVALID]:
+ پیامهایی که هم فرستنده و هم بدنهی نامعتبر داشته باشند.
بسته [spam](https://quera.ir/qbox/download/ydegQAOOYw/spam.zip) را دانلود کنید.
متد `detectSpams` در کلاس `SpamDetector` را به گونهای پیادهسازی کنید که با دریافت آرایهای از `Message`ها، آرایهای از `SpamType`ها را برگرداند که هر عنصر آن نوع پیام متناظر در آرایهی `messages` را مشخص میکند. به عبارتی اگر عنصر اول آرایهی `messages` اسپم نباشد باید عنصر **اول** آرایهی برگشتی از نوع `NOT_SPAM` باشد.
برای مثال با اجرای متد main در کلاس Main، باید خروجی زیر چاپ شود:
```
[INVALID_SENDER, INVALID_CONTENT]
```
**آن چه که باید آپلود کنید**
یک فایل زیپ که وقتی آن را باز میکنیم فقط فایل `SpamDetector.java` را ببینیم.