تحديات بايثون Happy Number

ما هو العدد السعيد؟

  • نبدأ بعدد معين n.
  • نحسب مجموع مربعات أرقامه.
  • نكرر العملية حتى نحصل على 1 (فيكون العدد سعيدًا :white_check_mark:) أو ندخل في دورة لا نهائية (فيكون العدد غير سعيد :x:).

مثال توضيحي

مثال 1: العدد 19 (عدد سعيد :white_check_mark:)
9 * * 2 + 1* *2 =1+81 = 82
2 ** 2 + 8 ** 2 = 68
8 ** 2 + 6 ** 2 = 100
0 ** 2 + 0 ** 2 + 1 ** 2 = 1.
وصلنا الى 1 اذن العدد 19 سعيد مثلما نحن سعداء للغاية :slight_smile:

مثال 2: العدد 20 (عدد غير سعيد :x:)

0 ** 2 + 2 ** 2 = 4
4 ** 2 = 16
6 ** 2 + 1 ** 2 = 13
7 ** 2 + 3 ** 2 = 58
8 ** 2 + 5 ** 2 = 89
9 ** 2 + 8 ** 2 = 145
5 ** 2 + 4 ** 2 + 1 ** 2 = 42
2 ** 2 + 4 ** 2 = 20.
عدنا الى العدد 20 مجددا اذن يبدو انها حلقة لا متناهية…وعليه العدد 20 عدد ليس سعيد تماما مثل أعدائنا :frowning: :expressionless:
ملاحظة قد توجد اخطاء في الكتابة او الحسابات…انا تعبت ولم اعد ادري ما اكتبه المهم ان الفكرة وصلتكم :slight_smile:

4 إعجابات
#challenge: Happy number
def is_happy(number=19):
    current_number = number
    seen_num = []

    while True:
        result = 0
        for i in str(current_number): result += int(i)**2

        if result == 1:
            print(f"The number {number} is a very happy number:)")
            break

        if result in seen_num or result == number:
            print(f"The number {number} isn't a happy number:(")
            break

        seen_num.append(result)
        current_number = result
    print(seen_num)
        
is_happy(23)
إعجابَين (2)

الحل :

def is_happy (number) :
  nums, list, n = ' '.join (number).split (" "), [], print ("Attempts :")
  while True :
    num= ""
    for x in nums : num += (str(int(x)**2)+" ")
    num = str (eval ("+".join (num.split (" "))+ "0"))
    nums, n = num, print (num)
    if num == "1" : return True 
    elif num == f"{number}" or num in list : return False 
    list.append (num)

print ("is happy :",is_happy (input("Enter a number :")))
إعجابَين (2)

ممكن سؤال كيف تلونون الخط الاسطر شوفوا يمي ما تتلون:

إعجابَين (2)

أحياناً الكود ما بيتلون، بسبب إن الطريقة المستخدمة في التلوين أحياناً ما بتعرف تحدد لغة البرمجة اللى انت كاتب بيها الكود، فـ لو الطريقة مش عارفة تحدد لغة البرمجة مش هتعرف ايه الكلمات المحجوزه، الدوال المدمجة، طريقة تعريف المتغيرات، وباقي الحاجات التانيه… فبتقول إنها متلونش وخلاص.

والحل؟
الحل هو إنك تحدد لغة البرمجة يدوياً زي ما الصورة موضحة:

والناتج كود ملوَّن:

print ("Hello, world!")
إعجاب واحد (1)