HICTE Blog – Telegram
HICTE Blog
1.18K subscribers
383 photos
126 videos
8 files
616 links
گروهمون: @HicteGroup

دسته بندی پست‌ها: t.me/HicteBlog/743
Download Telegram
#کد_بزنیم

اگه ما تمام اعداد طبیعی کمتر از 10 که مضرب 3 یا 5 هستن رو در نظر بگیریم:
[3, 5, 6, 9]
مجموعشون 23 میشه.

حالا اگه بخوایم کدی بنویسیم که مجموع مضرب های m یا n که کمتر از t هستن رو پیدا کنه؛ با این شرایط که کد ما

الف: حداکثر برای t برابر با عدد بزرگ 10 به توان 1 میلیون

ب: حداکثر برای t برابر با عدد 1 میلیارد

هم بخوبی کار کنه؛ چطور مینویسیمش؟ :)))

از هر زبان برنامه‌نویسی‌ای میتونید استفاده کنید. 👨‍💻

کدهاتون رو توی کامنت بفرستید.👇

[اگه نتونستید حالت الف که سخت تره رو بنویسید برای حالت ب تلاش کنید.]

خب دیگه... بسم الله

🚁 Hicte Blog
👍7🤯1
HICTE Blog
#کد_بزنیم اگه ما تمام اعداد طبیعی کمتر از 10 که مضرب 3 یا 5 هستن رو در نظر بگیریم: [3, 5, 6, 9] مجموعشون 23 میشه. حالا اگه بخوایم کدی بنویسیم که مجموع مضرب های m یا n که کمتر از t هستن رو پیدا کنه؛ با این شرایط که کد ما الف: حداکثر برای t برابر با عدد بزرگ…
این کدی هست که برای حالت ب نوشتم:

# Refrence to arithmetic progression:
# https://en.wikipedia.org/wiki/Arithmetic_progression


def APSum(first, number, difference):
last = first + (number - 1) * difference
return number * (first + last) // 2


def NMultipliers(bound, x):
return bound // x if bound % x else bound // x - 1


m = 3
n = 5
t = 1000_000_000
result = (
APSum(m, NMultipliers(t, m), m)
+ APSum(n, NMultipliers(t, n), n)
- APSum(m * n, NMultipliers(t, m * n), m * n)
)

print(result)


🚁 Hicte Blog
👌2👍1🔥1
HICTE Blog
#کد_بزنیم اگه ما تمام اعداد طبیعی کمتر از 10 که مضرب 3 یا 5 هستن رو در نظر بگیریم: [3, 5, 6, 9] مجموعشون 23 میشه. حالا اگه بخوایم کدی بنویسیم که مجموع مضرب های m یا n که کمتر از t هستن رو پیدا کنه؛ با این شرایط که کد ما الف: حداکثر برای t برابر با عدد بزرگ…
#پایتون

برای اعداد بزرگتر مثل حالت الف هم تو پایتون میتونین محدودیت integer string conversion length رو بردارین. ولی خب منطقا باید الگوریتم بهینه‌ای داشته باشین تا رسیدن به جواب خیلی طول نکشه.

import sys

# https://docs.python.org/3/library/stdtypes.html#integer-string-conversion-length-limitation
sys.set_int_max_str_digits(0)


# Refrence to arithmetic progression:
# https://en.wikipedia.org/wiki/Arithmetic_progressiony
def APSum(first, number, difference):
    last = first + (number - 1) * difference
    return number * (first + last) // 2


def NMultipliers(bound, x):
    return bound // x if bound % x else bound // x - 1


m = 3
n = 5
t = 10**1000_000
result = (
    APSum(m, NMultipliers(t, m), m)
    + APSum(n, NMultipliers(t, n), n)
    - APSum(m * n, NMultipliers(t, m * n), m * n)
)

print(result)
جواب برای m برابر 3 و n برابر 5 و t برابر با 10 به توان 1 میلیون میشه:
t.me/HicteBlog/752
که یه عدد 2 میلیون رقمی هست و کد بالا حدودا یک دقیقه و بیست ثانیه رو سیستم من طول کشید تا به جواب برسه.

🚁 Hicte Blog
👍2🔥21
answer.txt
1.9 MB
🤯3🆒1
#ابزار_لینوکس

اگه میخواین تعداد کلمات/خطوط/کاراکتر‌های یه فایل متنی رو بشمارین یا تعداد بایت‌های یه فایل رو [مثلا برای فهمیدن حجمش] میتونین از 🚾 استفاده کنین.

مثلا تو پست قبلی برای فهمیدن تعداد ارقام عدد خروجی کدم از همین ابزار استفاده کردم:
python b.py | wc -m
خروجی‌ای که کدم پرینت میکنه رو pipe کردم و به عنوان ورودی به wc دادم و آپشن -m هم مشخص میکنه فقط تعداد کاراکترها رو برامون بشماره.
[دقت کنین توی شمارش کاراکترها، کاراکتر new line رو هم حساب میکنه.]

چندتا از آپشن‌های مهم:
bytes: -c
chars: -m
lines: -l
words: -w


این ابزار جزو GNU Core Utilities هست.
اطلاعات بیشتر ۱
اطلاعات بیشتر ۲

🚁 Hicte Blog
👍9
😁11👍1🔥1
#نکته_لینوکس

شاید مثل من بخواین sudo بجای پسورد user شما از پسورد root استفاده کنه.

برای اینکار کافیه فایل sudoers رو ادیت کنیم. پس:
# EDITOR=vim visudo
و بعد
Defaults rootpw
رو بهش اضافه میکنیم.

منطقا باید برای root هم پسوردی متفاوت از user خودمون تعیین کنیم دیگه. پس با su سوئیچ میکنیم به یوزر root و با passwd پسورد root رو چیز دیگه‌ای میذاریم:
$ su
# passwd
[حواستون باشه یادتون نره پسورد رو چی میذارین.]

حالا اگه لپتاپتون رو دادین دست رفیقتون و پسورد user خودتون رو هم برا لاگین شدن بهش دادین دیگه نمیتونه
$ sudo rm -rf /*
بزنه. 😂

🚁 Hicte Blog
👍4😁1👌1👨‍💻1
#خبر

تولد عید linus مبارک
[با صدای کلاه قرمزی]

🚁 Hicte Blog
🎉9🫡21🏆1
#خبر

بقول سینا:
کد ملی هامون رو بیو بنویسیم اینطوری سنگین تره!

https://news.1rj.ru/str/irleaks/20

🚁 Hicte Blog
👍9
HICTE Blog
#خبر بقول سینا: کد ملی هامون رو بیو بنویسیم اینطوری سنگین تره! https://news.1rj.ru/str/irleaks/20 🚁 Hicte Blog
میخوام یه ریپو تو گیتهاب بزنم.
تمام اطلاعات شخصی خودم رو تحت لایسنس MIT بنویسم توش. 🗿
👍14🔥2
🫡7👍3😁1🤯1
#پایتون

تایپ هینت در پایتون

پایتون یه زبان dynamically-typed هست و برخلاف زبان‌های static-typed مثل Java یا C نوع متغیرها از قبل مشخص نیست و توی runtime مشخص میشه.

از پایتون 3.5 یه ویژگی به اسم type hint اضافه شد که به برنامه نویس این اجازه رو میده تا تایپ مورد انتظار خودش رو برای متغیرها، آرگومان‌های توابع و خروجی توابع مشخص کنه که با این کار خوانایی کدش افزایش پیدا کنه و احتمال بروز خطا کم بشه.

دقت کنید که این فقط یه hint برای کسی هست که داره کد رو میخونه یا از اون تابع تو جای دیگه‌ای استفاده میکنه و پایتون رو static-typed نمیکنه. همچنین این hint ها برای ابزارهایی مثل linter ها هم قابل درک هستن.

برای مشخص کردن تایپ مورد انتظار یه متغیر اون رو بعد از یه کالن جلوی اسم متغیر مینویسیم.
age: int = 20
برای آرگومان‌های توابع هم همینطوری عمل میکنیم و برای مشخص کردن تایپ خروجی مورد انتظار تابع اون رو بعد از یه -> جلوی () میذاریم.
def greet(name: str) -> str:
return "Hello, " + name
میتونیم از کلاس‌های built-in پایتون یا کلاس‌های abstract base یا تایپ‌هایی که تو ماژول types وجود دارن استفاده کنیم. همچنین کلاس‌هایی که خودمون تعریف کردیم رو هم به عنوان تایپ میتونیم در نظر بگیریم.
def sum_elements(numbers: list[int]) -> int:
return sum(numbers)
میتونیم type alias هم داشته باشیم.
type Vector = list[float]

def scale(scalar: float, vector: Vector) -> Vector:
return [scalar * num for num in vector]
برای اینکه بتونین چندتا تایپ رو در نظر بگیرین از پایتون 3.10 به بعد میتونین از اوپراتور | استفاده کنین.
def parse_email(email_address: str) -> str | None:
if "@" in email_address:
username, domain = email_address.split("@")
return username
return None
🚁 Hicte Blog
👍3🔥3🍌2
#فان

وقتی یه پروژه کوچیک با PHP میزنم.
only legends understand


🚁 Hicte Blog
😁13🤔3