گروه فناوری اطلاعات شریف
یازدهمین دوره مسابقات برنامه نویسی چالش های حوزه فناوری اطلاعات کشور | ICT CHALLENGE 11 به تاریخ 31 تیر و 1 مرداد سال 1405 و در محل دانشگاه صنعتی شریف برگزار شد.
این مسابقات توسط گروه فناوری اطلاعات شریف | Sharif ICT Group تحت نظر پژوهشگاه فناوری اطلاعات و ارتباطات پیشرفته دانشگاه صنعتی شریف و با حمایت معاونت علمی و فناوری ریاست جمهوری با هدف حمایت از شناسایی برنامه نویسان با استعداد و توانمند از کل کشور، ایجاد خودباوری و اعتماد به نفس، ایجاد اشتغال و جلوگیری از فرار مغزها برگزار شد.
در این مسابقات 250 نفر از نخبگان برنامه نویسی از کل کشور در قالب 110 تیم دو الی چهار نفره به رقابت پرداختند. از 110 تیم شرکت کننده در رویداد، 55 تیم تا انتهای مسابقه حضور داشتند و توانستند حداقل به یک چالش از چالش های مسابقات پاسخ دهند و در نهایت رتبه بندی این تیم ها در مراسخ اختتامیه معرفی شد.
در صفحات بعد رتبه بندی تیم ها، چالش های مسابقه؛ تصاویر و فیلم ها و … به تفکیک خدمتتان ارائه شده است.
این دوره با حمایت شرکت نرم افزاری داتیس آرین قشم (داتین)، شرکت نرم افزاری امن پرداز، هلدینگ دکا، شرکت داده و اعتبار سنجی تجارت ایرانیان (داتا تجارت)، مجموعه آبالون، مجموعه تریبون و پارک علم و فناوری دانشگاه صنعتی شریف برگزار شد.
سوال اول:
مقدمه
هدف این چالش طراحی و پیادهسازی Backend برای پردازش درخواستهای تسهیلات بانکی است. علاوه بر عملکرد صحیح، کیفیت معماری، توسعهپذیری، خوانایی و تصمیمات مهندسی نیز ارزیابی میشود.
سناریوی مسئله
هر درخواست وام باید قبل از تأیید نهایی از چند مرحله عبور کند. هر بانک Workflow مخصوص به خود را دارد.
ثبت درخواست
↓
اعتبارسنجی
↓
بررسی تقلب
↓
اعتبارسنجی مالی
↓
تأیید مدیر
↓
تأیید نهایی
نمونه Workflow بانکها
بانک اول
Validation
↓
Fraud Check
↓
Credit Check
↓
Approve
بانک دوم
Validation
↓
AML
↓
Fraud Check
↓
Guarantor Check
↓
Credit Check
↓
Approve
بانک سوم
Validation
↓
Manager Approval
↓
Approve
اهداف پروژه
ثبت درخواست وام
اجرای Workflow
نمایش وضعیت فعلی
نمایش تاریخچه مراحل
ذخیره دائمی اطلاعات
جلوگیری از اجرای تکراری پردازش
قابلیتهای الزامی
REST API
Docker
Persistence
ثبت تاریخچه
مدیریت وضعیت
اجرای Workflow
موارد خارج از محدوده
Authentication
Authorization
Frontend
Email
SMS
Kafka
RabbitMQ
Kubernetes
Cloud Deployment
CI/CD
Microservice
ذینفع: داتین
سوال دوم:
دادههای مسابقه
با گسترش استفاده از زبانهای اسکریپتی مانند JavaScript، PowerShell، VBScript، Python، Batch و سایر زبانهای مشابه، مهاجمان نیز بهطور گسترده از این فایلها برای توسعه بدافزار استفاده میکنند. تشخیص خودکار این نوع بدافزارها یکی از مسائل مهم امنیت سایبری است. هدف این چالش، طراحی و پیادهسازی یک سامانه هوشمند برای تشخیص فایلهای اسکریپتی مخرب از فایلهای سالم با استفاده از روشهای یادگیری ماشین، یادگیری عمیق یا سایر روشهای مبتنی بر داده است.
دادههای مسابقه
دادههای مسابقه شامل مجموعهای از فایلهای اسکریپتی واقعی است که در دو کلاس زیر دستهبندی شدهاند:
فایلهای سالم (Benign)
فایلهای مخرب (Malware)
نمونه زبانهای موجود در مجموعه داده
JavaScript (.js) PowerShell (.ps1) VBScript (.vbs)
Batch (.bat) Python (.py) سایر زبانهای اسکریپتی
تقسیمبندی مجموعه داده
Training Set
Validation Set
Test Set (برچسبهای این مجموعه منتشر نخواهد شد)
خروجی مورد انتظار
مدل باید برای هر فایل موجود در Test Set تنها یک مقدار دودویی تولید کند:
0 : فایلهای سالم (Benign)
1 : فایلهای مخرب (Malware)
خروجی باید صرفاً شامل مقدار 0 یا 1 و نام فایل Test Set باشد و ارسال احتمال، امتیاز اطمینان (Confidence Score) یا سایر مقادیر پیوسته مجاز نیست.
قوانین مسابقه
استفاده از دادههای آموزشی خارج از دادههای مسابقه مجاز نیست، مگر اینکه در اطلاعیه مسابقه صراحتاً اعلام شود.
در زمان داوری، کد باید بدون اتصال به اینترنت قابل اجرا باشد.
کد ارسالی باید قابل اجرا بوده و نتایج اعلامشده را با اختلاف ناچیز بازتولید کند.
زمان پیشبینی هر فایل باید در محدوده قابل قبول باشد.
استفاده از GPU در مرحله آموزش مجاز است.
اجرای مدل باید روی CPU امکانپذیر باشد.
ساختار پروژه
پروژه ارسالی باید شامل ساختار زیر باشد:
TeamName.zip
│
├── source/
├── train.py
├── predict.py
├── model/
├── requirements.txt
├── README.md
└── predictions.csv
ذینفع: امن پرداز
سوال سوم:
شرح مسئله
هدف این چالش، توسعه یک محصول هوشمند در نقش دستیار شعبه بانک است. این دستیار عملکردی مشابه یک سامانه PFM (Personal Financial Management) دارد، با این تفاوت که مخاطب آن کارمند شعبه است و وظیفه اصلی آن تحلیل اطلاعات مشتری، بررسی قوانین بانکی و ارائه پیشنهادهای شخصیسازیشده است.
این دستیار باید فراتر از نمایش اطلاعات عمل کرده و بهصورت هوشمند ارتباط میان بخشنامههای بانک و محصولات و خدمات بانکی را استخراج کند. سپس «بایدها» و «نبایدهای» هر محصول را با اطلاعات هویتی، درآمدی و مالی مشتری تطبیق داده و نتیجه نهایی را در اختیار کارمند شعبه قرار دهد.
وظایف اصلی دستیار هوشمند
استخراج ارتباط میان بخشنامهها و محصولات یا خدمات بانکی
شناسایی الزامات، محدودیتها و شرایط هر محصول (بایدها و نبایدها)
تطبیق قوانین با اطلاعات هویتی، درآمدی و مالی هر مشتری
تحلیل شرایط مشتری و تصمیمگیری درباره امکان ارائه محصولات
ارائه پیشنهادهای شخصیسازیشده برای هر مشتری
خروجی مورد انتظار
برای هر مشتری، دستیار باید دو خروجی اصلی تولید کند:
۱. پیشنهاد شخصیسازیشده
مشخص کند کدام محصولات و خدمات بانکی، متناسب با شرایط همان مشتری برای ارائه پیشنهاد میشوند.
۲. بررسی اهلیت محصولات
برای هر محصول مشخص کند آیا مشتری واجد شرایط دریافت آن هست یا خیر. در صورت عدم احراز شرایط، دلیل رد شدن و همچنین شرایط لازم برای واجد شرایط شدن را بهصورت شفاف بیان کند.
نمونه:
«با افزایش میانگین گردش حساب به X تومان در سه ماه اخیر، امکان دریافت این تسهیلات برای مشتری فراهم خواهد شد.»
منابع داده
این دستیار دادههای موردنیاز خود را از سامانهها و سرویسهای موجود بانک دریافت میکند؛ اما تحلیل قوانین، تطبیق آنها با شرایط مشتری و تصمیمگیری نهایی بر عهده همین سامانه است.
ذینفع: شرکت داده و اعتبار سنجی تجارت ایرانیان (داتا)
سوال چهارم:
شرح مسئله
در بانک مجموعهای از بخشنامههای بالادستی (نظارتی و بانک مرکزی) و بخشنامههای داخلی وجود دارد که در بازههای زمانی مختلف و توسط واحدهای گوناگون صادر شدهاند.
هدف این چالش، توسعه یک سامانه هوشمند برای تحلیل بخشنامهها است؛ بهگونهای که پس از ثبت هر بخشنامه جدید، بتواند آن را با تمامی بخشنامههای موجود مقایسه کرده و تعارضها، همپوشانیها و روابط میان آنها را بهصورت خودکار شناسایی کند.
وظایف اصلی سامانه
مقایسه هر بخشنامه جدید با تمامی بخشنامههای موجود در بانک.
تشخیص اینکه آیا بخشنامه جدید با یک یا چند بخشنامه قبلی مغایرت یا تعارض دارد یا خیر.
تعیین دقیق بند، ماده یا حکم قانونی که محل بروز تعارض است.
شناسایی تمامی بخشنامههای موجود که با یکدیگر در تعارض هستند؛ حتی اگر هیچکدام از آنها بهتازگی ثبت نشده باشند.
تحلیل نوع و ماهیت رابطه میان بخشنامهها و تعیین اینکه تعارض کامل، تعارض جزئی، همپوشانی یا نسخ رخ داده است.
خروجی مورد انتظار
سامانه باید برای هر بخشنامه جدید و همچنین برای کل مجموعه بخشنامهها، گزارشی تحلیلی شامل موارد زیر تولید کند:
خروجی توضیحات
تشخیص تعارض مشخص کند آیا میان بخشنامهها تعارض یا مغایرت وجود دارد یا خیر.
محل تعارض بند، ماده یا حکم دقیق ایجادکننده تعارض را مشخص کند.
بخشنامههای مرتبط تمامی بخشنامههایی که با یکدیگر در تضاد، مغایرت یا ارتباط مستقیم دارند را معرفی کند.
نوع رابطه نوع ارتباط میان دو بخشنامه را مشخص کند.
انواع رابطه میان بخشنامهها
تناقض کامل
دو بخشنامه احکام کاملاً متضادی ارائه میکنند و امکان اجرای همزمان آنها وجود ندارد.
تناقض جزئی
تنها بخشی از احکام یا بندهای دو بخشنامه با یکدیگر در تعارض هستند.
همپوشانی بدون تعارض
دو بخشنامه موضوع مشترکی را پوشش میدهند اما الزامات آنها با یکدیگر سازگار است.
نسخ ضمنی یا صریح
یک بخشنامه بهصورت مستقیم یا غیرمستقیم جایگزین یا بیاعتبارکننده بخشنامه دیگر است.
پایش مستمر بخشنامهها
علاوه بر بررسی هر بخشنامه جدید، سامانه باید بتواند بهصورت دورهای کل آرشیو بخشنامههای بانک را تحلیل کند تا تعارضهای پنهان یا مغایرتهایی که پیشتر شناسایی نشدهاند نیز کشف و گزارش شوند.
قابلیت کلیدی: سامانه نباید صرفاً هنگام ثبت یک بخشنامه جدید فعال شود؛ بلکه باید امکان تحلیل مستمر و بازبینی کل مجموعه بخشنامهها را نیز داشته باشد تا ناسازگاریهای احتمالی در طول زمان شناسایی شوند.
ذینفع: گروه فناوری اطلاعات شریف
سوال پنجم:
مقدمه
مجموعه هلدینگ دکا با داشتن ۳۳ هاب انبارداری در سراسر کشور و شبکه توزیع سنگین، به دنبال بهینهسازی فرآیند تأمین سفارشات است. این چالش با هدف شناسایی استعدادهای برتر در طراحی سیستمهای توزیعیافته (Distributed Systems) و بهینهسازی الگوریتمیک طراحی شده است.
صورت مسئله (Problem Statement)
هدف، طراحی و پیادهسازی یک سرویس هوشمند تخصیص انبار (Warehouse Routing Service) است که پس از ثبت سفارش در پلتفرم تجارت الکترونیک، تصمیم بگیرد کالا از کدام انبار تأمین شود تا هزینههای لجستیک به حداقل برسد. (بررسی SKU و موجودی، محل و زمان مورد انتظار دریافت مشتری و …)
ذینفع: هلدینگ دکا لجستیک
سومین دوره مسابقات برنامه نویسی ICT Challenge 11 در تاریخ 31 تیر و 1 مرداد در محل دانشگاه صنعتی شریف برگزار شد. در این مسابقات 250 نفر درقالب 110 تیم به رقابت پرداختند و در نهایت سه تیم برتر به شرح زیر معرفی شدند.



| # | نام تیم | رتبه | امتیاز |
|---|---|---|---|
| 1 | Rusted Automata | 1 | 359 |
| 2 | Lornux | 2 | 324 |
| 3 | Novo | 3 | 308 |
| 4 | The GitFather | 4 | 301 |
| 5 | Genesis | 5 | 300 |
| 6 | Soliton | 6 | 294.5 |
| 7 | DXCode | 7 | 288 |
| 8 | Quantum Questers | 8 | 285.5 |
| 9 | HTTP 451 | 9 | 285 |
| 10 | NexTeaM | 10 | 279 |
| 11 | star-bugs | 11 | 251 |
| 12 | Rezome | 12 | 249 |
| 13 | Main. | 13 | 246 |
| 14 | VIP | 14 | 245 |
| 15 | Gama | 15 | 230 |
| 16 | Wabi-Code | 16 | 217 |
| 17 | وقت کم بود | 17 | 216.5 |
| 18 | Luminous | 18 | 210 |
| 19 | تسلا | 19 | 205 |
| 20 | سمن سیستم پیشرو | 20 | 184.5 |
| 21 | بینش پردازان | 21 | 182 |
| 22 | Morna team | 22 | 165 |
| 23 | ByteME | 23 | 162 |
| 24 | Code Blooded | 24 | 157 |
| 25 | دیکد | 25 | 152.5 |
| 26 | Epsilon | 26 | 150 |
| 27 | Arpanet | 26 | 150 |
| 28 | Byte Me | 28 | 143.5 |
| 29 | TGCO Team | 29 | 130 |
| 30 | axis script | 30 | 120 |
| 31 | آتوکس | 31 | 115 |
| 32 | QuantaCore | 32 | 97.5 |
| 33 | Ctrl+Mind | 32 | 97.5 |
| 34 | GOAT | 34 | 87 |
| 35 | e2ee | 34 | 87 |
| 36 | شایگان سیستم شازند | 36 | 78 |
| 37 | Farabi | 37 | 60 |
| 38 | Algorithmatics | 38 | 55 |
| 39 | Aytamam | 39 | 50 |
| 40 | Class Not Found | 39 | 50 |
| 41 | Karnel code | 41 | 40 |
| 42 | PEDII | 42 | 16 |
| 43 | BYTOTECH | 43 | 10 |
| 44 | Sicaf | 44 | 0 |
| 45 | Bug Slayers2 | 44 | 0 |
| 46 | Bug Slayers | 44 | 0 |
| 47 | io | 44 | 0 |
| 48 | Agent Core | 44 | 0 |
| 49 | dcode | 44 | 0 |
| 50 | گروه نرم افزاری لوجم | 44 | 0 |