التحدي رقم 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
عاش , بس ايه رأيك ف الموقع 
إعجاب واحد (1)
ياد لا تحدى يوم 30 كنت كاتبه فى الاول و انا بعمل الكود و نسيت امسحه
كنت كاتبه بس عشان اقيس عليه هل الكود صح ولا غلط
و باقى التحديات هنزلها يوم بيوم ان شاء الله
اللغات استخدمت
Html , python , javascript, css
بس طبعا استخدامات طفيفه لك لغه منهم
3 إعجابات
ماشاء الله الموقع جميل ياريت لو تشرح لنا قدرت تنفذه ازاي
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)