lab – Telegram
213 subscribers
367 photos
354 videos
21 files
325 links
ما اینجا میم میزاریم بینش پست آموزشی
Download Telegram
Forwarded from Linuxor ?
Media is too big
VIEW IN TELEGRAM
چطوری می‌شه بعد از کال یه فانکشن بهش دیتا بفرستیم؟ و چطور می‌شه یه فانکشن نوشت که یه فایل سنگین رو بخونه ولی منابع آنچنانی مصرف نشه؟ توی ویدیو دستور yield توی زبان های برنامه نویسی رو معرفی کردم



@Linuxor
👌3
Forwarded from FarzanehJahanmanesh
سلام رفقا!
یه پروژه خیلی باحال داریم که قراره با کمک شما انجامش بدیم.
کافیه فقط ۱۲ تا سؤال ساده رو توی نظرسنجی جواب بدید،
تا هم به ما کلی کمک کرده باشید،
هم شانس برنده شدن ۲ میلیون تومن جایزه نقدی رو داشته باشید!

هم کمک، هم جایزه، هم حال خوب!🥰
چی از این بهتر؟
بزن بریم — منتظرتیم!

https://survey.porsline.ir/s/Xq15I5lR
lab
You might break - and thats okay (eng).pdf
من هنوز کامل نخوندمش ولی دارم منظم پیش میبرمش یه نکته جالب دیگه هم که توش اشاره کرد و میخام از این به بعد به کار بگیرمش این بود که به ریت مسئله اصن نگاه نکن چونکه وقتی میبینی ریت یک مسئله بالاست انتظار یچیز خیلی سخت داری و نمیتونی عادی روی مسئله فک کنی و ممکنه مسئله خیلی خیلی ساده تر باشه
👍2🔥1
Forwarded from UI ACM chapter
🎈 جدول امتیازات UICPC 2025 Round #2
🗓 ۴ اردیبهشت ماه
🔗 پاسخ سوالات و اطلاعات مسابقه
🎯 سوالات مسابقه به همراه جاج

با انجمن ACM همراه باشید
    [تلگرام] | [اینستاگرام] | [لینکدین]
🏆101
UI ACM chapter
Photo
معمولن تاپ تن بودن تو اینجور مسابقات خفن به حساب میاد.
بعد امروز سر مسابقه یکی از تیما داد میزد تاپ تن شدیم. (مسابقه با ۹ تا تیم برگزار شد😂)
🤣111🔥1
برا مسائلی که توابع بازگشتی و dp نیازه، برا سریعتر کردن روند محاسبه، تکنیکی به کار میره به اسم memoization حرفش اینه که اگه قراره مقداری رو دوباره بهش نیاز داشته باشی یجا ذخیرش کن که نیاز نباشه دوباره حسابش کنی.
مثال بارزش حساب کردن سری فیبوناچی هست.
def fib(n, memo={}):
if n in memo:
return memo[n]
if n < 2:
memo[n] = n
else:
memo[n] = fib(n-1, memo) + fib(n-2, memo)
return memo[n]

print(fib(10))

یک دیکشنری می‌سازیم و هربار چک میکنیم اگه مقداری که دنبالشیم داخلش بود همونو برمیداریمو دیگه حسابش نمیکنم ولی اگه نبود حسابش میکنیم و نهایتن ذخیرش میکنیم.
پایتون یک کتابخونه ای داره که یک دکوریتور داخلشه به اسم cache و اگه بطور مثال رو تابع فیبوناچی صداش بزنیم خودش کار ذخیره سازی رو انجام میده.
from functools import cache

@cache
def fib(n):
if n < 2:
return n
return fib(n-1) + fib(n-2)

print(fib(10))

حالا یه مشکل دیگه که پیش میاد بخصوص تو مسابقات اینه که ما معمولن یه حجم محدودی حافظه داریم و اینکه همه چیزو هم ذخیره کنیم خیلی بهینه نیست.
ولی پایتون یه قابلیت دیگم داره به اسم Least Recently Used اینو میشه محدودش کرد که یک تعدادی از آخرین مقادیری که استفاده شدن رو نگه داره فقط.
from functools import lru_cache

@lru_cache(maxsize=100)
def fib(n):
if n < 2:
return n
return fib(n-1) + fib(n-2)

print(fib(10))
2👍1
lab
برا مسائلی که توابع بازگشتی و dp نیازه، برا سریعتر کردن روند محاسبه، تکنیکی به کار میره به اسم memoization حرفش اینه که اگه قراره مقداری رو دوباره بهش نیاز داشته باشی یجا ذخیرش کن که نیاز نباشه دوباره حسابش کنی. مثال بارزش حساب کردن سری فیبوناچی هست. def fib(n…
ما میتونیم از بالا به پایین به مسئله نگاه کنیم که بهش میگن Top-Down Approach.
نمونه کد اول پست بالایی میشه. که البته داخل کد تکنیک memoization هم استفاده شده.
ولی میتونیم از پایین به بالا هم به مسئله نگاه کنیم که بهش میگن Bottom-Up Approach.
حالا به جا اینکه بگیم مثلن fib(5) نیاز داره به مقادیر fib(4) و fib(3) میگیم که اگه fib(4) و fib(3) رو باهم جمع کنیم به fib(5) میرسیم. باهمین ایده از دو مقدار اولی که از سری فیبوناچی میدونیم، شروع میکنیم و تا اون مقداری که نیاز داریم حساب میکنیم.
def fib(n):
if n <= 1:
return n
dp = [0] * (n+1)
dp[1] = 1
for i in range(2, n+1):
dp[i] = dp[i-1] + dp[i-2]
return dp[n]

مزیتش اینه که دیگه خبری از تابع بازگشتی نیست.
👍1
هوش و ذکاوت
🤣3
Forwarded from FREQUENCY
I❤️sisoog
6
lab
ما میتونیم از بالا به پایین به مسئله نگاه کنیم که بهش میگن Top-Down Approach. نمونه کد اول پست بالایی میشه. که البته داخل کد تکنیک memoization هم استفاده شده. ولی میتونیم از پایین به بالا هم به مسئله نگاه کنیم که بهش میگن Bottom-Up Approach. حالا به جا اینکه…
گاهی برای حل بعضی مسائل مجبوریم همه حالت‌های ممکن رو بررسی کنیم. این دقیقاً کاریه که الگوریتم backtracking انجام می‌ده. ولی خب، همه حالت‌ها رو بررسی کردن معمولاً به صرفه نیست، برای همین یه تکنیک خیلی مهم به اسم pruning داریم (هرس کردن حالت‌های غیرضروری).

مثال معروفش حل کردن مسئله n-queens هست:

def solve(n):
result = []
board = []

def is_safe(row, col):
for r, c in enumerate(board):
if c == col or abs(row - r) == abs(col - c):
return False
return True

def backtrack(row):
if row == n:
result.append(board[:])
return
for col in range(n):
if is_safe(row, col): # pruning
board.append(col)
backtrack(row + 1)
board.pop()

backtrack(0)
return result

print(solve(4))

توی این کد، ما وقتی داریم برای ردیف جدید ملکه‌ای می‌ذاریم، فقط ستون‌هایی رو امتحان می‌کنیم که با قبلیا تداخلی ندارن. این همون pruning ـه. یعنی یه سری حالت‌ها رو اصلاً نمی‌ذاریم وارد مسیر بشن.

این تکنیک تو خیلی از مسائل ترکیبیاتی و گرافی می‌تونه سرعت الگوریتم رو از نمایی به قابل‌حل برسونه.
👍2
حس باحالیه که، یه عکسی رو میبینی و خودت از اینکه یه وقتی اونجا بودی تعجب میکنی
4👍2👌1
تمام شد. مبارک خیلیا
👏9
Forwarded from CleverDevs (Mammad)
آپدیت های آرچ وقتی 5 ساعت آپدیتش نمیکنی :

#fun
@CleverDevs - @CleverDevsGp
😁3
من نمیدونستم این lcd ها بک لایت هم دارن تو آزمایشگاه ریزپردازنده هم تیمی ها روشن کردن بعد الان امدم رو lcd که خودم خریده بودم تست کردم خیلی اینطوری خوشگل تره.
👌73