CodeCrafters
749 subscribers
94 photos
50 videos
42 files
171 links
Download Telegram
بزودی سلسله مراتبی از ویدیوهای آموزشی با محوریت الگوریتم‌ها براتون میزاریم

ویدیو‌ها زبان اصلی میباشد که توسط یکی از دوستان بررسی و مقالاتی بابتش ترجمه خواهد شد


این دست از ویدیوهارو میتونید با هشتک

#video
#algorithm

در کانال ما دنبال کنید


@code_crafters
🔥7
Media is too big
VIEW IN TELEGRAM
Stacks and Queues 3 Using arrays to write stacks and queues

#video
#algorithm

@code_crafters

لینک مشاهده از یوتیوب:
https://m.youtube.com/watch?v=sHgHZdZEjz4&list=PLpPXw4zFa0uKKhaSz87IowJnOTzh9tiBk&index=24&pp=iAQB
وب سایت کانال https://codecrafters.ir

لیست هشتک‌ها در کانال رو در زیر براتون خواهم گذاشت و آپدیت خواهد شد


#design_patterns الگوهای طراحی

#postgresql پستگرس

#k8s کوبرنتیز

#agile اجایل
#scrum

#algorithm الگوریتم

#video

#meeting متینگ‌

#principles اصول کدنویسی

#project_managment_system مدیریت تیم

#free خارج از مبحث کامپیوتر


#app برنامه‌های کاربردی

#Git #actions مباحث مربوط به گیت و گیتلب

#conda #env کار با

#Docker مباحث مربوط به داکر

#AI #ML مباحث هوش مصنوعی

#book معرفی کتاب

#monitoring بررسی وضعیت سیستم و کد

#concurrency همزمانی کتاب grokking concurrency


#blovkchain #web3

#DDD #domain_driven_design

#BDD #behavior_driven_development

#soa #sso #microservice


@Code_Crafters

Git Hub:
https://github.com/CodeCrafters-ir/
👍1
CodeCrafters
https://telegra.ph/Stacks-and-queues-09-30 #algorithm @code_crafters
Queue¹
صف²
یک صف شبیه به یک استک³ است، اما روش متفاوتی را برای افزودن و حذف عناصر تعریف می‌کند.
عناصر از یک انتها اضافه می‌شوند که به آن rear⁴ می‌گویند و از انتهای دیگر به نام front⁵ حذف می‌شوند.

به این رفتار FIFO⁶ (First in First Out) گفته می‌شود.
برای تجسم عملکرد آن می توانید یک صف از افراد را در نظر بگیرید. افراد به ترتیب وارد صف می شوند. به مرور طول صف افزایش می‌یابد. سپس افراد به ترتیبی که وارد صف شده اند، از صف خارج می‌شوند. در این صورت اولین نفری که وارد صف شده، اولین نفری است که از صف خارج خواهد شد.

اصطلاح شناسی
فرآیند افزودن عناصر جدید به صف را enqueue⁷ می‌گویند.
فرآیند حذف یک عنصر از صف را dequeue⁸ می‌گویند.

برنامه‌های کاربردی
از صف‌ها هر زمان که نیاز به مدیریت اشیاء⁹ داشته باشیم به منظور شروع با اولین مورد وارد شده استفاده می‌شود.
سناریوها شامل چاپ اسناد¹⁰ بر روی چاپگر، سیستم‌های مرکز تماس پاسخگویی به افراد در انتظار و غیره است.

📌 لیست¹¹های پایتون ساده‌ترین راه برای پیاده‌سازی عملکرد یک صف هستند.


پانوشت:
1. به فارسی: صف
2. به انگلیسی: Queue
3. Stack (به فارسی: پُشته)
4. انتها، پشت
5. جلو
6. First in First Out
یا به اختصار FIFO یعنی خروج به ترتیب ورود، یکی از روش‌های سازماندهی کنترل داده با توجه به زمان و اولویت‌بندی است.
7. enqueue
کردن، عنصری را به انتهای Queue (صف) اضافه میکند.
8. dequeue
کردن، اولین عنصر یا همان عنصر جلوی صف را از Queue خارج و حذف خواهد کرد.
9. Object
10. Document
11. List

#data_structures
#algorithm

@code_crafters
👍4🔥3
CodeCrafters
Queue¹ صف² یک صف شبیه به یک استک³ است، اما روش متفاوتی را برای افزودن و حذف عناصر تعریف می‌کند. عناصر از یک انتها اضافه می‌شوند که به آن rear⁴ می‌گویند و از انتهای دیگر به نام front⁵ حذف می‌شوند. به این رفتار FIFO⁶ (First in First Out) گفته می‌شود. برای تجسم…
صف در پایتون

بیایید کلاس Queue را با متُدهای enqueue، dequeue، is_empty و print مربوطه پیاده سازی کنیم.

ما از یک لیست برای ذخیره عناصر استفاده خواهیم کرد.
class Queue:
def __init__(self):
self.items = []

def is_empty(self):
return self.items == []

def enqueue(self, item):
self.items.insert(0, item)

def dequeue(self):
return self.items.pop()

def print_queue(self):
print(self.items)

q = Queue()
q.enqueue('a')
q.enqueue('b')
q.enqueue('42')
q.print_queue()

q.dequeue()
q.print_queue()


متُد enqueue یک عنصر را در ابتدای لیست اضافه می‌کند، در حالی که متُد dequeue آخرین عنصر را حذف می‌کند.

ℹ️ با کد بازی کنید و صف را در عمل ببینید!

#data_structures
#algorithm

@code_crafters
🔥4👍3👌1
Linked List¹

یک لینکدلیست² مجموعه‌ای از گره³ها است که در آن هر گره دادههای خود و پیوند⁵ی به گره بعدی را ذخیره می‌کند.

یک گره به گره دیگری پیوند دارد و آنچه را که می‌توان به عنوان یک زنجیره پیوندی⁶ در نظر گرفت، تشکیل می‌دهد:


اولین گره سَر⁷ نامیده می‌شود و به عنوان نقطه شروع برای هر تکرار⁸ در لیست استفاده می‌شود. آخرین گره باید پیوند آن به None⁹ اشاره داشته باشد، تا انتهای لیست تعیین شود.

برخلاف استک‌ها¹⁰ و صف‌ها¹¹، می‌توانید گره‌ها را در هر جایگاهی از لینکدلیست (شبیه به یک لیست استاندارد) اضافه و حذف کنید.

برنامه‌های کاربردی

لینکدلیست‌ها زمانی مفید هستند که داده‌های شما پیوند داده شده است. به عنوان مثال، زمانی که به عملکرد بازگردانی-بازانجام¹² نیاز دارید، گره‌ها می‌توانند وضعیت را با پیوندهایی به حالت‌های قبلی و بعدی نشان دهند. مثال دیگر می‌تواند یک پلی‌لیست¹³ موسیقی باشد که در آن هر بُرش¹⁴ با بُرش بعدی مرتبط است.

📌 لینکدلیست‌ها همچنین می‌توانند برای ایجاد سایر ساختارهای داده¹⁵ مانند استک‌ها، صف‌ها و گراف‌ها¹⁶ استفاده شوند.


پانوشت:

1. به فارسی: لیست پیوندی (فهرست پیوندی)
2. Linked List
3. Node
یا نود یک نقطه اتصال در شبکه است. این نقطه اتصال می‌تواند یکی از نقاط توزیع مجدد داده یا نقاط ارتباطی باشد که اطلاعات را ارسال و دریافت می‌کنند. اما این همه آنچه که در خصوص node یا گره در شبکه نیست.
4. Data
5. Link
6. Linked Chain
7. Head
8. Iteration
9. از None برای نشان دادن عدم وجود یک مقدار استفاده می‌شود. این در زبان‌های دیگر برنامه‌نویسی مشابه است. مانند دیگر مقادیر خالی مانند 0، [] و رشته خالی، زمانی که به یک متغیر بولی تبدیل می‌شود false خواهد بود.
10. Stacks (پشته‌ها)
11. Queues
12. Undo/ Redo
13. Playlist
14. Clip
15. Data Structures
16. Graphs
دیتا استراکچر یا ساختمان داده‌ای است که به منظور مدل‌سازی مجموعه‌ای از اشیاء و ارتباطات مابین آن‌ها مورد استفاده قرار می‌گیرد.

#data_structures
#algorithm

@code_crafters
🔥4👍1
CodeCrafters
Linked List¹ یک لینکدلیست² مجموعه‌ای از گره³ها است که در آن هر گره داده⁴های خود و پیوند⁵ی به گره بعدی را ذخیره می‌کند. یک گره به گره دیگری پیوند دارد و آنچه را که می‌توان به عنوان یک زنجیره پیوندی⁶ در نظر گرفت، تشکیل می‌دهد: اولین گره سَر⁷ نامیده می‌شود…
لینکد‌لیست‌ در پایتون

هر گره شامل داده و پیوند به گره بعدی خواهد بود.

بیایید با ایجاد کلاس Node¹ شروع کنیم:
class Node:
def __init__(self, data, next):
self.data = data
self.next = next


اکنون می‌توانیم کلاس LinkedList را با متُدهای مربوطه ایجاد کنیم:
class Node:
def __init__(self, data, next):
self.data = data
self.next = next

class LinkedList:
def __init__(self):
self.head = None

def add_at_front(self, data):
self.head = Node(data, self.head)

def add_at_end(self, data):
if not self.head:
self.head = Node(data, None)
return
curr = self.head
while curr.next:
curr = curr.next
curr.next = Node(data, None)

def get_last_node(self):
n = self.head
while(n.next != None):
n = n.next
return n.data

def is_empty(self):
return self.head == None

def print_list(self):
n = self.head
while n != None:
print(n.data, end = " => ")
n = n.next
print()


s = LinkedList()
s.add_at_front(5)
s.add_at_end(8)
s.add_at_front(9)

s.print_list()
print(s.get_last_node())


متُد ()add_at_front یک Node جدید را به عنوان سَر لیست اضافه می کند و سَر قبلی را به آن پیوند می‌دهد.
متُد ()add_at_end با استفاده از یک حلقه² while تا انتهای لیست تکرار می‌شود و گره جدید را به عنوان پیوندِ آخرین گره اضافه می‌کند.

ℹ️ کد را اجرا کنید و ببینید چگونه کار می‌کند!


پانوشت:

1. نام کلاس "گره" (نود/ Node)
2. حلقه در برنامه نویسی یکی از عنصرهای برنامه‌نویسی به حساب می‌آید که به وسیله آن می‌توان بخشی از کدها را به تعداد دفعات مشخص تا زمانی تکرار کرد که فرایند و پروسه مورد نظر به پایان برسد.

#data_structures
#algorithm

@code_crafters
👍4🔥4👌1