تمرین برنامه نویسی
118 subscribers
41 photos
4 videos
4 files
178 links
سلام ✌🏻🌺
به کانال من خوش آمدید✌🏻
قراره باهم در این کانال تمرینات پایتون وجاوا اسکریپت رو یادبگیریم ✌🏻😉🔥
یادگیری جاوااسکریپت/پایتون
کلی تمرین برنامه نویسی
Download Telegram
سوال دوم leet code🛎

تبدیل رشته به عدد صحیح (atoi)


سوال :تابع myAtoi(string s) را پیاده‌سازی کنید که یک رشته را به یک عدد صحیح ۳۲ بیتی علامت‌دار تبدیل می‌کند.

الگوریتم برای myAtoi(string s) به شرح زیر است:

1⃣فضای خالی: هر فضای خالی پیشرو (" ") را نادیده بگیرید.

2⃣علامت: با بررسی اینکه آیا کاراکتر بعدی '-' یا '+' است، علامت را تعیین کنید؛ اگر هیچ‌کدام وجود نداشته باشد، فرض کنید عدد مثبت است.

3⃣تبدیل:عدد صحیح را با پرش صفرهای اولیه بخوانید تا زمانی که به یک کاراکتر غیر عددی برسید یا انتهای رشته را ببینید. اگر هیچ عددی خوانده نشد، نتیجه ۰ خواهد بود.

4⃣گرد کردن: اگر عدد صحیح خارج از محدوده عدد صحیح علامت‌دار ۳۲ بیتی [-2^31, 2^31 - 1] باشد، عدد را گرد کنید تا در محدوده باقی بماند. به طور خاص، اعداد کمتر از -2^31 باید به -2^31 گرد شوند و اعداد بزرگتر از 2^31 - 1 باید به 2^31 - 1 گرد شوند.

▶️عدد صحیح را به عنوان نتیجه نهایی بازگردانید.

مثال ۱:🔰

ورودی:"s = "42

خروجی: 42

توضیح:

کاراکترهای زیرخط‌دار آنچه خوانده شده‌اند و نشانگر موقعیت خواندن فعلی است.
مرحله ۱: "42" (هیچ کاراکتری خوانده نشده زیرا فضای خالی پیشرو وجود ندارد)
^
مرحله ۲: "42" (هیچ کاراکتری خوانده نشده زیرا نه '-' و نه '+' وجود ندارد)
^
مرحله ۳: "42" ("42" خوانده می‌شود)



مثال ۲:🔰

ورودی:"s = " -042

خروجی: -42

توضیح:

مرحله ۱: " -042" (فضای خالی پیشرو خوانده و نادیده گرفته می‌شود)
^
مرحله ۲: " -042" ('-' خوانده می‌شود، بنابراین نتیجه منفی خواهد بود)
^
مرحله ۳: " -042" ("042" خوانده می‌شود، صفرهای اولیه در نتیجه نادیده گرفته می‌شوند)



مثال ۳:🔰

ورودی:"s = "1337c0d3

خروجی: 1337

توضیح:

مرحله ۱: "1337c0d3" (هیچ کاراکتری خوانده نشده زیرا فضای خالی پیشرو وجود ندارد)
^
مرحله ۲: "1337c0d3" (هیچ کاراکتری خوانده نشده زیرا نه '-' و نه '+' وجود ندارد)
^
مرحله ۳: "1337c0d3" ("1337" خوانده می‌شود؛ خواندن متوقف می‌شود زیرا کاراکتر بعدی غیر عددی است)


مثال ۴:🔰

ورودی:"s = "0-1

خروجی:0

توضیح:

مرحله ۱: "0-1" (هیچ کاراکتری خوانده نشده زیرا فضای خالی پیشرو وجود ندارد)
^
مرحله ۲: "0-1" (هیچ کاراکتری خوانده نشده زیرا نه '-' و نه '+' وجود ندارد)
^
مرحله ۳: "0-1" ("0" خوانده می‌شود؛ خواندن متوقف می‌شود زیرا کاراکتر بعدی غیر عددی است)



مثال ۵:🔰

ورودی: "s = "words and 987

خروجی:0

توضیح:

خواندن در اولین کاراکتر غیر عددی 'w' متوقف می‌شود.
#الگوریتم
#تمرین_دو
#leet_code
https://t.me/programmingexercisemp
Ba Tou
Ebi - [ Listen2Music.ir ]
یه آهنگ زیبا از استاد😍👍
موسیقی درمانی
2
قدم دوم تحلیل کدهای پروژه Neural MMO:🐡
♻️ تعریف مسیرها:
python
_this_path = os.path.dirname(os.path.realpath(file))
shader_file = os.path.join(_this_path, "./simple.glsl")
obj_file = os.path.join(_this_path, "./orion.obj")
mtl_file = os.path.jo_this_path./orion.mtl")

تحلیل کدها:🔰

۱.
_this_path = os.path.dirname(os.path.realpath(__file__))

- این خط کد مسیر دایرکتوری جاری (محل فایل اسکریپت) را به _this_path نسبت می‌دهد. تابع os.path.realpfilele__) مسیر واقعی فایل اسکریپت را برمی‌گرداند و os.path.dirname() دایرکتوری آن را استخراج می‌کند.
۲.
shader_file = os.path.join(_this_path, "./simple.glsl")

- این خط مسیر simple.glsl را که فایل شیدر است ایجاد می‌کند. با استفاده از os.path.join، مسیر _this_path و نام فایل به درستی ترکیب می‌شود.
۳.
obj_file = os.path.jo_this_path./orion.mtl")

- مشابه shader_file، این خط مسیر فایل orion.obj (که ممکن است یک مدل سه‌بعدی باشد) را تشکیل می‌دهد.
۴.
mtl_file:
mtl_file = os.path.join(_this_path, "./orion.mtl")

- این خط مسیر فایل orion.mtl (که معمولاً شامل متریال‌های مدل سه‌بعدی است) را مشخص می‌کند. البته به نظر می‌رسد در کد شما یک اشتباه تایپی وجود دارد: os.path.jo_this_path./orion.mtl" باید به صورت صحیح os.path.join(_this_path, "./orion.mtl") باشد.
خلاصه مسیر:♻️

- _this_path:
دایرکتوری که فایل اصلی در آن قرار دارد.
- shader_file:
مسیر فایل شیدر (با پسوند .glsl).
- obj_file:
مسیر فایل شیء (با پسوند .obj).
- mtl_file:
مسیر فایل متریال (با پسوند .mtl).

گام بعدی هم بهتون بعدا راجبش میگم😉😍👍

منبع👇🏻👇🏻👇🏻
https://github.com/openai/neural-mmo/blob/v1.0/jsuarez/extra/embyr_deprecated/embyr/examples/textures/main.py
تمرین سوم leet code🛎
🖌مطابقت با عبارات منظم
سخت

سوال: شما یک رشته ورودی s و یک الگو p دارید. باید مطابقت با عبارات منظم را پیاده‌سازی کنید که از '.' و '*' پشتیبانی کند که:

- '.' با هر کاراکتر تکی مطابقت دارد.
- '*' با صفر یا بیشتر از عنصر قبلی مطابقت دارد.
مطابقت باید کل رشته ورودی را پوشش دهد (نه جزئی).

جواب ها🖊

مثال 1:🔰

ورودی: s = "aa"، p = "a"
خروجی: false
توضیح: "a" با کل رشته "aa" مطابقت ندارد.

مثال 2:🔰

ورودی: s = "aa"، p = "a*"
خروجی: true
توضیح: '*' به معنای صفر یا بیشتر از عنصر قبلی، یعنی 'a' است. بنابراین با تکرار 'a' یک بار، به "aa" تبدیل می‌شود.

مثال 3:🔰

ورودی: s = "ab"، p = ".*"
خروجی: true
توضیح: ".*" به معنای "صفر یا بیشتر (*) از هر کاراکتر (.)" است.


#تمرین_سه
#الگوریتم
#leet_code
تمرین چهارم leet code🛎

📕تطبیق الگوی عبارات منظم

نوع سوال:سخت


سوال :به عنوان ورودی یک رشته s و یک الگو p داده شده است، باید تطبیق الگوی عبارات منظم را پیاده‌سازی کنید که از '.' و '*' پشتیبانی می‌کند، به‌طوری‌که:

- '.' با هر کاراکتر تکی مطابقت دارد.
- '*' با صفر یا بیشتر از عنصر قبلی مطابقت دارد.

تطبیق باید شامل کل رشته ورودی باشد (نه بخشی).

مثالها♻️

مثال 1:🔰

ورودی: s = "aa" ، p = "a"

خروجی: false

توضیح: "a" با کل رشته "aa" مطابقت ندارد.

مثال 2:🔰

ورودی: s = "aa" ، p = "a*"

خروجی: true


توضیح: '*' به معنای صفر یا بیشتر از عنصر قبلی، یعنی 'a' است. بنابراین، با تکرار 'a' یک بار، به "aa" تبدیل می‌شود.

مثال 3:🔰

ورودی:" *."=s = "ab" ، p

خروجی: true

توضیح: ".*" به معنای "صفر یا بیشتر از هر کاراکتر (.)" است.

#الگوریتم
#تمرین_چهار
#leet_code

https://t.me/programmingexercisemp
تمرین پنجم Leet code🛎

سوال:به ترکیب‌های حروف یک شماره تلفن اشاره می‌کنید. هدف این است که تمام ترکیب‌های ممکن از حروف را که یک شماره می‌تواند نمایش دهد، برگردانید. شماره‌های ورودی شامل اعداد ۲ تا ۹ است.

نقشه‌برداری حروف به اعداد به صورت زیر است (مانند دکمه‌های تلفن):

- 2: "abc"
- 3: "def"
- 4: "ghi"
- 5: "jkl"
- 6: "mno"
- 7: "pqrs"
- 8: "tuv"
- 9: "wxyz"

مثالها♻️

مثال 1:🔰
- ورودی: "digits = "23
- خروجی: ["ad","ae","af","bd","be","bf","cd","ce","cf"]

مثال 2:🔰
- ورودی: digits = ""
- خروجی: []

مثال 3:🔰
- ورودی:" digits = "2
- خروجی: ["a","b","c"]

#leet_code

#الگوریتم
#تمرین_پنجم

https://t.me/programmingexercisemp
This media is not supported in your browser
VIEW IN TELEGRAM
از صحبت های ایلان ماسک در این مصاحبه میشه دوتا نتیجه گرفت:

1.تکیه کردن به خودت در یادگیری یه مهارت
2.ریسک پذیر بودن برای عملی کردن ایده هات


https://t.me/programmingexercisemp
3
تمرین ششم leet code🛎
*️⃣4Sum
نوع تمرین: متوسط

تمرین:به شما یک آرایه از n عدد صحیح داده شده است. باید آرایه‌ای از همه quadruplets منحصر به فرد [nums[a], nums[b], nums[c], nums[d]] برگردانید که شرایط زیر را داشته باشند:

- 0 <= a, b, c, d < n

- a, b, c,و d
متمایز هستند.

- nums[a] + nums[b] + nums[c] + nums[d] == target

شما می‌توانید پاسخ را به هر ترتیبی برگردانید.

مثالها♻️

مثال 1:🔰
ورود:
nums = [1,0,-1,0,-2,2], target = 0

خروجی:
[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]



مثال 2:🔰
ورودی:
nums=[2,2,2,2,2] ,
target=8

خروجی
[[2,2,2,2]]
Dance The Night
Dua Lipa
💫🪐⚡️انرژی درمانی
سلام سلام🙌🏻
درود مجدد به همگی🙏🏻❤️
میریم سراغ تمرین بعدی leet code🛎

بروند تقسیم دو عدد صحیح
سطح تمرین:متوسط



سوال:دو عدد صحیح به نام‌های مقدار اصلی (dividend) و مقدار تقسیم‌کننده (divisor) داده شده است. دو عدد صحیح را بدون استفاده از عمل‌گرهای جمع، تقسیم و باقی‌مانده تقسیم کنید.
تقسیم صحیح باید به سمت صفر truncate شود، به این معنی که بخش کسری آن از بین برود. به عنوان مثال، 8.345 به 8 و 2.7335- به 2- truncate می‌شود.
پس از تقسیم مقدار اصلی بر مقدار تقسیم‌کننده، مقدار کسر را برگردانید.
توجه: فرض کنید با محیطی کار می‌کنیم که فقط می‌تواند اعداد صحیح در محدوده 32 بیتی را ذخیره کند: [231-, 231 − 1]. برای این مشکل، اگر مقدار کسر بزرگتر از 231 - 1 باشد، 231 - 1 را برگردانید و اگر کمتر از 231- باشد، 231 -را برگردانید.

مثالها♻️

مثال 1:🔰

ورودی: مقدار اصلی = 10، مقدار تقسیم‌کننده = 3
خروجی: 3
توضیح: 10/3 = 3.33333.. که به 3 truncate می‌شود.
مثال 2: 🔰

ورودی: مقدار اصلی = 7، مقدار تقسیم‌کننده = 3 -
خروجی: 2 -
توضیح: 7/3- = -2.33333.. که به 2- truncate می‌شود.
https://t.me/programmingexercisemp
تمرین هشتم leet code🔥🛎

موضوع :مسئله N-ملکه
نوع تمرین :سخت

تمرین :مسئله N-ملکه، مشکل قرار دادن n ملکه روی یک تخته شطرنج n x n است به طوری که هیچ دو ملکه‌ای به یکدیگر حمله نکنند.

با توجه به یک عدد صحیح n، تمام راه‌حل‌های متمایز برای مسئله N-ملکه را برگردانید. شما می‌توانید جواب را به هر ترتیبی ارائه دهید.

هر راه‌حل شامل یک پیکربندی متمایز از قرارگیری ملکه‌هاست، که در آن 'Q' و '.' به ترتیب نشان‌دهنده یک ملکه و یک فضای خالی هستند.

مثالها ♻️

مثال1:🔰

ورودی: n = 4
خروجی: [[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]]
توضیح: دو راه‌حل متمایز برای معماي چهار وزیر وجود دارد که در بالا نشان داده شده است.

مثال 2: 🔰

ورودی: n = 1
خروجی: [["Q"]]

شکل مربوط به مثال 1هست


https://t.me/programmingexercisemp
🔥1
تمرین نهم leet code 🛎🔥
زیرآرایه حداکثر

سطح تمرین :متوسط

تمرین:به شما یک آرایه صحیح داده شده است؛ باید زیرآرایه‌ای را پیدا کنید که بیشترین مجموع را دارد و برای شما مجموع آن را برگرداند.


مثالها:♻️

مثال ۱:🔰
- ورودی: nums = [-2,1,-3,4,-1,2,1,-5,4]
- خروجی: 6
- توضیح: زیرآرایه [4,-1,2,1] بالاترین مجموع ۶ را دارد.
مثال ۲:🔰
- ورودی: nums = [1]
- خروجی: 1
- توضیح: زیرآرایه [1] بالاترین مجموع ۱ را دارد.
مثال ۳:🔰

- ورودی: nums = [5,4,-1,7,8]
- خروجی: 23
- توضیح: زیرآرایه [5,4,-1,7,8] بیشترین مجموع ۲۳ را دارد.



کانال :
https://t.me/programmingexercisemp
🔥2
تمرین یازدهم LeetCode 🛎🔥
ظرفی با بیشترین مقدار آب

سطح تمرین : متوسط

تکنیک حل : Two pointer

صورت سوال و ورودی ها :

به شما یک آرایه از اعداد صحیح به نام height داده می‌شود که طول آن n است

این آرایه نمایان‌گر n خط عمودی است که به‌ترتیب در نقاط (i, 0) تا (i, height[i]) رسم شده‌اند

(یعنی هر خط در موقعیت i، ارتفاع height[i] دارد)

خروجی و نتیجه مورد انتظار برنامه :

دو خط را بیابید که همراه با محور x یک ظرف تشکیل دهند به‌طوری‌که این ظرف بیشترین مقدار آب ممکن را در خود نگه دارد

مقدار واحد آبی که ظرف می‌تواند نگه دارد را برگردانید

توجه داشته باشید که اجازه ندارید ظرف را کج رسم کنید
(گیج نشید. منظور اینه که نمیتونید خطوط شیب دار رو تصور کنید و تو مسئله پیاده سازیش کنید تا از ارتفاع بالاتر بتونید ظرفیت رو حساب کنید)


مثال ها :♻️

مثال 1 :🔰
ورودی :
height = [1,8,6,2,5,4,8,3,7]
خروجی :
49


مثال 2 :🔰
ورودی:
height = [1,1]
خروجی:
1


و اما کد
مثل همیشه چند متغیر اولیه داریم

در کد ما باید اشاره گر ها را مشخص کنیم که از left و right استفاده میکنیم ( طبق hint دوم سوال)
و همچنین تعریف متغیر بیشترین ظرفیت
left = 0
right = len(height) - 1
max_cap = 0

سپس حلقه زیر را تعریف میکنیم :
   while left < right:
cap = (right - left) * min(height[left], height[right])
max_cap = max(max_cap, cap)

شرط حلقه به چه معناست؟ کمتر بودن اندیس پوینتر left نسبت به right همان مفهموم به هم نرسیدن دو پوینتر است

بعد از آن یک شرط داریم که پوینتری که به ستون با ارتفاع کمتر اشاره میکند را جابجا میکند
if height[left] < height[right]:
left += 1
else:
right -= 1

و در آخر max_cap رو به عنوان جواب return میکنیم

نکته : در صورت بروت فورس کردن برای هر جفت، پیچیدگی زمانی به شکل O(n^2) خواهد بود

برای تمرین های بیشتر به کانال ما بپیوندید!
🔥1
ساختار داده و الگوریتم‌ها تو زندگی واقعی کجا بدرد می‌خورن ؟

🔸 پارت ۱ : گراف ها

🔹تو قسمت اول می‌خوایم بریم سراغ گراف‌ها
حتما تو سایت‌های حل مسئله با اسمشون آشنا شدید
گراف‌ها شبکه‌ ای تشکیل‌ شده از گره‌ ها nodes و یال‌ ها edges هستن
در مسائل ریاضی و الگوریتمی صفات گوناگونی به گره‌ها داده می‌شه مثل رنگ و وزن و اما در دنیای واقعی گره‌ها می‌تونن کلی ویژگی مختلف داشته باشن

🔹مثلاً اگه سوشال مدیاهایی مثل اینستاگرام رو در نظر بگیریم هر کاربر که یک گره محسوب می‌شه ویژگی‌ هایی مثل دسته‌ بندی پست‌ های لایک‌ شده صفحات دنبال‌شده سن کشور و داره

🔹گراف‌ها تو چند بخش کاربرد کلیدی دارن که تو این مطلب می‌خوایم به کاربردشون توی بیوانفورماتیک دانش ترکیبی ریاضی کامپیوتر و زیست‌شناسی بپردازیم

🔶مدل‌سازی شبکه‌های ژنی
یعنی چی ؟

🔹ما یه چیزی داریم به اسم شبکه‌های تنظیم ژن GRNs
که نشون می‌دن یه ژن چه تاثیری روی ژن دیگه می‌ذاره

🔶 هنوز نامفهومه و کابردش مشخص نیست اما...

🔹یه‌سری ژن‌ها نقش کلیدی دارن مثل نگهبان ژنوم معروف یعنی TP53 که تو خیلی از سرطان‌ها جهش می‌کنه و از کار می‌ افته
این ژن با چندتا پروتئین تعامل داره به اسم‌های ATM و MDM2

حالا این MDM2 مثل ترمز عمل می‌کنه و جلوی TP53 رو می‌گیره
چرا ؟
چون فعالیت زیاد TP53 می‌تونه باعث مرگ بیش از حد سلول‌ها بشه

تو سرطان‌ها یا TP53 جهش پیدا می‌کنه یا MDM2 بیش‌فعال می‌شه و این سیستم به‌هم می‌ریزه


🔶خب گراف‌ها کجان ؟

🔹تو طراحی داروهای ضدسرطان میان مسیرهای تعاملی بین این ژن‌ها و پروتئین‌ها رو مدل‌سازی می‌کنن تا بفهمن چطوری می‌شه مثلا جلوی MDM2 رو گرفت که TP53 کارشو درست انجام بده و سلول‌های سرطانی بمیرن
و این گراف‌ ها هستن که کمک می‌ کنن بفهمیم توی این شبکه کی به کی وصله کی تنظیم‌ کننده‌ کیه و نقش اصلی رو کی بازی می‌کنه!

🔻برای مطالب مشابه به کانال ما بپیوندید!🔻
تمرین دوازدهم LeetCode 🛎🔥
تبدیل عدد صحیح به عدد رومی

سطح تمرین : متوسط🟡

تکنیک حل : Greedy

🔷صورت سؤال و ورودی‌ها🔷

به شما عددی صحیح به نام num داده می‌شود که مقدار آن بین 1 تا 3999 است. هدف این است که این عدد را به عدد رومی (Roman numeral) تبدیل کنید.

اعداد رومی از ۷ نماد اصلی تشکیل شده‌اند:

I = 1
V = 5
X = 10
L = 50
C = 100
D = 500
M = 1000

📖قوانین تشکیل عدد رومی📖

1. نمادهای I, X, C, و M می‌توانند حداکثر 3 بار پشت سر هم تکرار شوند (برای مثال III, XX, CCC)


2. اگر عددی با 4 یا 9 شروع شود باید از حالت کاهشی (Subtractive Form) استفاده کنیم

5 = IV
9 = IX
40 = XL
90 = XC
400 = CD
900 = CM



3. برای بقیه مقادیر باید بزرگ‌ ترین مقدار رومی که از عدد فعلی کمتر یا مساوی است انتخاب شود و از عدد کم شود.

مثال‌ها ♻️

مثال 1 : 🔰
ورودی:
num = 3749
خروجی:
MMMDCCXLIX
گسترده:
3000 = MMM
700 = DCC
40 = XL
9 = IX


مثال 2 : 🔰
ورودی:
num = 58
خروجی:
LVIII
گسترده:
50 = L
8 = VIII


مثال 3 : 🔰
ورودی:
num = 1994
خروجی:
MCMXCIV
گسترده:
1000 = M
900 = CM
90 = XC
4 = IV


🛑و اما کد پایتون🛑

مثل اکثر سوال ها به تعریف متغیر های اصلی و پایه میپردازیم :
roman_numerals = [
(1000, "M"),
(900, "CM"), (500, "D"),
(400, "CD"), (100, "C"),
(90, "XC"), (50, "L"),
(40, "XL"), (10, "X"),
(9, "IX"), (5, "V"),
(4, "IV"), (1, "I")
]

result = []
☄️به جای استفاده از لیست و تاپل میتونید از دیکشنری هم استفاده کنید اما بهینه نیست☄️

for value, symbol in roman_numerals:
if number == 0:
break
☄️یک حلقه برای پیمایش ایجا. میکنیم و شرطی داخل آن میگذاریم تا مطمئن شویم عددی برای تبدیل باقی مانده است یا نه☄️
times = number // value
☄️در این قسمت متغیر times نشون میده چند بار اون نماد باید استفاده بشه مثلا اگه نماد m میشه 1000 و عدد ما 2400 هست باید 2 بار m استفاده بشه☄️
if times:
result.append(symbol * times)
number %= value
☄️در اینجا شرطی داریم که اگر تعداد دفعات استفاده یک نماد بیشتر از یک (قابل استفاده) بود به خروجی اضافه اش کنه و بعدش عدد رو با باقیمانده فعلی آپدیت کنه☄️

🔻برای تمرین های بیشتر به کانال ما بپیوندید!🔻
🔥4
بزودی آغاز فعالیت کانالمون وتحلیل های سایت
Leet code
🥳🥳🥳🥳
3
تمرین leet code 🔥
موضوع :پیمایش میان‌ترتیبی (Inorder) در درخت دودویی 
    سطح تمرین : آسان

موضوع: 
با داده شدن ریشه (root) یک درخت دودویی، مقدارهای نودها را به ترتیب پیمایش میان‌ترتیبی برگردانید.

————————


 
مثال 1:
Input: root = [1,null,2,3]
Output: [1,3,2]
Explanation:

مثال 2:
Input: root = [1,2,3,4,5,null,8,null,null,6,7,9]
Output: [4,2,6,5,7,1,3,9,8]
Explanation:

مثال 3:
Input: root = [ ]
Output: [ ]
مثال 4:
Input: root = [1]
Output: [1]

————————

محدودیت‌ها:
⦁ تعداد نودهای درخت در بازه [۰ تا ۱۰۰] است
⦁ مقدار هر نود در بازه [-۱۰۰ تا ۱۰۰] است





https://leetcode.com/problems/binary-tree-inorder-traversal/

#الگوریتم
#تمرین
🔥3