Syntax | سینتکس
بهترین پاسخ: مهدی با این تیکه کد. کانفیگ ده گیگ رو ایشالله باهاش بره یوتیوب آموزش ببینه 👌😂 تو مسئله های بعدی با کیفیت تر پیش میریم 🔥
نکاتی در خصوص حل مسئله:
در مصاحبهها برای شغلهای مرتبط با برنامهنویسی عموماً توصیه میشود در حل مسائل و الگوریتمها از ویژگیهای خاص زبان استفاده نشود و مسائل به طور عام بدون اتکا به یک زبان ویژه حل شوند. دلایل این توصیه عبارتند از:
- در مصاحبه بررسی میشود که شخص چگونه میتواند مسئله را به طور عام حل کند، نه آنکه از یک زبان مشخص استفاده کند.
- در شرکتهای مختلف زبانهای برنامهنویسی متفاوتی مورد استفاده قرار میگیرند. پس مهم است که کاربردی بودن الگوریتمها نشان داده شود.
- بدون اتکا به زبان، باید از مفاهیم پایهای مانند ریاضیات، منطق و طراحی الگوریتم استفاده شود.
بنابراین در مصاحبهها توصیه میشود که بدون استفاده از ویژگیهای خاص زبان، مسائل را حل کرد تا قدرت تحلیل و حل مسئله فرد بهتر به نمایش گذاشته شود.
#Problems
@Syntax_fa
در مصاحبهها برای شغلهای مرتبط با برنامهنویسی عموماً توصیه میشود در حل مسائل و الگوریتمها از ویژگیهای خاص زبان استفاده نشود و مسائل به طور عام بدون اتکا به یک زبان ویژه حل شوند. دلایل این توصیه عبارتند از:
- در مصاحبه بررسی میشود که شخص چگونه میتواند مسئله را به طور عام حل کند، نه آنکه از یک زبان مشخص استفاده کند.
- در شرکتهای مختلف زبانهای برنامهنویسی متفاوتی مورد استفاده قرار میگیرند. پس مهم است که کاربردی بودن الگوریتمها نشان داده شود.
- بدون اتکا به زبان، باید از مفاهیم پایهای مانند ریاضیات، منطق و طراحی الگوریتم استفاده شود.
بنابراین در مصاحبهها توصیه میشود که بدون استفاده از ویژگیهای خاص زبان، مسائل را حل کرد تا قدرت تحلیل و حل مسئله فرد بهتر به نمایش گذاشته شود.
#Problems
@Syntax_fa
👍6
3. Integer to English Words
مسئله سوم
سطح: سخت
توضیح:
یک عدد بزرگ تر مساوی با صفر (عدد حسابی) را با اسم متغیر num از ورودی دریافت میکنید و در خروجی بصورت حروف انگلیسی نمایشش می دهید.
مثال:
نکته:
برای اینکه بتونیم خروجی رو به راحتی تست کنیم. هممون با یه ساختار کد بزنیم
توی پایتون به این شکل جواب رو بفرستید:
توی گو:
جایزه 💥:
به بهترین جواب کانفیگ ده گیگابایت شخصی داده میشود.
#Problems
@Syntax_fa
مسئله سوم
سطح: سخت
توضیح:
یک عدد بزرگ تر مساوی با صفر (عدد حسابی) را با اسم متغیر num از ورودی دریافت میکنید و در خروجی بصورت حروف انگلیسی نمایشش می دهید.
مثال:
LeetCode
Example 1:
Input: num = 123
Output: "One Hundred Twenty Three"
Example 2:
Input: num = 12345
Output: "Twelve Thousand Three Hundred Forty Five"
Example 3:
Input: num = 1234567
Output: "One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven"
نکته:
برای اینکه بتونیم خروجی رو به راحتی تست کنیم. هممون با یه ساختار کد بزنیم
توی پایتون به این شکل جواب رو بفرستید:
def numberToWords(num: int) -> str:
"""
:type num: int
:rtype: str
"""
توی گو:
func numberToWords(num int) string {
}جایزه 💥:
به بهترین جواب کانفیگ ده گیگابایت شخصی داده میشود.
#Problems
@Syntax_fa
👍12👎2❤1
Syntax | سینتکس
3. Integer to English Words مسئله سوم سطح: سخت توضیح: یک عدد بزرگ تر مساوی با صفر (عدد حسابی) را با اسم متغیر num از ورودی دریافت میکنید و در خروجی بصورت حروف انگلیسی نمایشش می دهید. مثال: LeetCode Example 1: Input: num = 123 Output: "One Hundred Twenty…
بهترین پاسخ برای امیرحسین عزیز هستش.
پاسخ:
همچنین یه اشاره ای به جواب یکی از دوستان کنم. خیلی خوب کلک زدن😂
#Problems
@Syntax_fa
پاسخ:
def numberToWords(num):
d_one = {0: "", 1: "One ", 2: "Two ", 3: "Three ", 4: "Four ", 5: "Five ", 6: "Six ", 7: "Seven ", 8: "Eight ",
9: "Nine ", 10: "Ten ", 11: 'Eleven ', 12: "Twelve ",
13: "Thirteen ", 14: "Fourteen ", 15: "Fifteen ", 16: "Sixteen ", 17: "Seventeen ", 18: "Eighteen ",
19: "Nineteen "}
d_villagers = {2: "Twenty ", 3: "Thirty ", 4: "Forty ", 5: "Fifty ", 6: "Sixty ", 7: "Seventy ", 8: "Eighty ",
9: "Ninety "}
def score(num):
if num // 1_000_000_000 > 0:
return score(num // 1_000_000_000) + "Billion " + score(num % 1_000_000_000)
if num // 1_000_000 > 0:
return score(num // 1_000_000) + "Million " + score(num % 1_000_000)
elif num // 1_000 > 0:
return score(num // 1_000) + "Thousand " + score(num % 1_000)
elif num // 100:
return d_one[num // 100] + "Hundred " + score(num % 100)
elif num > 19:
return d_villagers[num // 10] + d_one[num % 10]
elif num <= 19:
return d_one[num]
return score(num).strip() if num != 0 else "Zero"
همچنین یه اشاره ای به جواب یکی از دوستان کنم. خیلی خوب کلک زدن😂
from num2words import num2words
def number_to_words(number):
return num2words(number)
input_number = 1234567
output_words = number_to_words(input_number)
print(output_words)
#Problems
@Syntax_fa
👏14👍4👎1
مسئله چهارم
سطح: ساده
توضیح:
برنامه ای بنویسید که خروجی زیر را داشته باشد
#Problems
@Syntax_fa
سطح: ساده
توضیح:
برنامه ای بنویسید که خروجی زیر را داشته باشد
Python
1
22
333
55555
88888888
13131313131313131313131313
212121212121212121212121212121212121212121
#Problems
@Syntax_fa
👍13🔥3👎2
Syntax | سینتکس
مسئله چهارم سطح: ساده توضیح: برنامه ای بنویسید که خروجی زیر را داشته باشد Python 1 22 333 55555 88888888 13131313131313131313131313 212121212121212121212121212121212121212121 #Problems @Syntax_fa
چند تا از جواب ها:
کدوم بهتره ؟
#Problems
@Syntax_fa
s= 1
i = 0
for h in range(7):
s ,i = s+i,s
for n in range(1,s+1):
print(s,end="")
print()
fib = [1, 1]
for _ in range(7):
print(str(fib[1])*fib[1])
fib.append(sum(fib))
fib.pop(0)
first_sequence = 1
second_sequence = 1
sequence_counter = 1
while sequence_counter < 8:
print_obj = str(second_sequence)
print_num = second_sequence
second_sequence += first_sequence
first_sequence = second_sequence - first_sequence
while print_num != 0:
print(print_obj, end='')
print_num -= 1
print('')
sequence_counter += 1
func Example() {
number := 1
oldNumber := 1
for {
for i := 0; i < number; i++ {
fmt.Printf("%d", number)
}
fmt.Printf("\n")
if number >= 21 {
break
}
number, oldNumber = number+oldNumber, number
}
}
کدوم بهتره ؟
#Problems
@Syntax_fa
👍5
مسئله پنجم
سطح: متوسط
توضیح:
ما سه آدرس زیر را داریم:
https://jsonplaceholder.typicode.com/todos/1
https://jsonplaceholder.typicode.com/todos/2
https://jsonplaceholder.typicode.com/todos/3
برنامه ای بنویسید که همزمان به هر سه آدرس درخواست get بزند و هرکدام که زودتر جواب داد. در خروجی response body را نمایش بدهد و بگوید پاسخ مال کدام آدرس است.
اگر بعد از گذشت 3 ثانیه هیچکدام از آدرس ها جواب ندادند. در خروجی Timeout را نمایش بدهد و برنامه متوقف شود.
(نمونه خروجی json رو تلگرام خودش زحمت کشید به پیام اضافش کرد)
(💥جایزه کانفیگ یه ماهه)
#Problems
@Syntax_fa
سطح: متوسط
توضیح:
ما سه آدرس زیر را داریم:
https://jsonplaceholder.typicode.com/todos/1
https://jsonplaceholder.typicode.com/todos/2
https://jsonplaceholder.typicode.com/todos/3
برنامه ای بنویسید که همزمان به هر سه آدرس درخواست get بزند و هرکدام که زودتر جواب داد. در خروجی response body را نمایش بدهد و بگوید پاسخ مال کدام آدرس است.
اگر بعد از گذشت 3 ثانیه هیچکدام از آدرس ها جواب ندادند. در خروجی Timeout را نمایش بدهد و برنامه متوقف شود.
(نمونه خروجی json رو تلگرام خودش زحمت کشید به پیام اضافش کرد)
(💥جایزه کانفیگ یه ماهه)
#Problems
@Syntax_fa
👍6🔥6👎1
Syntax | سینتکس
مسئله پنجم سطح: متوسط توضیح: ما سه آدرس زیر را داریم: https://jsonplaceholder.typicode.com/todos/1 https://jsonplaceholder.typicode.com/todos/2 https://jsonplaceholder.typicode.com/todos/3 برنامه ای بنویسید که همزمان به هر سه آدرس درخواست get بزند و هرکدام…
پاسخ در زبان گو:
با استفاده از قابلیت Select و channel ها میتوانیم چنین مسئله ای رو به سادگی حل کنیم.
#Problems
@Syntax_fa
package main
import (
"io"
"net/http"
"time"
)
func main() {
var result string
todo1 := make(chan string)
todo2 := make(chan string)
todo3 := make(chan string)
go GetRequestResponse(todo1, "https://jsonplaceholder.typicode.com/todos/1")
go GetRequestResponse(todo2, "https://jsonplaceholder.typicode.com/todos/2")
go GetRequestResponse(todo3, "https://jsonplaceholder.typicode.com/todos/3")
select {
case result = <-todo1:
println("todo1")
println(result)
case result = <-todo2:
println(todo2)
println(result)
case result = <-todo3:
println("todo3")
println(result)
case <-time.After(time.Second * 3):
println("Timeout")
}
}
func GetRequestResponse(content chan<- string, url string) {
res, err := http.Get(url)
if err != nil {
panic(err)
}
responseBody, err := io.ReadAll(res.Body)
defer res.Body.Close()
if err != nil {
panic(err)
}
content <- string(responseBody)
}
با استفاده از قابلیت Select و channel ها میتوانیم چنین مسئله ای رو به سادگی حل کنیم.
#Problems
@Syntax_fa
🔥8👍1
Syntax | سینتکس
مسئله پنجم سطح: متوسط توضیح: ما سه آدرس زیر را داریم: https://jsonplaceholder.typicode.com/todos/1 https://jsonplaceholder.typicode.com/todos/2 https://jsonplaceholder.typicode.com/todos/3 برنامه ای بنویسید که همزمان به هر سه آدرس درخواست get بزند و هرکدام…
پاسخ در زبان پایتون:
زمانی که از asyncio استفاده میکنیم باید کتابخانه های ماهم از قابلیت async پشتیبانی کنند به همین دلیل از aiohttp بجای requests استفاده میکنیم.
#Problems
@Syntax_fa
import asyncio
import aiohttp
async def fetch_data(url, session):
async with session.get(url) as response:
return await response.text(), url
async def main():
urls = [
"https://jsonplaceholder.typicode.com/todos/1",
"https://jsonplaceholder.typicode.com/todos/2",
"https://jsonplaceholder.typicode.com/todos/3",
]
async with aiohttp.ClientSession() as session:
tasks = [fetch_data(url, session) for url in urls]
try:
done, _ = await asyncio.wait(tasks, timeout=3, return_when=asyncio.FIRST_COMPLETED)
except asyncio.TimeoutError:
print("Timeout: No response within 3 seconds.")
return
for task in done:
response_body, url = task.result()
print(f"Response from {url}:\n{response_body}")
if __name__ == "__main__":
asyncio.run(main())
زمانی که از asyncio استفاده میکنیم باید کتابخانه های ماهم از قابلیت async پشتیبانی کنند به همین دلیل از aiohttp بجای requests استفاده میکنیم.
#Problems
@Syntax_fa
🔥12👍2
یه سوال جالب بپرسیم از جنگو کارای کانال
این سوال توی stackoverflow مطرح شده.
فرض کنید کلاینتی یک درخواست رو سمت ما میفرسته. جنگو شروع میکنه به پراسس و یه سری کار هارو داره انجام میده.
کلاینت که browser هستش درخواست رو که هنوز پاسخش رو دریافت نکرده و در حال پراسس هستش، کنسل میکنه و یا کلا browser رو میبنده.
سمت جنگو چه اتفاقی میوفته؟
آیا راهی هست که توی جنگو وقتی کاربر کنسل میکنه مطلع بشیم و ما هم ادامه پراسس رو انجام ندیم یا اینکه اون پراسس ها باید پیش بره آیا خود جنگو این قضیه رو هندل میکنه ؟
به این لینک ها سر بزنید:
https://groups.google.com/g/django-users/c/3ksj4Clne4c
https://docs.djangoproject.com/es/1.10/ref/request-response/#streaminghttpresponse-objects
https://stackoverflow.com/questions/39451818/how-does-django-handle-cancelled-or-interrupted-requests
#Problems
@Syntax_fa
این سوال توی stackoverflow مطرح شده.
فرض کنید کلاینتی یک درخواست رو سمت ما میفرسته. جنگو شروع میکنه به پراسس و یه سری کار هارو داره انجام میده.
کلاینت که browser هستش درخواست رو که هنوز پاسخش رو دریافت نکرده و در حال پراسس هستش، کنسل میکنه و یا کلا browser رو میبنده.
سمت جنگو چه اتفاقی میوفته؟
آیا راهی هست که توی جنگو وقتی کاربر کنسل میکنه مطلع بشیم و ما هم ادامه پراسس رو انجام ندیم یا اینکه اون پراسس ها باید پیش بره آیا خود جنگو این قضیه رو هندل میکنه ؟
به این لینک ها سر بزنید:
https://groups.google.com/g/django-users/c/3ksj4Clne4c
https://docs.djangoproject.com/es/1.10/ref/request-response/#streaminghttpresponse-objects
https://stackoverflow.com/questions/39451818/how-does-django-handle-cancelled-or-interrupted-requests
#Problems
@Syntax_fa
😱7👀4👍2
مسئله ششم (فیلسوفان حریص)
سطح: سخت
بریم سراغ یکی از معروف ترین مسائل برنامه نویسی
در علوم کامپیوتر مسئله فیلسوفان پشت میز غذاخوری یک مسئله تمثیلی است مربوط به طراحی هم روندی الگوریتم ها، که معمولاً برای نشان دادن مشکلات و تکنیک های همگام سازی و روش حل آن ها استفاده می شود. این مسئله در ابتدا در سال ۱۹۶۵ توسط آقای دیکسترا به عنوان یک تمرین امتحانی دانش آموزی طراحی شد.
بیان مسئله:
پنج فیلسوف ساکت در اطراف یک میز قرار می گیرند. روی میز کاسه های ماکارونی وجود دارد. چنگال هایی مابین هر جفت از فیلسوف های کنار هم قرار داده شده است. هر فیلسوف باید به صورت متناوب فکر کند و بخورد. با این حال، یک فیلسوف فقط زمانی می تواند ماکارونی بخورد که که هر دو چنگال سمت چپ و سمت راست را در اختیار داشته باشد. هر چنگال در هر لحظه فقط می تواند توسط یک فیلسوف استفاده شود و بنابراین، یک فیلسوف فقط زمانی می تواند از چنگال استفاده کند که چنگال توسط فیلسوف دیگر در حال استفاده نباشد. بعد از این که یک فیلسوف خوردنش تمام شد، باید هر دو چنگال را روی میز بگذارد تا بقیه از آن ها استفاده کنند. یک فیلسوف فقط می تواند چنگال سمت راست خود یا چنگال سمت چپ خود را، زمانی که موجود باشد، در اختیار بگیرد و نمیتواند قبل از در اختیار گرفتن هر دو چنگال خوردن را شروع کند. مقدار خوردن ارتباطی به حجم باقیمانده ماکارونی یا فضای معده افراد ندارد؛ به عبارتی، فرض بر این است که مقدار ماکارونی نامحدود است و مقدار خوردن نیز نامحدود است. مسئله این است که چگونه یک نظم رفتاری (الگوریتم همروندی) طراحی کنیم، به گونهای که هیچ فیلسوفی گرسنه نماند؛ یعنی هر کدام بتواند به مدت نامتناهی و متناوباً بخورد و فکر کند. البته با فرض اینکه هیچ فیلسوفی نمیداند که چه زمانی سایر فیلسوفان قصد خوردن یا فکر کردن دارند.
این مسئله با این هدف طراحی شد که چالش های پیشگیری از بن بست را نشان دهد. بن بست یک وضعیتی از سیستم است که در آن هیچ پیشرفتی امکان پذیر نیست.
حتما سرچ کنید و بیشتر در مورد این مسئله بخونید (عکس توی کامنت رو نگاه کنید)
مسئله رو با استفاده از یکی از زبان ها حل کنید و از همه مهم تر بخوبی در مورد مسئله و راه حلتون توضیح بدید.
(جایزه کانفیگ 100 گیگابایتی بدون مدت زمان)
#Problems
@Syntax_fa
سطح: سخت
بریم سراغ یکی از معروف ترین مسائل برنامه نویسی
در علوم کامپیوتر مسئله فیلسوفان پشت میز غذاخوری یک مسئله تمثیلی است مربوط به طراحی هم روندی الگوریتم ها، که معمولاً برای نشان دادن مشکلات و تکنیک های همگام سازی و روش حل آن ها استفاده می شود. این مسئله در ابتدا در سال ۱۹۶۵ توسط آقای دیکسترا به عنوان یک تمرین امتحانی دانش آموزی طراحی شد.
بیان مسئله:
پنج فیلسوف ساکت در اطراف یک میز قرار می گیرند. روی میز کاسه های ماکارونی وجود دارد. چنگال هایی مابین هر جفت از فیلسوف های کنار هم قرار داده شده است. هر فیلسوف باید به صورت متناوب فکر کند و بخورد. با این حال، یک فیلسوف فقط زمانی می تواند ماکارونی بخورد که که هر دو چنگال سمت چپ و سمت راست را در اختیار داشته باشد. هر چنگال در هر لحظه فقط می تواند توسط یک فیلسوف استفاده شود و بنابراین، یک فیلسوف فقط زمانی می تواند از چنگال استفاده کند که چنگال توسط فیلسوف دیگر در حال استفاده نباشد. بعد از این که یک فیلسوف خوردنش تمام شد، باید هر دو چنگال را روی میز بگذارد تا بقیه از آن ها استفاده کنند. یک فیلسوف فقط می تواند چنگال سمت راست خود یا چنگال سمت چپ خود را، زمانی که موجود باشد، در اختیار بگیرد و نمیتواند قبل از در اختیار گرفتن هر دو چنگال خوردن را شروع کند. مقدار خوردن ارتباطی به حجم باقیمانده ماکارونی یا فضای معده افراد ندارد؛ به عبارتی، فرض بر این است که مقدار ماکارونی نامحدود است و مقدار خوردن نیز نامحدود است. مسئله این است که چگونه یک نظم رفتاری (الگوریتم همروندی) طراحی کنیم، به گونهای که هیچ فیلسوفی گرسنه نماند؛ یعنی هر کدام بتواند به مدت نامتناهی و متناوباً بخورد و فکر کند. البته با فرض اینکه هیچ فیلسوفی نمیداند که چه زمانی سایر فیلسوفان قصد خوردن یا فکر کردن دارند.
این مسئله با این هدف طراحی شد که چالش های پیشگیری از بن بست را نشان دهد. بن بست یک وضعیتی از سیستم است که در آن هیچ پیشرفتی امکان پذیر نیست.
حتما سرچ کنید و بیشتر در مورد این مسئله بخونید (عکس توی کامنت رو نگاه کنید)
مسئله رو با استفاده از یکی از زبان ها حل کنید و از همه مهم تر بخوبی در مورد مسئله و راه حلتون توضیح بدید.
(جایزه کانفیگ 100 گیگابایتی بدون مدت زمان)
#Problems
@Syntax_fa
🔥6👍4👎1
مسئله هفتم (پایتون)
سطح: ساده
ما همچین کدی را داریم:
تابع plus کارش این است که number را به علاوه یک کند.
چگونه می توانیم کاری کنیم که number زمانی که در تابع plus به علاوه یک می شود، موقع پرینت هم مقدارش بیشتر شده باشد؟
#Problems
@Syntax_fa
سطح: ساده
ما همچین کدی را داریم:
def plus(...):
...
if __name__ == "__main__":
number = ...
plus(number)
print(number)
تابع plus کارش این است که number را به علاوه یک کند.
چگونه می توانیم کاری کنیم که number زمانی که در تابع plus به علاوه یک می شود، موقع پرینت هم مقدارش بیشتر شده باشد؟
#Problems
@Syntax_fa
👍7👎2
Syntax | سینتکس
مسئله هفتم (پایتون) سطح: ساده ما همچین کدی را داریم: def plus(...): ... if __name__ == "__main__": number = ... plus(number) print(number) تابع plus کارش این است که number را به علاوه یک کند. چگونه می توانیم کاری کنیم که number زمانی…
پاسخ:
یکی از روش ها استفاده از کلاس ها هستش
روش بعدی استفاده از متغیر های گلوبال هستش:
#Problems
@Syntax_fa
یکی از روش ها استفاده از کلاس ها هستش
class MutableInteger:
def __init__(self, number):
self.number = number
def __add__(self, other):
self.number += other
def __str__(self):
return str(self.number)
def plus(number: MutableInteger):
number += 1
if __name__ == "__main__":
num = MutableInteger(1)
plus(num)
print(num)
روش بعدی استفاده از متغیر های گلوبال هستش:
def plus():
global number
number += 1
if __name__ == "__main__":
number = 1
plus()
print(number)
#Problems
@Syntax_fa
👍5