+ محدودیت زمان: ۱ ثانیه
+ محدودیت حافظه: ۲۵۶ مگابایت
----------
برنامهای بنویسید که عدد $n$ و سپس یک دنباله $n$-تایی $a_1, a_2, a_3, ..., a_n$ را از ورودی بخواند و سپس مقدار زیر را چاپ کند:
$$\sum_{1 \le l \le r \le n} f(l, r)$$
که $f(l, r)$ را اینگونه تعریف میکنیم:
$$f(l, r) = \sum _{i = l} ^ r a_i$$
# ورودی
در سطر اول ورودی یک عدد $n$ آمده است و در سطر دوم $n$ عدد طبیعی آمده است که عدد $i$-ام نمایانگر $a_i$ است.
$$1 \le n \le 500\ 000$$
$$1 \le a_i \le 10$$
**دقت کنید که این سوال دارای زیرمسئله میباشد.**
# خروجی
برنامهی شما باید تنها یک خروجی چاپ کند که برابر مقدار گفته شده است.
# زیرمسئلهها
| زیرمسئله | نمره | محدودیت
|:------------------:|:----------:|:------------------:|
| ۱ | ۲۰ | $n \le 100$ |
| ۲ | ۳۰ | $n \le 4\ 000$ |
| ۳ | ۵۰ | بدون محدودیت اضافی |
# مثال
## ورودی نمونه
```
3
1 2 3
```
## خروجی نمونه
```
20
```
$f(1, 1) = 1 , f(1, 2) = 3, f(1, 3) = 6, f(2, 2) = 2, f(2, 3) = 5, f(3, 3) = 3$
$\rightarrow ans = 1 + 3 + 6 + 2 + 5 + 3 = 20$
جمع همهی زیربازهها
+ محدودیت زمان: ۱ ثانیه
+ محدودیت حافظه: ۲۵۶ مگابایت
----------
برنامهای بنویسید که با ورودی گرفتن عدد $n$، همهی زیرمجموعههای مجموعهی $\{ 1, 2, 3, ..., n \}$ را چاپ کند. این زیرمجموعهها را به ترتیب الفبایی مرتب کنید؛ یعنی ابتدا عناصر هر زیرمجموعه را مرتب کنید و سپس به آنها مانند کلمات نگاه کنید و به ترتیبی که در لغتنامه میآیند مرتبشان کنید.
تلاش کنید که این کار را تنها به وسیلهی تابع بازگشتی انجام دهید؛ یعنی طوری پیادهسازی کنید که این مجموعهها به همین ترتیب تولید و چاپ شوند. (به جای این که ابتدا همه را تولید کرده و سپس مرتب کنید.)
برای آشنایی با قالب خروجی دادن به نمونهها توجه کنید.
# ورودی
ورودی تنها شامل یک خط است که در آن یک عدد طبیعی $n$ آمده است.
$$1 \le n \le 15$$
# خروجی
خروجی برنامهی شما باید شامل $2^n$ خط باشد که در هر خط یک زیرمجموعه چاپ شود.
# مثال
## ورودی نمونه ۱
```
1
```
## خروجی نمونه ۱
```
{}
{1}
```
## ورودی نمونه ۲
```
3
```
## خروجی نمونه ۲
```
{}
{1}
{1, 2}
{1, 2, 3}
{1, 3}
{2}
{2, 3}
{3}
```
همهی زیرمجموعهها
+ محدودیت زمان: ۱ ثانیه
+ محدودیت حافظه: ۲۵۶ مگابایت
----------
برگه های درس ریاضی مهندسی به تازگی تصحیح شده و دانشکده ریاضی نیاز دارد تا میانگین و واریانس این نمرات را قبل از اعلام نمرات حساب کند.
اما از آن جا که این دانشکده برنامه نویس ندارد نمی تواند این مقادیر را حساب کند و به همین خاطر اعلام نمرات را یک ماه به تاخیر انداخته است.
حال ما از شما که برنامه نویس خفنی(!) هستید می خواهیم با دریافت نمرات میانگین و واریانس آن ها حساب کنید.
# ورودی
در خط اول ورودی آمده $n$ است. سپس در خط بعدی يک آرایه به طول $n$ آمده است که نمرات را نشان می دهد.
$$1 \le n,a_i \le 100$$
# خروجی
در یک خط دو عدد چاپ کنید که عدد اول میانگین نمرات و عدد دوم واریانس نمرات می باشد.
توجه کنید که جواب شما در صورتی معتبر است که اختلافش با جواب اصلی حداکثر $10^{-6}$ باشد.
## ورودی نمونه اول
```
2
1 2
```
## خروجی نمونه اول
```
1.5 0.25
```
## ورودی نمونه دوم
```
6
100 90 78 80 83 10
```
## خروجی نمونه دوم
```
73.5 859.9166666666666
```
# توضیحات
اگر با تعریف واریانس آشنا نیستید این [لینک](https://fa.wikipedia.org/wiki/%D9%88%D8%A7%D8%B1%DB%8C%D8%A7%D9%86%D8%B3) برای شما مفید خواهد بود.
سطح نمرات!
حال که شما از پس سوال های ساده تر برآمدید رهنماکالج از شما می خواهد تا این سوال را حل کنید :
به شما یک آرایه از اعداد داده می شود. ما به یک عدد رهنمایی می گوییم اگر هم خودش بر ۶ بخش پذیر باشد هم در حداقل یکی از جایگاهی که در آرایه ظاهر می شود، شماره آن جایگاه بر ۶ بخش پذیر باشد. (بدیهی است که اگر یک عدد در آرایه وجود نداشته باشد آن عدد رهنمایی نیست.)
توجه کنید که اندیس اولین عضو آرایه از ۱ شروع میشود.
حال که شما فکر می کنید این سوال خیلی ساده است ما آن برای شما سخت می کنیم!
طول کدی که شما ارسال می کنید حداکثر باید یک خط باشد و در آن نمی توانید از `;` یا تابع `exec` استفاده کنید.
حال ما از شما که خودتان را پایتون کار قهاری می دانید می خواهیم تا این سوال را حل کنید.
# ورودی
در تنها خط ورودی تعدادی عدد آمده است که آرایه ورودی را نشان می دهد.
تعداد اعضای آرایه از ۲۰۰ کمتر است.
# خروجی
در تنها خط خروجی اعداد رهنمایی را به ترتیب **صعودی** چاپ کنید به صورتی که بین هر دو عدد **دقیقاً** یک فاصله باشد. (همچنین اگر هیچ عدد رهنمایی ای وجود ندارد یک خط خالی چاپ کنید.)
توجه کنید که هر عدد رهنمایی **دقیقاً** یک بار باید در خروجی ظاهر شود.
## ورودی نمونه اول
```
1 2 3 4 5 6 7 8 9 10 11 12
```
## خروجی نمونه اول
```
6 12
```
## ورودی نمونه دوم
```
3 4 1 37 21 18 23 21 27 22 43 21
```
## خروجی نمونه دوم
```
18
```
# نکات
- یک فایل Zip شامل یک فایل به نام `source.py` آپلود کنید.
- نام فایل Zip اهمیت ندارد.
آسونِ سخت
+ محدودیت زمان: ۱ ثانیه
+ محدودیت حافظه: ۲۵۶ مگابایت
----------
شرکت رهنما به تازگی تمام بازار خرید و فروش کشور کالجستان را در اختیار گرفته است. روند خرید و فروش در این کشور بدین گونه است که بعد از این که یک نفر یک کالا را از یک نفر دیگر خریداری کرد یک رشته به شکل زیر به سرور رهنما ارسال می کند :
```
[%day %time] %seller_name sold %item_name to %buyer_name
```
برای اطلاع از فرمت هر کدام از متغیر ها به ورودی نمونه مراجعه کنید.
حال رهنما که پردازش این داده ها برایش سخت است از شما می خواهد تا آن ها را به شکل زیر ساده سازی کنید.
شما باید به ازای هر روز که در آن حداقل یه خرید انجام شده است رشته زیر را به خروجی اضافه کنید :
```
%day %stuff_count %people_count
```
که در آن people_count تعداد افرادی است که در آن روز حداقل در یه معامله شرکت داشتند و stuff_count تعداد کالاهای متفاوتی است که در آن روز مبادله شده است.
حال رهنما برای این که بفهمد شما چه جور برنامه نویسی هستید از شما می خواهد تا برایش این رشته ها را ساده سازی کنید.
# ورودی
در خط اول ورودی آمده $n$ است که بیان گر تعداد کل خرید و فروش ها است.
سپس در $n$ خط بعدی تمام رشته هایی که به سرور رهنما ارسال شده است، آمده است.
تضمین می شود که ورودی ها بر اساس زمان از کوچک به بزرگ مرتب شده اند.
$$1 \le n \le 10^5$$
# خروجی
به ازای هر روز در ورودی رشته ای را که در صورت سوال خواسته شده است را چاپ کنید. (روز ها را باید به ترتیب صعودی چاپ کنید.)
## ورودی نمونه اول
```
8
[2016-01-02 06:28:57] user_16 sold product_17 to user_18
[2016-01-03 00:56:27] user_6 sold product_14 to user_4
[2016-01-08 18:14:42] user_12 sold product_17 to user_8
[2016-01-11 21:35:27] user_9 sold product_2 to user_2
[2016-01-13 00:42:36] user_17 sold product_19 to user_8
[2016-01-14 15:07:15] user_6 sold product_1 to user_18
[2016-01-14 18:07:57] user_4 sold product_3 to user_5
[2016-01-15 15:00:12] user_8 sold product_13 to user_17
```
## خروجی نمونه اول
```
2016-01-02 1 2
2016-01-03 1 2
2016-01-08 1 2
2016-01-11 1 2
2016-01-13 1 2
2016-01-14 2 4
2016-01-15 1 2
```
## ورودی نمونه دوم
```
3
[2018-11-02 06:28:57] user_3 sold product_1 to user_4
[2018-11-02 08:56:27] user_1 sold product_2 to user_2
[2018-11-02 09:12:41] user_5 sold product_1 to user_2
```
## خروجی نمونه دوم
```
2018-11-02 2 5
```
# توضیحات
توجه کنید که روز با همان فرمتی که در ورودی آمده است باید در خروجی چاپ شود.
تجارت الکترونیک در کالجستان
صادق که به تازگی جبر خطی پاس کردهاست کار با ماتریسها را خیلی دوست دارد.
اما از آنجایی که محاسبات ماتریسی کمی برایش سخت است و آشنایی زیادی با برنامهنویسی ندارد این کار را به شما سپردهاست:
۳ ماتریس با `n` سطر و `m` ستون با نامهای `A` و `B` و `C` داریم. ماتریس `D` را به صورتی میسازیم که:
$$ D = AB^tC $$
که $B^t$ [ترانهاده](https://fa.wikipedia.org/wiki/%D8%AA%D8%B1%D8%A7%D9%86%D9%87%D8%A7%D8%AF%D9%87)ی ماتریس `B` است.
صادق معتقد است که هر ماتریس زیبایی خودش را دارد! که به صورت زیر تعریف میشود:
هر ستون ماتریس یک بردار است.عدد زیبایی ماتریس برابر بیشترین تعداد ستونهای [مستقلخطی](https://fa.wikipedia.org/wiki/%D8%A7%D8%B3%D8%AA%D9%82%D9%84%D8%A7%D9%84_%D8%AE%D8%B7%DB%8C) آن ماتریس است.
حال شما باید عدد زیبایی ماتریس `D` را بهدست بیاورید.
# ورودی
در خط اول اعداد `n` و `m` آمدهاست.
$$1 \le n, m \le 20$$
`3n` خط بعدی، هر خط شامل `m` عدد است. که `n` خط اول ماتریس `A` را تشکیل میدهند، `n` خط بعد ماتریس `B` را تشکیل میدهند و `n` خط آخر ماتریس `C`.
تضمین میشود که درایههای ماتریسها اعدادی طبیعی بین ۱ تا ۲۰ هستند.
# خروجی
در تنها خط خروجی عدد زیبایی ماتریس `D` را چاپ کنید.
## ورودی نمونه
```
2 2
1 1
0 1
2 0
-2 2
1 2
1 2
```
## خروجی نمونه
```
1
```
## توضیح مثال نمونه
$$
D=
AB^tC=
\begin{bmatrix}
1 & 1 \\ 0 & 1 \end{bmatrix}
\begin{bmatrix}
2 & -2 \\ 0 & 2 \end{bmatrix}
\begin{bmatrix}
1 & 2 \\ 1 & 2 \end{bmatrix}
=
\begin{bmatrix}
2 & 4 \\ 2 & 4 \end{bmatrix}
$$
که ستونهای `D` بردارهای
$$
\begin{bmatrix}
2 \\
2
\end{bmatrix}
,
\begin{bmatrix}
4 \\
4
\end{bmatrix}
$$
هستند و عدد زیبایی ماتریس `D` برابر ۱ خواهد شد.
# نکات
- یک فایل Zip شامل یک فایل به نام `source.py` آپلود کنید.
- نام فایل Zip اهمیت ندارد.
- میتوانید در فایل ارسالی خود از کتابخانهی `numpy` استفاده کنید.
ماتریس زیبا
از شما خواسته شده طبق توضیحات زیر یک سامانه درخواست خودرو پیادهسازی کنید. ابتدا فایلهای اولیه را از این [لینک](http://s8.picofile.com/file/8346390292/initial.zip.html) دانلود کرده و محتوای آن را مطالعه فرمایید.
این سامانه ۲ هدف اصلی دارد:
+ ثبت درخواست برای خودرو
+ گزارش گیری از سامانه
## ثبت درخواست برای خودرو
۱. پیادهسازی تابع `get_distance` در کلاس `RideRequest`:
در این تابع باید فاصلهی یک ماشین تا محلی که سفر درخواست داده شده را محاسبه کرده و برگردانید.
```python
def get_distance(self, car)
```
+ *صفت `location` تاپلی به صورت `(x, y)` است.*
۲. پیادهسازی تابع `find_best_driver` در کلاس`RideService`:
مسافر، درخواستی برای خودرو با نوع (`car_type`) مشخص میکند، وظیفهی شما پیدا کردن رانندهی آماده به کار
(`active`) با نوع ماشین موردنظر است که حاصل تقسیم امتیاز راننده بر فاصله تا مکان درخواست سفر بیشتر باشد.
```python
def find_best_driver(self, ride_request)
```
+ *تضمین میشود که فاصله تا مکان درخواست سفر صفر نیست.*
## گزارش گیری از سامانه
**حتما قبل شروع نوشتن کد، تذکرات انتهای سوال را بخوانید!**
#### ۱. ورودی کل شرکت (پولی که از طریق پرداخت وارد شرکت میشود)
```python
def total_company_income(payments)
```
#### ۲. کل مبلغ پرداخت شده توسط مشتری با ایمیل برابر با `email`
```python
def total_user_payment(payments, email)
```
#### ۳. راننده با بیشترین تعداد سفر
```python
def driver_with_most_rides(rides):
```
+ *اگر تعداد سفرها برابر بود به ترتیب حروف الفبا بر اساس نام خانوادگی راننده *
#### ۴. لیست رانندگانی که حداقل یک ماشین با نوع `car_type` دارند.
```python
def get_drivers(cars, car_type)
```
+ *اگر رانندهای بیش از یک ماشین با نوع `car_type` داشت فقط یک بار در این لیست قرار میگیرد.*
+ *ترتیب رانندگان در این لیست اهمیت ندارد.*
## **تذکرات:**
+ هریک از گزارشها را باید در کلاس `ReportService` و در تابع مربوط به گزارش پیادهسازی کنید.
+ به نوع خروجی تابع توجه کنید
+ برای مثال اگر خروجی تابع `راننده` باشد منظور `object` راننده میباشد و نه اسم یا ایمیل راننده.
### آنچه باید آپلود کنید
+ پس از اعمال تغییرات، کل پروژه را Zip کرده و ارسال کنید.
+ نام فایل Zip اهمیت ندارد.
سامانه درخواست خودرو
آقای وثوق و آقای عزیز، صاحب دو گالری ماشین نزدیک ساختمون رهنما هستن. یه روزی از همین روزا، محسن که فرد خیلی پولداری بوده، قصد میکنه یه ماشین خوب بخره. در نتیجه بین آقای وثوق و آقای عزیز جنگ پنهونی شروع شد که محسن رو به سمت خودشون بکشن. آقای وثوق از قضا به مباحث یادگیری ماشین هم علاقه داره و میخواد که فروشش از آقای عزیز جلوتر بزنه و با استفاده از دیتاهایی که داره، پیشبینی کنه که کدوم ماشین احتمال بیشتری داره که محسن اون رو بخره. برای همین جدول زیر رو درست کرد:
| شماره نمونه | رنگ | نوع | لاکچری | خریداری میشود؟ |
|:-------------:|:-----:|:--------:|:--------:|:----------------:|
| 1 | قرمز | اسپورت | خیر | بله |
| 2 | قرمز | اسپورت | خیر | خیر |
| 3 | قرمز | اسپورت | خیر | بله |
| 4 | مشکی | اسپورت | خیر | خیر |
| 5 | مشکی | اسپورت | بله | بله |
| 6 | مشکی | اسپورت | بله | بله |
| 7 | مشکی | کلاسیک | خیر | خیر |
| 8 | قرمز | اسپورت | بله | بله |
| 9 | زرد | اسپورت | بله | خیر |
| 10 | زرد | کلاسیک | خیر | بله |
| 11 | زرد | اسپورت | بله | خیر |
| 12 | زرد | کلاسیک | بله | بله |
| 13 | زرد | کلاسیک | خیر | خیر |
آقای وثوق برای پیادهسازی بیکار ننشسته و توی مطالعاتی که داشته به نظرش رسیده که روش naive bayes میتونه کمکش کنه. با استفاده از این دیتاها قراره، naive bayes آموزش داده بشه و آقای وثوق از شما میخواد که کد این naive bayes رو پیاده سازی کنید تا بدونه چه اتومبیلهایی بیاره که با احتمال بالاتری به محسن بفروشه؟
برای این کار، کدی که شما پیاده سازی میکنید باید یه تابع predict داشته باشه و مطابق با اون چه که در ادامه اومده عمل کنه. همچنین signature این تابع به شکل زیر است:
```python
def predict(color, car_type, luxury)
```
# اجرای تابع
تابع نوشته شده توسط شما با ۳ پارامتر رشته به ترتیب رنگ ماشین، نوع و لاکچری بودن ماشین اجرا میشود.
انواع رنگ ماشین: `BLACK`، `RED` و `YELLOW`
انواع نوع ماشین: `SPORT`و `CLASSIC`
لاکچری بودن: `YES` یا `NO`
# خروجی تابع
خروجی تابع شما باید شامل ۱ رشته باشد که در آن رشته YES در صورت خریداری ماشین و رشته NO برای عدم خریداری ماشین را برگرداند (`return` کند).
# مثال
## اجرای ۱
```python
predict("RED", "SPORT", "NO")
```
## خروجی تابع در اجرای ۱
```
YES
```
## اجرای ۲
```python
predict("BLACK" ,"CLASSIC", "YES")
```
## خروجی تابع در اجرای ۲
```
YES
```
# نکات
+ پاسخ خود را در یک فایل Zip که حتما شامل فایل `source.py` که تابع `predict` در آن قرار دارد آپلود کنید.
+ نام فایل Zip اهمیت ندارد.
+ استفاده از لایبرریهای ماشین لرنینگ در پایتون مجاز نیست. اما استفاده از لایبرری numpy و scipy مجاز است.
ماشین میخره؟
یاسین علاقهی زیادی به زبان انگلیسی داره و با توجه به اینکه درس یادگیری ماشین رو هم اخیرا پاس کرده، میخواد ماشینی درست کنه که حروف انگلیسی رو از هم تشخیص بده. آقا رضا به عنوان متخصص مباحث یادگیری ماشین پیشنهاد داد که میتونه این کار رو با استفاده از یک دستهبند انجام بده. بعد از این پیشنهاد آقا رضا، یاسین فهمید که میتونه از شبکههای عصبی استفاده کنه ولی نمیدونه چطوری میتونه این الگوریتم رو پیادهسازی کنه. حالا یاسین از شما میخواد که تو این مورد کمکش کنید.
شما باید یک الگوریتم شبکه عصبی را پیاده سازی کنید که در آن حروف انگلیسی (A,B,C,D,E,J,K) را از یکدیگر تشخیص دهد. برای این منظور، پروژه را از این [لینک](https://www.dropbox.com/s/calut0kzla2cdl4/rahnema-college-ml-8-v2.zip?dl=1) دانلود کنید. پروژه شامل فایلهای آموزشی و یک فایل پایتون `source.py` است که شما باید تابع `predict` را در آن پیاده سازی کنید. تابع `predict` در ورودی آدرس فایل تست را میگیرد و حرفی که در فایل تشخیص داده است را بر میگرداند.
# مثال
تابع `predict` در فایلهای A1, A2, A3 حرف `A` را تشخیص میدهد(`return` میکند) .
# نکات
+ تمامی فایلهای آموزشی پروژه اولیه (به غیر از `source.py`) در هنگام تصحیح در کنار فایل آپلود شده شما وجود دارند و میتوانید در الگوریتم شبکه عصبی خود از آنها استفاده کنید.
+ پاسخ خود را در یک فایل Zip که حتما شامل فایل `source.py` که تابع `predict` در آن قرار دارد آپلود کنید.
+ در این فایل ممکن است فایلهای دیگری نیز وجود داشته باشد.
+ نام فایل Zip اهمیت ندارد.
+ استفاده از کتابخانههای یادگیری ماشین در پایتون مجاز نیست. اما استفاده از کتابخانههای numpy و scipy مجاز است.