سلسلة حل المشكلات (Problem Sloving) اليوم العاشر

التحدي رقم 10 لليوم رقم 10 من رمضان

اولا
كل عام و انتم بخير و اعاده الله عليكم بالمن و بالخير و البركه
لا تنشغل بالحل كثيرا كي لا تهمل عباداتك الاصليه
و لا تنسي تجديد نيتك فأن طلب العلم عباده
لا تنسوني و اخي المعتقل سياسيا من جميل دعائكم

وصف التحدي :

**مستوي التحدي : **
متوسط (برمجيا+رياضيا)

هذا التحدي يهدف إلى حساب عدد الأصفار المترادفة في نهاية ناتج حساب n!n!n! (المضاعف)، حيث:

n!=n×(n−1)×(n−2)×…×2×1

الأصفار المترادفة تأتي من ضرب عوامل العدد 10، والتي يمكن فصلها إلى ضرب العدد 2 في العدد 5. بما أن عوامل العدد 2 تكون دائمًا أكثر من عوامل العدد 5 في المضاعف، فإن عدد الأصفار يساوي عدد عوامل العدد 5.

مثال :

المدخلات : n = 25

الخطوات:

قسّم n على 5: 25÷5=5

قسّم النتيجة السابقة على 5: 5÷5=1

اجمع النواتج: 5+1=6

المخرجات : 6

العدد 25 يحتوي على 6 أصفار مترادفة.

وصف مختصر:

المدخل: عدد صحيح n.

المطلوب: إرجاع عدد الأصفار المترادفة في نهاية n.

الفكرة: حساب عدد عوامل 5 في n! باستخدام القسمة المتكررة على 5.

ملحوظه : لو مفهمتش هو عايز ايه فدا ملخص بالعاميه :
انت هتعمل داله بتاخد رقم الرقم دا بنقسمه اولا علي 5 و الناتج بنفضل نقسمه علي 5 لحد ما الناتج يكون اصغر من 5 في الحاله دي الداله بتقف و الداله بقا هترجع مجموع الارقام اللي طلعت كا نواتج لعمليات القسمه

ملحوظه : تقدر تحل التحدي دا و كل اللي فات و اللي جي و تتحقق من صحته من خلال الموقع هنا اهو :
موقع سلسلة حل المشكلات (Problem Sloving)
بس خد بالك لو هتحل ع الموقع لازم اسم الداله يكون زي الاسم اللي موجود في وصف التحدي

أضغط لرؤية المخرجات المتوقعة عشان تتيست الكود بتاعك

الاختبار 1
المدخلات (Inputs)
n = 3
المخرجات (Outputs)
0

الاختبار 2
المدخلات (Inputs)
n = 5
المخرجات (Outputs)
1

الاختبار 3
المدخلات (Inputs)
n = 0
المخرجات (Outputs)
0

الاختبار 4
المدخلات (Inputs)
n = 10
المخرجات (Outputs)
2

حل التحدي

def trailingZeroes(n):
    sum_of_all_result = 0
    m = n // 5
    sum_of_all_result += m
    while m >= 5:
        m = m//5
        sum_of_all_result += m

    return sum_of_all_result

3 إعجابات

الحل في سطر واحد (صعب القراءه) :

def synonymous_zeros (number): return 0 if number < 5 else number // 5 + synonymous_zeros (number // 5)

الحل بشكل سهل للفهم والتعديل :

def synonymous_zeros (number): # داله تحسب الاصفار المترادفه 
    if number < 5: return 0 # اذا كان العدد اقل من 5 نرجع 0
    return number // 5 + synonymous_zeros (number // 5) # نرجع (الرقم // 5 ) + الاصفار المترادفه له (نستمر الى ان يكون الرقم اقل من 5)

أمثله لتجربه الداله :

print (synonymous_zeros (5)) #1
print (synonymous_zeros (10)) #2
print (synonymous_zeros (25)) #6
print (synonymous_zeros (50)) #12
print (synonymous_zeros (225)) #55

عاش , بس ايه رأيك ف الموقع :joy:

إعجاب واحد (1)

حلو وفكرته حلوه، إنت استخدمت فيه لغه من لغات الويب (HTML, CSS, JAVASCRIPT)؟ ولا جيت هوب مسهل عليك الدنيا؟

بس ايه تحدي يوم 30 ده ؟ :joy:
أنا قولت ده هيكون اصعب يوم يطلع إن احنا لازم نعكس النص بس :joy:، ده أنا هستخسر فيه سطر واحد :joy:
الغريب ان كل التحديات اللى بعد يوم 10 وقبل يوم 30 مش متوفره الا يوم 30 :joy:

بس بشكل عام هو حلو :hibiscus:

إعجابَين (2)

ياد لا تحدى يوم 30 كنت كاتبه فى الاول و انا بعمل الكود و نسيت امسحه :sweat_smile: كنت كاتبه بس عشان اقيس عليه هل الكود صح ولا غلط
و باقى التحديات هنزلها يوم بيوم ان شاء الله

اللغات استخدمت
Html , python , javascript, css
بس طبعا استخدامات طفيفه لك لغه منهم

3 إعجابات

إعجابَين (2)

ماشاء الله الموقع جميل ياريت لو تشرح لنا قدرت تنفذه ازاي

3 إعجابات

عايز تعرف ايه باظبط !
طريقة عمله و لا فكرته ولا ايه يعني

3 إعجابات

ركبت اللغات المختلفة مع بعض ازاي

إعجابَين (2)

سؤال جميل ما شاء الله
بص :
لغة ال HTML
هي لغه بناية الهييكل وبالتالي من اسمها يمعني ان كل حاجه في الموقع هي ليها يد فيها ( دي كدا معلومه عامه عشان دماغك تتقبل الفكره الجيه )

فا الموقع دا كل اللي عملته اني استخدمت مكتبه اسمها Brython بتسمحلي اني اكتب اسكريبت بايثون داخل ملف ال HTML بعد ما اكتب كدا :

<script type="text/python">

و بتكتب بقا الكود تحته ببايثون و هكذا
ولكن كود البايثون بيكتب اكنه في ملف txt
يمعني انه مش بيشتغل الا لما تستدعيه عن طريق ال brython()
اما جافا سكريبت فا كفايه تكتب :

<script>

و بعده تكتب كودك بقا

و هكذا

ملخص ان ال HTML هي اللي بتسمحلك انك تدخل كله في بعضة بطريقة ما

مثال كامل اهو :

<!DOCTYPE html>
<html lang="ar">
<head>
  <meta charset="UTF-8">
  <title>عرض الناتج على الصفحة</title>
  <!-- تضمين مكتبة Brython لتشغيل كود بايثون في المتصفح -->
  <script src="https://cdn.jsdelivr.net/npm/brython@3.9.5/brython.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/brython@3.9.5/brython_stdlib.js"></script>
  <style>
    body {
      font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
      direction: rtl;
      background-color: #f0f0f0;
      padding: 20px;
    }
    h1 {
      text-align: center;
      margin-bottom: 20px;
    }
    .output-box {
      border: 1px solid #ccc;
      padding: 10px;
      margin-bottom: 20px;
      background-color: #fff;
      font-size: 1.2em;
    }
  </style>
</head>
<body onload="brython()">
  <h1>عرض الناتج على الصفحة</h1>
  
  <!-- مكان لعرض ناتج بايثون -->
  <div id="outputPython" class="output-box"></div>
  
  <!-- مكان لعرض ناتج جافا سكريبت -->
  <div id="outputJS" class="output-box"></div>
  
  <!-- كود بايثون باستخدام Brython -->
  <script type="text/python">
from browser import document

def hello_python():
    result = "hello wold it's python"
    # عرض الناتج داخل العنصر الذي له المعرف outputPython
    document["outputPython"].text = result

hello_python()
  </script>
  
  <!-- كود جافا سكريبت -->
  <script>
function helloWorldJS(){
  var result = "hello world it's javascropt";
  // عرض الناتج داخل العنصر الذي له المعرف outputJS
  document.getElementById("outputJS").innerText = result;
}
helloWorldJS();
  </script>
</body>
</html>

تقدر تشوف ناتج الكود الكامل دا بانك تحفظه في ملف يامتداد : .html
و بعدين تفتح الملف دا في المتصفح بانك مثلا تسحبه بالماوس تحطه في جوجل كرومم او تنسخ مساره و تبحث في جوجل كروم عن المسار دا وبس كدا اتمني تكون استفدت

3 إعجابات

نسيت موضوع تحدي 30 يوم, انشغلت بزيادة الكم يوم هذول وصرت مركز عالانجليزي اكثر, الله يوفقكم

إعجابَين (2)

يابا عندك الموقع متخزن فيه كل التحديات و البروفايل بتاعى هنا اكيد موجود فيه كل البوستات بتعتى

إعجابَين (2)

تسلم علي الشرح المفصل و بالتوفيق إن شاء الله

إعجابَين (2)

ألف ألف شكر على الشرح المفصل و بالتوفيق دايما إن شاء الله

إعجابَين (2)

خلصانه//////////////

إعجاب واحد (1)