Philocode
# ## ### #### ##### #### ### ## # یه کد بنویسید (پیش خودتون، لازم نیست کامنتش کنید) که این شکل رو توی خروجی بفرسته. شاید برای خیلیها آسون باشه، اما اگه کسی الگوریتم کار نکرده باشه، مسئلۀ خوبیه که فکرش رو به کار بگیره. اگه سخت بود، اولش نصف مثلث رو انجام…
اگه اون رو حل کردید، این رو هم حل کنید:
########
######
####
##
Philocode
# ## ### #### ##### #### ### ## # یه کد بنویسید (پیش خودتون، لازم نیست کامنتش کنید) که این شکل رو توی خروجی بفرسته. شاید برای خیلیها آسون باشه، اما اگه کسی الگوریتم کار نکرده باشه، مسئلۀ خوبیه که فکرش رو به کار بگیره. اگه سخت بود، اولش نصف مثلث رو انجام…
چیزی که راجع به این سوال مهمه، اینه که ببینیم چه پترنی توی این شکل وجود داره:
1, 2, 3, 4, 5, 4, 3, 2, 1
و میتونیم جاهای خالی رو هم ملاحظه کنیم:
5 -
وقتی که این دنباله جلوتر بره، حاصل تفریق منفی میشه که با قدر مطلق میشه کاری کرد که این اتفاق نیفته.
حالا 🧠تون رو به کار بگیرید و حلش کنید. 🦾
1, 2, 3, 4, 5, 4, 3, 2, 1
و میتونیم جاهای خالی رو هم ملاحظه کنیم:
4, 3, 2, 1, 0, 1, 2, 3, 4انگار اینطوریه:
5 -
(5 - 1), 5 - (5 - 2), 5 - (5 - 3), ...وقتی که این دنباله جلوتر بره، حاصل تفریق منفی میشه که با قدر مطلق میشه کاری کرد که این اتفاق نیفته.
حالا 🧠تون رو به کار بگیرید و حلش کنید. 🦾
👍1🔥1
Philocode
#books
آبجکت باید مجموعهای معنادار از دادهها و کدی باشد که کارهایی را روی آن دادهها انجام میدهد؛ نه کیسهای برای ذخیرهکردن چیزهای باقیمانده (و متفرقه)!
🔥3
Philocode
حتماً دیدید که بعضی از سایتها از markdown استفاده کردند و میشه کد زبانهای مختلفی رو نشون داد: ```php $sum = $a + $b; ``` ولی شاید این رو ندونید که بعضی جاها از جمله گیتهاب، میشه به تغییرات (حذف و اضافه) کد با این syntax اشاره کرد: ```diff - old line +…
درستکردن این چکباکسها توی markdown خیلی جالبه:
پیشنمایش از گیتهابه.
- [X] Wash the cat
- [ ] Eat the breakfast
- [ ] Run for ten minutes پیشنمایش از گیتهابه.
👍1🔥1
Philocode
#books
با توابع بازگشتی چقدر آشنا هستید؟
تابع بازگشتی، تابعیه که خودش رو صدا میزنه. به احتمال کم (اگه دانشگاه نرفته باشید و تا حالا دربارۀ الگوریتم چیزی نخوندید) براتون مسخره میاد، چرا باید یه فانکشن، خودش رو صدا بزنه؟!
نویسندۀ کتاب Think like a programmer میگه که این نوع برنامهنویسی کلاً فرق داره؛ وقتی با یه loop سر و کله میزنید، میدونید که با یه دنباله طرفید ولی وقتی با recursion طرف باشید، برای ذهنتون سخته که مسئله رو اینطوری ببینه که یه فانکشن از طریق صدازدن خودش حلش کنه.
سادهترین مثال (مثالِ کتاب)، factorial ـــه:
تابع بازگشتی، تابعیه که خودش رو صدا میزنه. به احتمال کم (اگه دانشگاه نرفته باشید و تا حالا دربارۀ الگوریتم چیزی نخوندید) براتون مسخره میاد، چرا باید یه فانکشن، خودش رو صدا بزنه؟!
نویسندۀ کتاب Think like a programmer میگه که این نوع برنامهنویسی کلاً فرق داره؛ وقتی با یه loop سر و کله میزنید، میدونید که با یه دنباله طرفید ولی وقتی با recursion طرف باشید، برای ذهنتون سخته که مسئله رو اینطوری ببینه که یه فانکشن از طریق صدازدن خودش حلش کنه.
سادهترین مثال (مثالِ کتاب)، factorial ـــه:
function factorial (number) {
if (number === 1) {
return 1
}
return number * 👉factorial(number - 1)
}
console.log(factorial(7)) // 5040
همین برنامه رو اگه بدون recursion مینوشتیم، این شکلی میشد:function factorial (number) {
let result = 1
for (let i = number; i > 1; i--) {
result *= i
}
return result
}
اگه بتونم این فصل رو به خوبی قورت بدم، احتمالا یه مقاله توی dev.to داشته باشیم. ^_^🔥6
ما از فردا کتاب Grokking Algorithms رو میخونیم.
دلتون بسوزه.
(پوزخند مشهور مخصوص خود را اجرا میکند)
دلتون بسوزه.
(پوزخند مشهور مخصوص خود را اجرا میکند)
😁7😢1
Philocode
Photo
نویسنده، بحثش رو با simple search و binary search شروع کرده.
1 2 3 4 5 6 7 8 9 10 11 12
توی دنبالۀ بالا، simple search از 1 شروع میکنه و یکی یکی جلو میاد تا عدد 11 رو پیدا کنه. اما با binary search از 1 شروع نمیکنیم و همیشه از وسط میپرسیم؛ اگه وسط این دنباله از 11 کوچیکتر باشه، نصف اول دنباله حذف میشه و در غیر این صورت نصف دوم دنباله رو حذف میکنیم!
یعنی اگه یه دنبالۀ 240,000تایی داشته باشیم و دنبال موردی بگردیم که آخر دنبالهست، با simple search (که نویسنده بهش میگه stupid search) در واقع 240,000 مرحله طول میکشه که پیداش کنیم ولی با binary search تنها 18 مرحله نیازه!
#GA
1 2 3 4 5 6 7 8 9 10 11 12
توی دنبالۀ بالا، simple search از 1 شروع میکنه و یکی یکی جلو میاد تا عدد 11 رو پیدا کنه. اما با binary search از 1 شروع نمیکنیم و همیشه از وسط میپرسیم؛ اگه وسط این دنباله از 11 کوچیکتر باشه، نصف اول دنباله حذف میشه و در غیر این صورت نصف دوم دنباله رو حذف میکنیم!
یعنی اگه یه دنبالۀ 240,000تایی داشته باشیم و دنبال موردی بگردیم که آخر دنبالهست، با simple search (که نویسنده بهش میگه stupid search) در واقع 240,000 مرحله طول میکشه که پیداش کنیم ولی با binary search تنها 18 مرحله نیازه!
#GA
👍5
Philocode
Running time #GA
Linked lists are good for inserts/deletes, and arrays are good for random access.
#GA
#GA