Forwarded from UI ACM chapter
🎈 جدول امتیازات UICPC 2025 Round #2
🗓 ۴ اردیبهشت ماه
🔗 پاسخ سوالات و اطلاعات مسابقه
🎯 سوالات مسابقه به همراه جاج
➖➖با انجمن ACM همراه باشید➖➖
[تلگرام] | [اینستاگرام] | [لینکدین]
🗓 ۴ اردیبهشت ماه
🔗 پاسخ سوالات و اطلاعات مسابقه
🎯 سوالات مسابقه به همراه جاج
➖➖با انجمن ACM همراه باشید➖➖
[تلگرام] | [اینستاگرام] | [لینکدین]
🏆10❤1
UI ACM chapter
Photo
معمولن تاپ تن بودن تو اینجور مسابقات خفن به حساب میاد.
بعد امروز سر مسابقه یکی از تیما داد میزد تاپ تن شدیم. (مسابقه با ۹ تا تیم برگزار شد😂)
بعد امروز سر مسابقه یکی از تیما داد میزد تاپ تن شدیم. (مسابقه با ۹ تا تیم برگزار شد😂)
🤣11❤1🔥1
برا مسائلی که توابع بازگشتی و dp نیازه، برا سریعتر کردن روند محاسبه، تکنیکی به کار میره به اسم memoization حرفش اینه که اگه قراره مقداری رو دوباره بهش نیاز داشته باشی یجا ذخیرش کن که نیاز نباشه دوباره حسابش کنی.
مثال بارزش حساب کردن سری فیبوناچی هست.
یک دیکشنری میسازیم و هربار چک میکنیم اگه مقداری که دنبالشیم داخلش بود همونو برمیداریمو دیگه حسابش نمیکنم ولی اگه نبود حسابش میکنیم و نهایتن ذخیرش میکنیم.
پایتون یک کتابخونه ای داره که یک دکوریتور داخلشه به اسم cache و اگه بطور مثال رو تابع فیبوناچی صداش بزنیم خودش کار ذخیره سازی رو انجام میده.
حالا یه مشکل دیگه که پیش میاد بخصوص تو مسابقات اینه که مامعمولن یه حجم محدودی حافظه داریم و اینکه همه چیزو هم ذخیره کنیم خیلی بهینه نیست.
ولی پایتون یه قابلیت دیگم داره به اسم Least Recently Used اینو میشه محدودش کرد که یک تعدادی از آخرین مقادیری که استفاده شدن رو نگه داره فقط.
مثال بارزش حساب کردن سری فیبوناچی هست.
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) میرسیم. باهمین ایده از دو مقدار اولی که از سری فیبوناچی میدونیم، شروع میکنیم و تا اون مقداری که نیاز داریم حساب میکنیم.
مزیتش اینه که دیگه خبری از تابع بازگشتی نیست.
نمونه کد اول پست بالایی میشه. که البته داخل کد تکنیک 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
lab
ما میتونیم از بالا به پایین به مسئله نگاه کنیم که بهش میگن Top-Down Approach. نمونه کد اول پست بالایی میشه. که البته داخل کد تکنیک memoization هم استفاده شده. ولی میتونیم از پایین به بالا هم به مسئله نگاه کنیم که بهش میگن Bottom-Up Approach. حالا به جا اینکه…
گاهی برای حل بعضی مسائل مجبوریم همه حالتهای ممکن رو بررسی کنیم. این دقیقاً کاریه که الگوریتم backtracking انجام میده. ولی خب، همه حالتها رو بررسی کردن معمولاً به صرفه نیست، برای همین یه تکنیک خیلی مهم به اسم pruning داریم (هرس کردن حالتهای غیرضروری).
مثال معروفش حل کردن مسئله n-queens هست:
توی این کد، ما وقتی داریم برای ردیف جدید ملکهای میذاریم، فقط ستونهایی رو امتحان میکنیم که با قبلیا تداخلی ندارن. این همون 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
Forwarded from نوشتههای ترمینالی
چرا برنامهنویس ها بسیار دچار فرسودگی شغلی میشن؟ (burnout)
یکم طولانیه ولی ویدیوی خیلی جالبی بود.
https://youtu.be/XW-02QiiHDM?si=5YiqqH-iN-nhWc7U
یکم طولانیه ولی ویدیوی خیلی جالبی بود.
https://youtu.be/XW-02QiiHDM?si=5YiqqH-iN-nhWc7U
YouTube
Why Software Devs Keep Burning Out
Our coaches can help you take real steps toward getting your life on track. Learn more: https://bit.ly/3GjDVdy
▼ Timestamps ▼
────────────
00:00 - Introduction
01:13 - Set up to fail
05:35 - Why devs burn out
07:47 - Remote Work
09:15 - Your colleagues…
▼ Timestamps ▼
────────────
00:00 - Introduction
01:13 - Set up to fail
05:35 - Why devs burn out
07:47 - Remote Work
09:15 - Your colleagues…
❤1
Forwarded from TorhamDev | تورهام 😳
ناراحت؟ ناامید؟ من نه ناراحت میشم نه ناامید! من فقط گریه...😔🗿
😢4
Forwarded from Univerbity (Farzad)
The Helting Problemتصور کنید برنامه یا الگوریتمی فوق العاده قدرتمندی داشته باشید که برنامه ای دیگر رو بگیره و بدون اینکه خودش اون رو اجرا کنه بگه برنامه تا ابد اجرا خواهد شد یا نه (حلقه های بینهایت) ♾
این نرم افزار عجیب آرزوی هر برنامه نویس و ریاضی دانی هست.اگر این برنامه وجود داشته باشه میشه مطمئن شد که هیچ برنامه ای هرگز هنگ نمیکند یا آنتی ویروس ها با قطعیت بگن که یک بدافزار میتواند تا ابد خودش رو تکرار کنه.🦠
خب، حالا حقیقت تلخ:
آلن تورینگ، ریاضیدان و پدر علوم کامپیوتر نوین، در سال 1936 ثابت کرد که چنین نرمافزار جادوییای هرگز نمیتواند وجود داشته باشد! این همان "مسئله توقف" است که یکی از مهمترین نتایج در نظریه محاسبات (Computability Theory) به شمار میرود.📓
@Univerbity
👍2❤1
این ویدیو به بررسی فرمول دقیق برای محاسبه اعداد اول میپردازد که توسط C. P. Willans در سال ۱۹۶۴ ارائه شده است. این فرمول با استفاده از توابع ریاضی پیچیده، امکان محاسبهٔ مستقیم عدد اول nام را فراهم میکند. اگرچه این فرمول از نظر تئوری جالب است، اما به دلیل پیچیدگی محاسباتی، در عمل کارایی محدودی دارد.
برای آشنایی بیشتر با این فرمول و نحوهٔ عملکرد آن. https://youtu.be/j5s0h42GfvM
این ویدیو برای علاقهمندان به ریاضیات و کسانی که به دنبال درک عمیقتری از ساختار اعداد اول هستند، توصیه میشود.
یه کامنت جالب هم بود زیرش:
I’m pretty sure C. P. stands for coolformulaforcalculating primes
برای آشنایی بیشتر با این فرمول و نحوهٔ عملکرد آن. https://youtu.be/j5s0h42GfvM
این ویدیو برای علاقهمندان به ریاضیات و کسانی که به دنبال درک عمیقتری از ساختار اعداد اول هستند، توصیه میشود.
یه کامنت جالب هم بود زیرش:
I’m pretty sure C. P. stands for coolformulaforcalculating primes
👍2
lab
این ویدیو به بررسی فرمول دقیق برای محاسبه اعداد اول میپردازد که توسط C. P. Willans در سال ۱۹۶۴ ارائه شده است. این فرمول با استفاده از توابع ریاضی پیچیده، امکان محاسبهٔ مستقیم عدد اول nام را فراهم میکند. اگرچه این فرمول از نظر تئوری جالب است، اما به دلیل…
عبارت
اگر عدد صحیح بشه نشون میده که اون عدد یک عدد اوله و حالا ضرب اون در عدد پی و گرفتن تابع کوسینوس ازش مقادیر اعشاری رو چیزی غیر از یک و منفی یک میده و مقادیر صحیح رو یک و منفی یک و بعد با به توان ۲ رسوندش و کف گرفتن ازش فقط یک ها میمونه که تعداد اعداد اول رو بهمون میده.
بنظرم تا همینجاش شگفت انگیز بود.
((j-1)!+1)/j
اگر عدد صحیح بشه نشون میده که اون عدد یک عدد اوله و حالا ضرب اون در عدد پی و گرفتن تابع کوسینوس ازش مقادیر اعشاری رو چیزی غیر از یک و منفی یک میده و مقادیر صحیح رو یک و منفی یک و بعد با به توان ۲ رسوندش و کف گرفتن ازش فقط یک ها میمونه که تعداد اعداد اول رو بهمون میده.
بنظرم تا همینجاش شگفت انگیز بود.
😨1
Forwarded from Bit Orbit 🪐 (Arya)
while true
do
date >> ./log
ping 1.1.1.1 -c 2 >> ./log
ping 8.8.8.8 -c 2 >> ./log
echo '---------------------------' >> ./log
done
یه سروری داریم که توی تایم های خاصی کانکشنش به اینترنت قطع میشه.
بنظرم این اسکریپت چیز بدی نیست برای چک کردن اینکه توی چه تایمی داره این اتفاق میوفته.
اول اومدم به Ai گفتم بنویسه یه چیزی که اینکار رو بکنه. بعد با پایتون نوشت :/
دیدم کاری نداره همینو با bash نوشتم. دیفالت AI احتمالا اینکه که هرچی بهش بگی رو با پایتون بنویسه مگه اینکه غیر این رو بهش بگی.
Bit Orbit 🪐
while true do date >> ./log ping 1.1.1.1 -c 2 >> ./log ping 8.8.8.8 -c 2 >> ./log echo '---------------------------' >> ./log done یه سروری داریم که توی تایم های خاصی کانکشنش به اینترنت قطع میشه. بنظرم این اسکریپت چیز بدی نیست برای چک کردن اینکه…
بنظرم هر کدوم یه زبانی رو مسلط ترن یا شاید منابع بیشتری ازش دارن برا همین دیفالت تصمیم میگیرن با اون کد بزنن. طبق تجربه شخصی دیدم که grok اکثر مواقع cpp کد میزنه.
Forwarded from اصفهان لاگ
دعوتنامه دورهمی نخستین لاگ اصفهان پس از سالها سکوت
دوستان عزیز،
پس از سالها وقفه، با شور و اشتیاق فراوان بار دیگر دورهمی لاگ اصفهان را برگزار میکنیم! این نخستین گردهمایی پس از یک دوره طولانی رکود است و فرصتی بینظیر برای دیدار دوباره، تبادل دانش و زنده کردن روح همافزایی در جامعه متنباز اصفهان.
📅 تاریخ: چهارشنبه ۲۴ اردیبهشت
📍 محل: خیابان توحید، خیابان مهرداد(شهید قندی)، کوچهٔ لیلا(۷)، پلاک(۹)، آموزشگاه فنیوحرفهای سَروِ آبی
⏰ ساعت: ۱۸ تا ۲۰
این دورهمی فضایی باز و دوستانه برای همه علاقهمندان به نرمافزار آزاد است، و حضور بانوان علاقهمند به این حوزه، همچون همیشه، ارزشمند و تأثیرگذار خواهد بود.
لطفاً جهت حضور در این دورهمی از طریقِ فُرمی که در سایت موجود است اقدام به ثبت نام خود کنید، زیرا تعدا محدود است.
بیصبرانه منتظر دیدار شما هستیم!
🔗 www.isfahanlug.ir
🔗 instagram.com/esfahanlug
🔗 https://t.iss.one/lugisfahan
🔗t.iss.one/LugEsfahan
دوستان عزیز،
پس از سالها وقفه، با شور و اشتیاق فراوان بار دیگر دورهمی لاگ اصفهان را برگزار میکنیم! این نخستین گردهمایی پس از یک دوره طولانی رکود است و فرصتی بینظیر برای دیدار دوباره، تبادل دانش و زنده کردن روح همافزایی در جامعه متنباز اصفهان.
📅 تاریخ: چهارشنبه ۲۴ اردیبهشت
📍 محل: خیابان توحید، خیابان مهرداد(شهید قندی)، کوچهٔ لیلا(۷)، پلاک(۹)، آموزشگاه فنیوحرفهای سَروِ آبی
⏰ ساعت: ۱۸ تا ۲۰
این دورهمی فضایی باز و دوستانه برای همه علاقهمندان به نرمافزار آزاد است، و حضور بانوان علاقهمند به این حوزه، همچون همیشه، ارزشمند و تأثیرگذار خواهد بود.
لطفاً جهت حضور در این دورهمی از طریقِ فُرمی که در سایت موجود است اقدام به ثبت نام خود کنید، زیرا تعدا محدود است.
بیصبرانه منتظر دیدار شما هستیم!
🔗 www.isfahanlug.ir
🔗 instagram.com/esfahanlug
🔗 https://t.iss.one/lugisfahan
🔗t.iss.one/LugEsfahan
🔥1