212 subscribers
371 photos
355 videos
21 files
327 links
ما اینجا میم میزاریم بینش پست آموزشی
Download Telegram
باخت دادیم طبق معمول
🏆10
lab
https://youtu.be/2EeK4LXwyRM?si=M6o7Q7ld7qFCSKTS
ما شکلات بودیم
البته این برا وسطای مسابقس
lab
ما شکلات بودیم البته این برا وسطای مسابقس
و + Yunix هم تیم آتوسا و یاسین و سام بود. که برای دقایقی صدر جدول بودن🥰
👌5
lab
https://youtu.be/qSLhdqIpyts?si=UkLig_CY92ITNgm9
باز خداروشکر ما تنها دلقک هایی نیستیم که از این محتواها میزاریم یوتیوب
ولی روتین ساختن برا تایمی که دانشگاه میری خیلی ساده تره. چیزایی وجود داره که مجبوری خودت و درگیرش کنی و اگه یکم خل باشی میتونی ازش لذت ببری. در مقابلش وقتی قراره کل وقتتو خودت پر کنی کار سخت تر میشه. حس پوچی میاد سراغت و حس میکنی داری زندگیتو تباه میکنی. ولی بحث فقط دانشگاه نیست (میدونم یه عده ازش متنفرن) درکل وقتی تسکی وجود داره که باید انجامش بدی و تکلیفت مشخصه خیلی احساس بهتری داری تا وقتی که همه چیز نامشخصه
👍12
اینکه میگن پایتون کامیونیتی بزرگ و فعالی داره واقعن اینطوریه.
یک انجمنی رسمی تو زیر دامنه خود python.org هست که توش کلی چیزای مختلف از جمله پیشنهاد برای ایده های جدید، بحث های توسعه دهنده های خود پایتون و یا سوال های فنی رو میشه دید.

https://discuss.python.org/

خیلی میتونه مفید باشه و چیز میز جدید یادتون بده.
یچیزی که سر حل کردن مسئله ها گاهی وقتا میرفتم رومخم این بود که اگه داخل حلقه تکرار تغیری رو متغیر حلقه اعمال کنیم رفتار حلقه عوض میشه یا نه؟ چون خیلی وقتا این حرکتو زدم ولی هیچوقت نرفتم چک کنم ببینم چه اتفاقی میفته. جالبه که داخل پایتون و سی پلاس پلاس رفتار ها متفاوته. داخل پایتون متغیر حلقه موقتی مقدارش عوض میشه و روی رفتار حلقه تاثیری نمیزاره ولی داخل سی پلاس پلاس دقیقن برعکس. اینشکلی که: خروجی این
for i in range(10):
i += 1
print(i)

با این
// Includes
#include <bits/stdc++.h>
using namespace std;

// Main function
int main() {
for (int i = 0; i < 10; i++) {
i++;
cout << i << '\n';
}
return 0;
}

فرق داره.
lab
Photo
سی پلاس پلاس بلد بودن سبک زندگی نیست. پزه
چیز یعنی برعکس
👍3
تو بعضی مسائل الگوریتمی، مخصوصاً جاهایی که با حالت‌های مختلف و انتخاب‌های ممکن سر و کار داریم، یه تابع هست که خیلی پرکاربرده به اسم MEX.

mex یعنی Minimum EXcluded
یعنی کوچک‌ترین عدد غیرمنفی که توی مجموعه نیست.
s = {0, 1, 2, 4}
# عدد 3 توی مجموعه نیست، پس:
# mex(s) = 3

تابع mex از صفر شروع می‌کنه و می‌گرده دنبال اولین عددی که تو مجموعه نیست. همون رو برمی‌گردونه.
تو پایتون میشه اینجوری نوشت:
def mex(s):
i = 0
while i in s:
i += 1
return i

فرض کن یه بازی داریم با این قانون:
> یه بازیکن تو نوبتش می‌تونه از یه عدد n فقط 1 یا 2 واحد کم کنه. کسی که نتونه بازی کنه، می‌بازه.

حالا می‌خوایم با استفاده از mex تشخیص بدیم کدوم وضعیت‌ها برد هستن و کدوم باخت.
from functools import lru_cache

def mex(s):
i = 0
while i in s:
i += 1
return i

@lru_cache(maxsize=None)
def win_state(n):
if n == 0:
return 0
s = set()
for move in [1, 2]:
if n - move >= 0:
s.add(win_state(n - move))
return mex(s)

for i in range(10):
print(f"n = {i} → state = {win_state(i)}")

خروجی چیزی مثل این میشه:
n = 0 → 0 (بازنده)
n = 1 → 1 (برنده)
n = 2 → 2 (برنده)
n = 3 → 0 (بازنده)
n = 4 → 1 (برنده)
...

به کمک mex تونستیم با یک کد ساده وضعیت هر حالت رو مشخص کنیم. و با استفاده از lru_cache کاری کردیم که بار محاسباتی زیاد نشه و مقدارها ذخیره شن.
🔥1
تلگرام نزاشت تو کپشن عکس بنویسم گفت 271 کاراکتر زیاده😔🙏
😁1
Forwarded from AMIRHOSΣIN
این lru دقیقا توی حافظه cache نمیره، یه map درست میکنه که اون جا ذخیره میکنه ، توی تابع هایی که تعداد بازگشت‌شون کم هست کاربردی هست ، مثلا تا ۵۰۰ تا بازگشت ولی بیشتر بشه مثلا ۱۰۰۰۰۰ باید استک تابع بازگشتی را دستکاری کنی تا بزاره بزرگتر بگیری ، بعد تازه این جا نمی‌تونی کدت را با pypy اجرا کنی باید با python اجرا کنی بعد تازه این دستکاری استک خودش باعث مموری لیمیت میشه


حافظه cache توی کامپیوتر محدود هست یه چیزی حدود ۲۰ مگ و با حدود ۵۰۰۰ تا تابع بازگشتی این مقدار پر میشه به خاطره این lru توی ram ذخیره میکنه و این که خودت پیاده سازی کنی خیلی وقت ها بهینه تر میشه

البته ما توی پایتون به دلیل hash کردن مقدار ها برای اعداد بزرگ احتمال این که توی set یا dict برای اعداد بزرگ collision اتفاق میافته و زمان پیدا کردن از o(1) به o(n) میرسه
به خاطره همین توی بعضی از تست کیس ها این قدر اعداد تکراری میدن که این شکلی نمی‌تونی ازشون استفاده کنی
سر کلاس سیستم عامل استادمون میگفت یبار ینفر کلمه cache رو خوند کاچی
🤣6
Please open Telegram to view this post
VIEW IN TELEGRAM
lab
تلگرام همیشه خلاقانه عمل می‌کنه