fix(guide): simplify directory structure

This commit is contained in:
Mrugesh Mohapatra
2018-10-16 21:26:13 +05:30
parent f989c28c52
commit da0df12ab7
35752 changed files with 0 additions and 317652 deletions

View File

@@ -0,0 +1,69 @@
---
title: Boo Who
localeTitle: بو من
---
![](//discourse-user-assets.s3.amazonaws.com/original/2X/3/3c8584a085a0deaea66b3400e6321eeadab552a2.jpg)
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": triangular_flag_on_post:") تذكر استخدام **`Read-Search-Ask`** إذا واجهتك مشكلة. حاول إقران البرنامج ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": busts_in_silhouette:") واكتب الكود الخاص بك ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":قلم:")
### شرح المشكلة:
هذا البرنامج بسيط للغاية ، فالخدعة هي فهم ما هي البدائية المنطقية. البرامج تتطلب إجابة صحيحة أو خاطئة.
#### روابط ذات صلة
* [منطقية](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 1
* ستحتاج إلى التحقق من نوع المعلمة لمعرفة ما إذا كانت قيمة منطقية.
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 2
* للتحقق من نوع المعلمة ، يمكنك استخدام `typeof` .
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 3
* نظرًا لأنه يجب عليك إظهار true أو false ، يمكنك استخدامه إذا كانت عبارات أو فقط تقوم بإرجاع القيمة المنطقية المستخدمة في العبارة if.
> اول أن تحل المشكلة الآن_
## تنبيه المفسد!
![علامة تحذير](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**الحل في المستقبل!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ":مبتدئ:") الحل الأساسي للكود:
` function booWho(bool) {
return typeof bool === 'boolean';
}
// test here
booWho(null);
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLnK/0)
# شرح الشفرة:
يستخدم المشغل `typeof` للتحقق مما إذا كان المتغير منطقيًا. إذا كان الأمر كذلك ، فسوف يعود `true` . خلاف ذلك ، إذا كان من أي نوع آخر فإنه سيعود `false` .
#### روابط ذات صلة
* باستخدام typeof
* [نوع من](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof)
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": الحافظة:") ملاحظات للمساهمات:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **لا تقم** بإضافة حلول مشابهة لأي حلول موجودة. إذا كنت تعتقد أنها **_مشابهة ولكن أفضل_** ، فحاول دمج (أو استبدال) الحل المشابه الموجود.
* أضف شرحًا لحلك.
* تصنيف الحل في واحدة من الفئات التالية - **الأساسي** **والمتوسط** **والمتقدم** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ": traffic_light:")
* الرجاء إضافة اسم المستخدم الخاص بك فقط إذا قمت بإضافة أي **محتويات رئيسية ذات صلة** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **_لا_** _تزيل أي أسماء مستخدمين حالية_ )
> نرى ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": point_right:") [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) كمرجع.

View File

@@ -0,0 +1,214 @@
---
title: Chunky Monkey
localeTitle: قرد مكتنز
---
![](//discourse-user-assets.s3.amazonaws.com/original/2X/a/aadd6bead83ab7d79a795c326f005a89e6ad81f5.png)
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": triangular_flag_on_post:") تذكر استخدام **`Read-Search-Ask`** إذا واجهتك مشكلة. حاول إقران البرنامج ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": busts_in_silhouette:") واكتب الكود الخاص بك ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":قلم:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ":العلم متقلب:") شرح المشكلة:
هدفنا لهذه الخوارزمية هو تقسيم `arr` (الوسيطة الأولى) إلى أجزاء أصغر من المصفوفات بالطول الموفر حسب `size` (الوسيطة الثانية). هناك 4 فحوصات خضراء (أهداف) يجب تمرير كودنا لإكمال هذه الخوارزمية:
1. `(['a', 'b', 'c', 'd'], 2)` المتوقع أن تكون `[['a', 'b'], ['c', 'd']]` `(['a', 'b', 'c', 'd'], 2)` `[['a', 'b'], ['c', 'd']]`
2. `([0, 1, 2, 3, 4, 5], 3)` من المتوقع أن يكون `[[0, 1, 2], [3, 4, 5]]`
3. `([0, 1, 2, 3, 4, 5], 2)` من المتوقع أن يكون `[[0, 1], [2, 3], [4, 5]]`
4. `([0, 1, 2, 3, 4, 5], 4)` المتوقع أن تكون `[[0, 1, 2, 3], [4, 5]]` `([0, 1, 2, 3, 4, 5], 4)` `[[0, 1, 2, 3], [4, 5]]`
#### روابط ذات صلة
* [Array.push ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push)
* [Array.slice ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 1
تشير الروابط أعلاه إلى استخدام `Array.push()` ، لذلك دعنا نبدأ أولاً بإنشاء صفيف جديد لتخزين المصفوفات الأصغر سنكون قريبًا مثل هذا:
` var newArray = [];
`
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 2
المقبل سنقوم في حاجة الى `for loop` إلى حلقة من خلال `arr` .
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 3
وأخيرًا ، نحتاج إلى طريقة للقيام `Array.slice()` الفعلي ويمكننا استخدام `Array.slice()` للقيام بذلك. المفتاح إلى هذه الخوارزمية هو فهم كيفية عمل `for loop` `size` و `Array.slice()` و `Array.push()` معاً.
> اول أن تحل المشكلة الآن_
## تنبيه المفسد!
![علامة تحذير](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**الحل في المستقبل!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ":مبتدئ:") الحل الأساسي للكود:
` function chunkArrayInGroups(arr, size) {
var temp = [];
var result = [];
for (var a = 0; a < arr.length; a++) {
if (a % size !== size - 1)
temp.push(arr[a]);
else {
temp.push(arr[a]);
result.push(temp);
temp = [];
}
}
if (temp.length !== 0)
result.push(temp);
return result;
}
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/24)
### شرح الشفرة:
* أولاً ، نخلق صفيفين فارغين يُسمى `temp` `result` ، وسنعود في النهاية.
* حلقات **لدينا حلقة** حتى `a` يساوي أو أكثر من طول المصفوفة في الاختبار.
* داخل الحلقة ، `temp.push(arr[a]);` على `temp` `temp.push(arr[a]);` إذا كان الجزء المتبقي من `a / size` لا يساوي `size - 1` .
* خلاف ذلك ، نحن ندفع إلى `temp` ، ودفع `temp` إلى متغير `result` وإعادة تعيين `temp` إلى صفيف فارغ.
* بعد ذلك ، إذا لم يكن `temp` صفيفًا فارغًا ، فإننا نضغط على `result` .
* وأخيرًا ، نعيد قيمة `result` .
#### روابط ذات صلة
* [Array.push ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push)
* [للحلقات](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for)
## ![:sunflower:](https://forum.freecodecamp.com/images/emoji/emoji_one/sunflower.png?v=3 ":دوار الشمس:") حل الشفرة المتوسطة:
` function chunkArrayInGroups(arr, size) {
// Break it up.
var arr2 = [];
for (var i = 0; i < arr.length; i+=size) {
arr2.push(arr.slice(i , i+size));
}
return arr2;
}
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/Cj9x/3)
### شرح الشفرة:
* أولاً ، نخلق مصفوفة `arr2` فارغة حيث سنقوم بتخزين "قطع" لدينا.
* تبدأ الحلقة في الصفر ، الزيادات حسب `size` كل مرة من خلال الحلقة ، وتتوقف عندما تصل إلى `arr.length` .
* لاحظ أن هذا الحل لا حلقة عبر `arr` . بدلاً من ذلك ، نحن نستخدم الحلقة لإنشاء أرقام يمكننا استخدامها كمؤشرات لتقسيم المصفوفة في المواقع الصحيحة.
* داخل الحلقة ، نقوم بإنشاء كل `arr.slice(i, i+size)` باستخدام `arr.slice(i, i+size)` ، وإضافة هذه القيمة إلى `arr2` مع `arr2.push()` .
* وأخيرًا ، نعيد قيمة `arr2` .
#### روابط ذات صلة
* [Array.push ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push)
* [Array.slice ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice)
* [للحلقات](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for)
## ![:rotating_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/rotating_light.png?v=3 ": rotating_light:") الحل المتقدم للكود:
` function chunkArrayInGroups(arr, size) {
// Break it up.
var newArr = [];
var i = 0;
while (i < arr.length) {
newArr.push(arr.slice(i, i+size));
i += size;
}
return newArr;
}
chunkArrayInGroups(["a", "b", "c", "d"], 2);
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/26)
### شرح الشفرة:
* أولاً ، نخلق متغيرين. `newArr` هو مصفوفة فارغة `newArr` عليها. لدينا أيضًا مجموعة `i` المتغيرة إلى الصفر ، لاستخدامها في حلقة لدينا.
* لدينا حلقة حلقات في حين `i` تساوي أو أكثر من طول الصفيف في الاختبار.
* داخل الحلقة ، `newArr` صفيف `arr.slice(i, i+size)` باستخدام `arr.slice(i, i+size)` . لأول مرة يتدفق ، سيبدو مثل:
newArr.push (arr.slice (1، 1 + 2))
* بعد أن `newArr` على `newArr` ، نضيف متغير `size` إلى `i` .
* وأخيرًا ، نعيد قيمة `newArr` .
#### روابط ذات صلة
* [Array.push ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push)
* [Array.slice ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice)
* [في حين الحلقات](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/while)
## ![:rotating_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/rotating_light.png?v=3 ": rotating_light:") الحل المتقدم للكود 2:
` function chunkArrayInGroups(arr, size) {
var newArr = [];
while (arr.length) {
newArr.push(arr.splice(0,size));
}
return newArr;
}
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/579)
### شرح الشفرة:
* أولا ، نخلق متغير. `newArr` هو مصفوفة فارغة `newArr` عليها.
* لدينا `while` حلقات حلقة حتى طول المصفوفة في اختبار لدينا ليست 0.
* داخل الحلقة ، `newArr` صفيف `arr.splice(0, size)` باستخدام `arr.splice(0, size)` .
* لكل تكرار من حلقة `while` ، يحذف `size` عدد العناصر من مقدمة `arr` و يدفعها `newArr` إلى `newArr` .
* وأخيرًا ، نعيد قيمة `newArr` .
#### روابط ذات صلة
* [Array.push ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push)
* [Array.splice ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice)
* [في حين الحلقات](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/while)
## ![:rotating_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/rotating_light.png?v=3 ": rotating_light:") الحل المتقدم للكود 3:
` function chunkArrayInGroups(arr, size) {
if (arr.length <= size){
return [arr];
}
else {
return [arr.slice(0,size)].concat(chunkArrayInGroups(arr.slice(size),size));
}
}
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/579)
### شرح الشفرة:
* يتم إرجاع الصفيف الأصغر من الحجم المتداخل.
* لأية صف أكبر من الحجم ، يتم تقسيمه إلى قسمين. الجزء الأول متداخل ومتصل مع الجزء الثاني الذي يجعل استدعاء متكرر.
#### روابط ذات صلة
* [العودية](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions#Recursion)
* [Array.splice ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice)
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": الحافظة:") ملاحظات للمساهمات:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **لا تقم** بإضافة حلول مشابهة لأي حلول موجودة. إذا كنت تعتقد أنها **_مشابهة ولكن أفضل_** ، فحاول دمج (أو استبدال) الحل المشابه الموجود.
* أضف شرحًا لحلك.
* تصنيف الحل في واحدة من الفئات التالية - **الأساسي** **والمتوسط** **والمتقدم** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ": traffic_light:")
* الرجاء إضافة اسم المستخدم الخاص بك فقط إذا قمت بإضافة أي **محتويات رئيسية ذات صلة** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **_لا_** _تزيل أي أسماء مستخدمين حالية_ )
> نرى ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": point_right:") [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) كمرجع.

View File

@@ -0,0 +1,35 @@
---
title: Confirm the Ending
localeTitle: تأكيد الانتهاء
---
## تأكيد الانتهاء
# 🌻 حل الشفرة الوسيطة:
(النهج التعريفي)
`function confirmEnding(str, target) {
// "Never give up and good luck will find you."
// -- Falcor
return str.slice(str.length - target.length) === target;
}
confirmEnding("He has to give me a new name", "name");
`
#### 🚀 [تشغيل الكود](https://repl.it/repls/SardonicRoundAfkgaming)
# شرح الشفرة:
* أولا نستخدم طريقة `slice` نسخ السلسلة.
* من أجل الحصول على الأحرف الأخيرة في `str` مساوية لطول `target` ، نستخدم طريقة `slice` .
* المعلمة الأولى داخل أسلوب `slice` هي فهرس البدء والمعلمة الثانية هي فهرس النهاية.
* على سبيل المثال `str.slice(10, 17)` `give me` .
* في هذه الحالة ، نقوم فقط بتضمين معلمة واحدة والتي ستقوم بنسخ كل شيء منها من فهرس البدء.
* سنقوم بربط طول `str` وطول `target` ، وبهذه الطريقة ، سنحصل على الأحرف المتبقية المتبقية مساوية لطول `target` .
* وأخيرًا ، نقارن نتيجة إرجاع شريحة `target` وتحقق مما إذا كان لديهم نفس الأحرف.
### روابط ذات صلة
* [String.prototype.slice ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice)

View File

@@ -0,0 +1,66 @@
---
title: Convert Celsius to Fahrenheit
localeTitle: تحويل مئوية إلى فهرنهايت
---
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": triangular_flag_on_post:") تذكر استخدام **`Read-Search-Ask`** إذا واجهتك مشكلة. حاول إقران البرنامج ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": busts_in_silhouette:") واكتب الكود الخاص بك ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":قلم:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ":العلم متقلب:") شرح المشكلة:
الخوارزمية للتحويل من درجة مئوية إلى فهرنهايت هي درجة الحرارة في المرات المئوي `9/5` ، زائد `32` .
يتم منحك درجة **مئوية** متغيرة تمثل درجة الحرارة بالدرجة المئوية. استخدم المتغير **fahrenheit الذي** تم تعريفه بالفعل وقم بتطبيق الخوارزمية لتعيينه درجة الحرارة المقابلة في فهرنهايت.
#### روابط ذات صلة
* [ترتيب العمليات: PEMDAS](http://www.purplemath.com/modules/orderops.htm)
* [ترتيب العملية: الفيديو](https://www.khanacademy.org/math/pre-algebra/order-of-operations/order_of_operations/v/order-of-operations)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 1
ألقِ نظرة على الشفرة. هناك منطقة ليس من المفترض أن تقوم بتحريرها. من هناك ، اسأل نفسك - ما الذي استخدم هناك لم أره من قبل؟
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 2
ضع في اعتبارك **ترتيب العملية** تحقق من الارتباط في قسم _الروابط_ لمزيد من المعلومات.
> اول أن تحل المشكلة الآن_
## تنبيه المفسد!
![علامة تحذير](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**الحل في المستقبل!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ":مبتدئ:") الحل الأساسي للكود:
` function convertToF(celsius) {
// Only change code below this line
var fahrenheit = (celsius * (9/5)) + 32;
// Only change code above this line
if ( typeof fahrenheit !== 'undefined' ) {
return fahrenheit;
} else {
return 'fahrenheit not defined';
}
}
// Change the inputs below to test your code
convertToF(30);
`
### شرح الشفرة:
* أعلن متغير **فهرنهايت** .
* تأكد من اتباع الترتيب الصحيح للعمليات الحسابية باستخدام الأقواس ( `()` ) عند الحاجة.
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": الحافظة:") ملاحظات للمساهمات:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **لا تقم** بإضافة حلول مشابهة لأي حلول موجودة. إذا كنت تعتقد أنها **_مشابهة ولكن أفضل_** ، فحاول دمج (أو استبدال) الحل المشابه الموجود.
* أضف شرحًا لحلك.
* تصنيف الحل في واحدة من الفئات التالية - **الأساسي** **والمتوسط** **والمتقدم** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ": traffic_light:")
* الرجاء إضافة اسم المستخدم الخاص بك فقط إذا قمت بإضافة أي **محتويات رئيسية ذات صلة** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **_لا_** _تزيل أي أسماء مستخدمين حالية_ )
> نرى ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": point_right:") [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) كمرجع.

View File

@@ -0,0 +1,115 @@
---
title: Factorialize a Number
localeTitle: Factorialize عدد
---
![العودية](//discourse-user-assets.s3.amazonaws.com/original/2X/d/dcf927a2e8c3beb7a9c28770153821982398bd99.jpg)
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": triangular_flag_on_post:") تذكر استخدام **`Read-Search-Ask`** إذا واجهتك مشكلة. حاول إقران البرنامج ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": busts_in_silhouette:") واكتب الكود الخاص بك ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":قلم:")
## ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ":العلم متقلب:") شرح المشكلة:
عودة المضروب من عدد صحيح المقدمة. إذا تم تمثيل العدد الصحيح بالحرف n ، فإن العامل الحاسوبي هو نتاج جميع الأعداد الصحيحة الموجبة أقل من أو يساوي n.
غالبًا ما يتم تمثيل العوامل بعبارة الاختزال n!
على سبيل المثال: `5! = 1 * 2 * 3 * 4 * 5 = 120`
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 1
هذا واحد يبدأ بسهولة منذ `0! = 1` ، حتى تتمكن من المضي قدما `return 1` ببساطة `return 1` هناك.
يمكننا استخدام ذلك باعتباره `if` من أجل كسر حلقة نحن في طريقنا لإنشاء باستخدام **وظيفة متكررة.** وسوف يتحقق ما إذا كان الرقم الذي أعطيته للدالة هو 0 (والذي سيكون نهاية السلسلة العصبية الخاصة بك). وظائف "نهاية" عندما يعودون أي شيء. في الواقع ، سيتم إرجاع **كافة** الدالات بدون بيان `return` صريح `undefined` .
هذا هو السبب أيضا **بدلا** من _"الانتهاء"_ ، ويقال دائما وظيفة _"قد عاد"_ . والآن هذا ...
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 2
**فهم العودية**
يشير التكرار إلى وظيفة مكررة (استدعاء) نفسها. في هذه الحالة نحن يعودون أساسا عدد معين (أي 5)، مضروبا في وظيفة في حد ذاته ولكن هذه المرة القيمة التي تم تمريرها إلى المعلمة _الأسطوانات_ هي `num-1` (والذي يترجم في البداية إلى 4). المهمة **نفسها** سوف **تعمل داخل نفسها** مثيرة للاهتمام ، إيه؟
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 3
**فهم التدفق**
يمكن تصور القيمة **المرتجعة** الأولى بشكل أفضل إذا فكرت في عمليات تلك الأقواس التي قمت بها في المدرسة الثانوية حيث تقوم بالرياضيات داخل كل قوس من الداخل إلى الخارج ، ومن قوس إلى قوس مربع حتى تحصل على نتيجة نهائية (إجمالي). هذه المرة هو نفس الشيء ، انظر إلى تدفق البرنامج:
### خلال أول تنفيذ للوظيفة:
\[عدد **الأسطوانات** = 5\]
هل _يساوي_ 5 إلى 1 أو 0؟ **لا** ---> أوكي دوكي ، دعونا نستمر ...
**عائدات:**
( **5** _(_ second execution\_: **4** \_ ( _third execution_ : **3** _(_ fourth execution\_: **2** \_ _fifth execution_ : **1** ))))
يمكن إرجاع ما يتم إرجاعه كـ `(5*(4*(3*(2*1))))` أو فقط `5 * 4 * 3 * 2 * 1` ، وستقوم الدالة بإرجاع نتيجة تلك العملية: `120` . الآن ، لنفحص ما تفعله بقية عمليات الإعدام:
### خلال بقية عمليات الإعدام:
**التنفيذ الثاني** : _num_ = 5-1 = **4** -> is _num_ 0 or 1؟ لا
\-> العودة تكاثر بين 4 و النتيجة التالية عندما _الأسطوانات_ الآن 4-1.
**التنفيذ الثالث** : _num_ = 4 - 1 = **3** -> is _num_ 0 or 1؟ لا
\-> العودة تكاثر بين 3 و النتيجة التالية عندما _الأسطوانات_ الآن 3-1.
**التنفيذ الرابع** : _num_ = 3-1 = **2** -> is _num_ 0 or 1؟ لا
\-> العودة تكاثر بين 2 و النتيجة التالية عندما _الأسطوانات_ الآن 2-1.
**التنفيذ الخامس** : _num_ = 2-1 = **1** -> is _num_ 0 or 1؟ موافق
\-> العودة **1** . وهذا هو المكان الذي يتوقف فيه العودية لعدم وجود المزيد من عمليات الإعدام.
فهمتك؟ ![:wink:](https://forum.freecodecamp.com/images/emoji/emoji_one/wink.png?v=3 ":غمزة:")
> اول أن تحل المشكلة الآن_
#### روابط ذات صلة
* [وظائف JS](https://www.youtube.com/watch?v=R8SjM4DKK80)
* [التكرار في شبيبة](https://www.youtube.com/watch?v=k7-N8R0-KY4)
## تنبيه المفسد!
![علامة تحذير](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**الحل في المستقبل!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ":مبتدئ:") حل الرمز:
`function factorialize(num) {
if (num === 0) { return 1; }
return num * factorialize(num-1);
}
factorialize(5);
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/1)
## شرح الشفرة:
لاحظ في السطر الأول لدينا حالة المحطة ، أي شرط للتحقق من نهاية العودية. إذا كان `num == 0` ، فإننا نرجع 1 ، أي أن ننتهي بشكل فعال العودية ونبلغ المكدس لنشر هذه القيمة إلى المستويات العليا. إذا لم يكن لدينا هذا الشرط ، فستستمر عملية العودية حتى يتم استهلاك مساحة التكديس ، مما يؤدي إلى [تجاوز سعة المكدس](https://en.wikipedia.org/wiki/Stack_overflow) .
### روابط ذات صلة
* [العودية](https://www.codecademy.com/en/courses/javascript-lesson-205/0/1)
* [Factorialization](https://en.wikipedia.org/wiki/Factorial)
* [العوامل الحسابية](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators)
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": الحافظة:") ملاحظات للمساهمات:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **لا تقم** بإضافة حلول مشابهة لأي حلول موجودة. إذا كنت تعتقد أنها **_مشابهة ولكن أفضل_** ، فحاول دمج (أو استبدال) الحل المشابه الموجود.
* أضف شرحًا لحلك.
* تصنيف الحل في واحدة من الفئات التالية - **الأساسي** **والمتوسط** **والمتقدم** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ": traffic_light:")
* الرجاء إضافة اسم المستخدم الخاص بك فقط إذا قمت بإضافة أي **محتويات رئيسية ذات صلة** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **_لا_** _تزيل أي أسماء مستخدمين حالية_ )
> نرى ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": point_right:") [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) كمرجع.

View File

@@ -0,0 +1,73 @@
---
title: Falsy Bouncer
localeTitle: فلسى الحارس
---
![](//discourse-user-assets.s3.amazonaws.com/original/2X/5/55dedad40d9f3f662c70d1eac4effc00c7d26bd9.jpg)
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": triangular_flag_on_post:") تذكر استخدام **`Read-Search-Ask`** إذا واجهتك مشكلة. حاول إقران البرنامج ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": busts_in_silhouette:") واكتب الكود الخاص بك ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":قلم:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ":العلم متقلب:") شرح المشكلة:
قم بإزالة كافة قيم [الفالسة](https://guide.freecodecamp.org/javascript/falsy-values/) من صفيف.
#### روابط ذات صلة
* [القيم الفارسية](https://guide.freecodecamp.org/javascript/falsy-values/)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 1
Falsy هو شيء يتم تقييمه لـ FALSE. لا يوجد سوى ستة قيم خالية في جافا سكريبت: غير معرفة ، و null ، و NaN ، و 0 ، و "" (سلسلة فارغة) ، و false بالطبع.
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 2
نحتاج إلى التأكد من أن لدينا جميع القيم المزيفة لمقارنتها ، يمكننا أن نعرفها ، ربما مع وظيفة تحتوي على جميع القيم الخاطئة ...
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 3
ثم نحتاج إلى إضافة `filter()` مع وظيفة قيم الفالس ...
> اول أن تحل المشكلة الآن_
## تنبيه المفسد!
![علامة تحذير](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**الحل في المستقبل!**
## ![:rotating_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/rotating_light.png?v=3 ": rotating_light:") الحل المتقدم للكود:
`function bouncer(arr) {
return arr.filter(Boolean);
}
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/32)
### شرح الشفرة:
يتوقع أسلوب `Array.prototype.filter` دالة تقوم بإرجاع قيمة `Boolean` تأخذ وسيطة واحدة وترجع `true` لقيمة [صواب](http://forum.freecodecamp.com/t/javascript-truthy-value/15975) أو `false` لقيمة [فلسي](https://guide.freecodecamp.org/javascript/falsy-values/) . ومن ثم فإننا نمر بالوظيفة `Boolean` المدمجة.
#### روابط ذات صلة
* [منطقية](http://forum.freecodecamp.com/t/javascript-boolean/14311)
* [Truthy](http://forum.freecodecamp.com/t/javascript-truthy-value/15975)
* [Array.prototype.filter ()](http://forum.freecodecamp.com/t/javascript-array-prototype-filter/14289)
## ![:trophy:](https://forum.freecodecamp.com/images/emoji/emoji_one/trophy.png?v=3 ":غنيمة:") ائتمانات:
إذا وجدت هذه الصفحة مفيدة ، فيمكنك تقديم الشكر من خلال نسخها ولصقها في الدردشة الرئيسية:
**`Thanks @renelis @abhisekp @Rafase282 for your help with Algorithm: Falsy Bouncer`**
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": الحافظة:") ملاحظات للمساهمات:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **لا تقم** بإضافة حلول مشابهة لأي حلول موجودة. إذا كنت تعتقد أنها **_مشابهة ولكن أفضل_** ، فحاول دمج (أو استبدال) الحل المشابه الموجود.
* أضف شرحًا لحلك.
* تصنيف الحل في واحدة من الفئات التالية - **الأساسي** **والمتوسط** **والمتقدم** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ": traffic_light:")
* الرجاء إضافة اسم المستخدم الخاص بك فقط إذا قمت بإضافة أي **محتويات رئيسية ذات صلة** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **_لا_** _تزيل أي أسماء مستخدمين حالية_ )
> نرى ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": point_right:") [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) كمرجع.

View File

@@ -0,0 +1,143 @@
---
title: Find the Longest Word in a String
localeTitle: ابحث عن أطول كلمة في سلسلة
---
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": triangular_flag_on_post:") تذكر استخدام **`Read-Search-Ask`** إذا واجهتك مشكلة. حاول إقران البرنامج ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": busts_in_silhouette:") واكتب الكود الخاص بك ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":قلم:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ":العلم متقلب:") شرح المشكلة:
عليك أن تذهب من خلال كل كلمة وتعرف على أي واحدة منها هي الأطول ولا ترجع إلى الكلمة ، بل كم عدد الأحرف التي تملكها.
#### روابط ذات صلة
* [طول السلسلة JS](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/length)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 1
يجب عليك تقسيم السلسلة إلى مجموعة من الكلمات.
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 2
ستحتاج إلى إيجاد طريقة لتتبع عالميًا بأكبر قدر ممكن من الطول الحالي.
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 3
تذكر كيفية الحصول على طول العناصر على المصفوفة؟ `Array[index].length` . `Array[index].length` .
> اول أن تحل المشكلة الآن_
## تنبيه المفسد!
![علامة تحذير](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**الحل في المستقبل!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ":مبتدئ:") الحل الأساسي للكود:
`function findLongestWordLength(str) {
var words = str.split(' ');
var maxLength = 0;
for (var i = 0; i < words.length; i++) {
if (words[i].length > maxLength) {
maxLength = words[i].length;
}
}
return maxLength;
}
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/5)
### شرح الشفرة:
خذ السلسلة وتحويلها إلى مجموعة من الكلمات. قم بتعريف متغير لتتبع الحد الأقصى للطول والحلقة من 0 إلى طول صفيف الكلمات.
ثم تحقق من أطول كلمة بمقارنة الكلمة الحالية بالكلمة السابقة وتخزين أطول كلمة جديدة. في نهاية الحلقة فقط قم بإرجاع قيمة العدد للمتغير maxLength.
#### روابط ذات صلة
* [JS Array.length](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/length)
## ![:sunflower:](https://forum.freecodecamp.com/images/emoji/emoji_one/sunflower.png?v=3 ":دوار الشمس:") حل الشفرة المتوسطة:
**باستخدام `.reduce()`**
`function findLongestWordLength(s) {
return s.split(' ')
.reduce(function(x, y) {
return Math.max(x, y.length)
}, 0);
}
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/6)
### شرح الشفرة:
لمزيد من المعلومات حول `reduce` [انقر هنا.](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce)
إذا كنت تتساءل عن `0` بعد وظيفة رد الاتصال ، فسيتم استخدامه لإعطاء قيمة أولية لـ `x` ، حتى يعرف `Math.max` أين تبدأ.
#### روابط ذات صلة
* [شبيبة الحد](http://forum.freecodecamp.com/t/javascript-array-prototype-reduce/14299)
* [شبيبة تقليل سهلة](http://forum.freecodecamp.com/t/using-array-prototype-reduce-to-reduce-conceptual-boilerplate-for-problems-on-arrays/14687)
* [JS Math Max](http://forum.freecodecamp.com/t/javascript-math-max/14682.md)
## ![:rotating_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/rotating_light.png?v=3 ": rotating_light:") الحل المتقدم للكود:
**باستخدام التكرار**
`function findLongestWordLength(str) {
//split the string into individual words
//(important!!, you'll see why later)
str = str.split(" ");
//str only has 1 element left that is the longest element,
//return the length of that element
if(str.length == 1){
return str[0].length;
}
//if the first element's length is greater than the second element's (or equal)
//remove the second element and recursively call the function)
if(str[0].length >= str[1].length){
str.splice(1,1);
return findLongestWordLength(str.join(" "));
}
//if the second element's length is greater thant the first element's start
//call the function past the first element
if(str[0].length <= str[1].length){
// from the first element to the last element inclusive.
return findLongestWordLength(str.slice(1,str.length).join(" "));
}
}
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/7)
### شرح الشفرة:
يقسم السطر الأول السلسلة إلى كلمات فردية. ثم نتحقق مما إذا كان `str` يحتوي على عنصر واحد فقط ، فهذا هو العنصر الأطول ونقوم بإعادته. إذا كان طول العنصر الأول أكبر من العنصر الثاني (أو يساوي) ، فسنقوم بإزالة العنصر الثاني ثم `findLongestWord` استدعاء الدالة `findLongestWord` بشكل متكرر. ومع ذلك ، إذا كان طول العنصر الثاني أكبر من بداية العنصر الأول ، فسنستدعي الدالة بعد العنصر الأول.
#### روابط ذات صلة
* [وظائف JS](https://www.youtube.com/watch?v=R8SjM4DKK80)
* [أساسيات إعادة التدوير](https://www.youtube.com/watch?v=k7-N8R0-KY4)
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": الحافظة:") ملاحظات للمساهمات:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **لا تقم** بإضافة حلول مشابهة لأي حلول موجودة. إذا كنت تعتقد أنها **_مشابهة ولكن أفضل_** ، فحاول دمج (أو استبدال) الحل المشابه الموجود.
* أضف شرحًا لحلك.
* تصنيف الحل في واحدة من الفئات التالية - **الأساسي** **والمتوسط** **والمتقدم** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ": traffic_light:")
* الرجاء إضافة اسم المستخدم الخاص بك فقط إذا قمت بإضافة أي **محتويات رئيسية ذات صلة** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **_لا_** _تزيل أي أسماء مستخدمين حالية_ )
> نرى ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": point_right:") [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) كمرجع.

View File

@@ -0,0 +1,48 @@
---
title: Finders Keepers
localeTitle: من يجد شيئا يحتفظ به
---
## شرح المشكلة
نحتاج إلى إرجاع العنصر من صفيف يمر بوظيفة. كل من `function` و `array` تم تمريرها إلى وظيفة لدينا `findElement(arr, func)` .
## تلميح: 1
يمكن إجراء البحث في المصفوفة باستخدام حلقة `for` .
> اول أن تحل المشكلة الآن_
## تلميح: 2
`num` يتم تمريرها إلى الدالة. سنحتاج إلى تعيينه على العناصر التي نريد التحقق منها.
> اول أن تحل المشكلة الآن_
## تلميح: 3
لا تنسَ ، إذا لم ينجح أي من الأرقام في الصفيف في الاختبار ، فيجب أن `undefined` .
> اول أن تحل المشكلة الآن_
## الحل الأساسي
`function findElement(arr, func) {
let num = 0;
for(var i = 0; i < arr.length; i++) {
num = arr[i];
if (func(num)) {
return num;
}
}
return undefined;
}
`
## شرح الشفرة
* يطالبنا التحدي بالبحث من خلال الصفيف. يتم ذلك باستخدام حلقة `for` .
* يتم تمرير متغير `num` إلى الدالة ، لذا قمنا بتعيينه على كل فهرس في الصفيف الخاص بنا.
* تتحقق الدالة المحددة مسبقًا بالفعل من كل رقم بالنسبة إلينا ، لذا إذا كانت "true" ، فإننا نرجع ذلك العدد.
* إذا لم ينجح أي من الأرقام الموجودة في الصفيف في اختبار الوظيفة ، فإننا نرجع إلى الحالة غير معرفة.

View File

@@ -0,0 +1,11 @@
---
title: Basic Algorithm Scripting
localeTitle: البرمجة الأساسية الخوارزمية
---
## البرمجة الأساسية الخوارزمية
هذا هو كعب. [ساعد مجتمعنا على توسيعه](https://github.com/freecodecamp/guides/tree/master/src/pages/mathematics/quadratic-equations/index.md) .
[سيساعدك دليل النمط السريع هذا على ضمان قبول طلب السحب](https://github.com/freecodecamp/guides/blob/master/README.md) .
#### معلومات اكثر:

View File

@@ -0,0 +1,102 @@
---
title: Mutations
localeTitle: الطفرات
---
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": triangular_flag_on_post:") تذكر استخدام **`Read-Search-Ask`** إذا واجهتك مشكلة. حاول إقران البرنامج ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": busts_in_silhouette:") واكتب الكود الخاص بك ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":قلم:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ":العلم متقلب:") شرح المشكلة:
* إرجاع true إذا احتوت السلسلة في العنصر الأول من المصفوفة على كافة أحرف السلسلة في العنصر الثاني من المصفوفة.
#### روابط ذات صلة
* [String.indexOf ()](http://forum.freecodecamp.com/t/javascript-string-prototype-indexof/15936)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 1
* إذا كان كل شيء صغيرًا ، فسيكون من الأسهل مقارنته.
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 2
* قد يكون من السهل التعامل مع سلاسلنا إذا كانت صفائف الأحرف.
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 3
* حلقة قد تساعد. استخدم `indexOf()` للتحقق مما إذا كان حرف الكلمة الثانية موجودًا على الأول.
> اول أن تحل المشكلة الآن_
## تنبيه المفسد!
![علامة تحذير](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**الحل في المستقبل!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ":مبتدئ:") الحل الأساسي للكود:
**إجرائي**
`function mutation(arr) {
var test = arr[1].toLowerCase();
var target = arr[0].toLowerCase();
for (var i=0;i<test.length;i++) {
if (target.indexOf(test[i]) < 0)
return false;
}
return true;
}
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/30)
### شرح الشفرة:
أولاً ، نصنع السمتين في المصفوفة الصغيرة. `test` سيعقد ما نبحث عنه في `target` .
ثم نتعقب من خلال شخصيات الاختبار الخاصة بنا وإذا لم يتم العثور على أي منها `return false` .
إذا تم العثور عليهم _جميعًا_ ، ستنتهي الحلقة دون إرجاع أي شيء `return true` إلى `return true` .
#### روابط ذات صلة
* [String.toLowerCase ()](http://forum.freecodecamp.com/t/javascript-string-prototype-tolowercase/15948)
* [للحلقات](http://forum.freecodecamp.com/t/javascript-for-loop/14666s-Explained)
## ![:sunflower:](https://forum.freecodecamp.com/images/emoji/emoji_one/sunflower.png?v=3 ":دوار الشمس:") حل الشفرة المتوسطة:
**إعلاني**
`function mutation(arr) {
return arr[1].toLowerCase()
.split('')
.every(function(letter) {
return arr[0].toLowerCase()
.indexOf(letter) != -1;
});
}
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/31)
### شرح الشفرة:
اسحب السلسلة الثانية ، صغيرة وتحويلها إلى صفيف. ثم تأكد من أن _كل_ واحد من _أحرفه_ هو جزء من السلسلة الأولى الأقل تدقيقًا.
`Every` سيعطي أساسا لكم حرفا حرفا للمقارنة، وهو ما كنا نفعله باستخدام `indexOf` على السلسلة الأولى. سوف تعطيك `indexOf` -1 إذا كان `letter` الحالي مفقودًا. نتحقق من أن لا يكون الأمر كذلك ، لأنه إذا حدث هذا مرة واحدة فسيكون `every` خطأ.
#### روابط ذات صلة
* [Array.split ()](http://forum.freecodecamp.com/t/javascript-string-prototype-split/15944)
* [Array.every ()](http://forum.freecodecamp.com/t/javascript-array-prototype-every/14287)
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": الحافظة:") ملاحظات للمساهمات:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **لا تقم** بإضافة حلول مشابهة لأي حلول موجودة. إذا كنت تعتقد أنها **_مشابهة ولكن أفضل_** ، فحاول دمج (أو استبدال) الحل المشابه الموجود.
* أضف شرحًا لحلك.
* تصنيف الحل في واحدة من الفئات التالية - **الأساسي** **والمتوسط** **والمتقدم** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ": traffic_light:")
* الرجاء إضافة اسم المستخدم الخاص بك فقط إذا قمت بإضافة أي **محتويات رئيسية ذات صلة** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **_لا_** _تزيل أي أسماء مستخدمين حالية_ )
> نرى ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": point_right:") [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) كمرجع.

View File

@@ -0,0 +1,119 @@
---
title: Repeat a String Repeat a String
localeTitle: كرر سلسلة يكرر سلسلة
---
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": triangular_flag_on_post:") تذكر استخدام **`Read-Search-Ask`** إذا واجهتك مشكلة. حاول إقران البرنامج ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": busts_in_silhouette:") واكتب الكود الخاص بك ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":قلم:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ":العلم متقلب:") شرح المشكلة:
البرنامج بسيط جداً ، وعلينا أن نأخذ متغيراً ونعيد هذا المتغير إلى تكرار قدر معين من المرات. لا حاجة لإضافة مساحة أو أي شيء ، فقط استمر في تكرارها في سلسلة واحدة.
#### روابط ذات صلة
* [كائن السلسلة العالمية](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 1
لا يمكنك تحرير السلاسل ، ستحتاج إلى إنشاء متغير لتخزين السلسلة الجديدة.
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 2
قم بإنشاء حلقة لتكرار الكود عدة مرات حسب الحاجة.
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 3
جعل المتغير إنشاء تخزين القيمة الحالية وإلحاق الكلمة إليها.
> اول أن تحل المشكلة الآن_
## تنبيه المفسد!
![علامة تحذير](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**الحل في المستقبل!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ":مبتدئ:") الحل الأساسي للكود:
`function repeatStringNumTimes(str, num) {
var accumulatedStr = '';
while (num > 0) {
accumulatedStr += str;
num--;
}
return accumulatedStr;
}
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/19)
### شرح الشفرة:
* قم بإنشاء متغير سلسلة فارغ لتخزين الكلمة المكررة.
* استخدم حلقة while (أثناء) أو للحلقة لتكرار التعليمة البرمجية عدة مرات حسب الحاجة وفقًا لعدد `num`
* ثم يجب علينا فقط إضافة السلسلة إلى المتغير الذي تم إنشاؤه في الخطوة الأولى ، وزيادة أو تقليل عدد `num` اعتمادًا على كيفية تعيين الحلقة.
* في نهاية الحلقة ، قم بإرجاع المتغير للكلمة المكررة.
#### روابط ذات صلة
* شبيبة أثناء حلقة
* [شبيبة لشرح الحلقات](https://forum.freecodecamp.com/t/javascript-for-loop/14666s-Explained)
## ![:sunflower:](https://forum.freecodecamp.com/images/emoji/emoji_one/sunflower.png?v=3 ":دوار الشمس:") حل الشفرة المتوسطة:
`function repeatStringNumTimes(str, num) {
if(num < 0)
return "";
if(num === 1)
return str;
else
return str + repeatStringNumTimes(str, num - 1);
}
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/21)
### شرح الشفرة:
* يستخدم هذا الحل العودية.
* نتحقق مما إذا كانت قيمة `num` سالبة وترجع سلسلة فارغة إذا كانت صحيحة.
* ثم نتحقق مما إذا كان يساوي 1 وفي هذه الحالة نقوم بإرجاع السلسلة نفسها.
* إن لم يكن، ونضيف إلى سلسلة لدعوة من وظيفتنا مع `num` التي انخفضت بنسبة 1، الأمر الذي سيزيد من آخر `str` وآخر .. حتى في نهاية المطاف `num` هي 1. وتعود تلك العملية برمتها.
#### روابط ذات صلة
* [وظائف - Recursion](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions#Recursion)
## ![:rotating_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/rotating_light.png?v=3 ": rotating_light:") الحل المتقدم للكود:
`function repeatStringNumTimes(str, num) {
return num > 0 ? str.repeat(num) : '';
}
repeatStringNumTimes("abc", 3);
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/85)
### شرح الشفرة:
* هذا الحل يأخذ نهج إعلاني.
* وهو مماثل للحل الثالث ، باستثناء أنه يستخدم نموذج المشغل الثلاثي لبيان `if` .
#### روابط ذات صلة
* [JS Ternary](https://forum.freecodecamp.com/t/javascript-ternary-operator/15973)
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": الحافظة:") ملاحظات للمساهمات:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **لا تقم** بإضافة حلول مشابهة لأي حلول موجودة. إذا كنت تعتقد أنها **_مشابهة ولكن أفضل_** ، فحاول دمج (أو استبدال) الحل المشابه الموجود.
* أضف شرحًا لحلك.
* تصنيف الحل في واحدة من الفئات التالية - **الأساسي** **والمتوسط** **والمتقدم** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ": traffic_light:")
* الرجاء إضافة اسم المستخدم الخاص بك فقط إذا قمت بإضافة أي **محتويات رئيسية ذات صلة** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **_لا_** _تزيل أي أسماء مستخدمين حالية_ )
> نرى ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": point_right:") [**`Wiki Challenge Solution Template`**](https://forum.freecodecamp.com/t/algorithm-article-template/14272) كمرجع.

View File

@@ -0,0 +1,160 @@
---
title: Return Largest Numbers in Arrays
localeTitle: أكبر عدد من المصفوفات في المصفوفة
---
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": triangular_flag_on_post:") تذكر استخدام **`Read-Search-Ask`** إذا واجهتك مشكلة. حاول إقران البرنامج ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": busts_in_silhouette:") واكتب الكود الخاص بك ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":قلم:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ":العلم متقلب:") شرح المشكلة:
سوف تحصل على صفيف يحتوي على صفائف فرعية من الأرقام وتحتاج إلى إرجاع صفيف مع أكبر رقم من كل من المصفوفات الفرعية.
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 1
سوف تحتاج إلى تتبع الصفيف مع الإجابة وأكبر عدد من كل مجموعة فرعية.
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 2
يمكنك العمل مع صفائف متعددة الأبعاد بواسطة `Array[Index][SubIndex]`
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 3
انتبه جيدًا إلى توقيت تخزين المتغيرات عند العمل مع الحلقات
> اول أن تحل المشكلة الآن_
## تنبيه المفسد!
![علامة تحذير](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**الحلول في المستقبل!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ":مبتدئ:") الحل الأساسي للكود:
**(النهج الإجرائي)**
`function largestOfFour(arr) {
var results = [];
for (var n = 0; n < arr.length; n++) {
var largestNumber = arr[n][0];
for (var sb = 1; sb < arr[n].length; sb++) {
if (arr[n][sb] > largestNumber) {
largestNumber = arr[n][sb];
}
}
results[n] = largestNumber;
}
return results;
}
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/734)
### شرح الشفرة:
* قم بإنشاء متغير لتخزين _النتائج_ كصفيف.
* قم بإنشاء حلقة خارجية للتكرار خلال الصفيف الخارجي.
* إنشاء متغير ثاني لاحتواء أكبر عدد وتهيئة الرقم الأول. يجب أن يكون هذا خارج حلقة داخلية لذلك لن يتم إعادة تعيينه حتى نجد عددًا أكبر.
* إنشاء حلقة داخلية قال للعمل مع المصفوفات الفرعية.
* تحقق مما إذا كان عنصر المصفوفة الفرعية أكبر من العدد الأكبر المخزن حاليًا. إذا كان الأمر كذلك ، قم بتحديث الرقم في المتغير.
* بعد الحلقة الداخلية ، احفظ أكبر رقم في الموضع المقابل داخل مصفوفة `results` .
* وأخيراً أعد صفها.
#### روابط ذات صلة
* [للحلقات](http://forum.freecodecamp.com/t/javascript-for-loop/14666s-Explained)
## ![:sunflower:](https://forum.freecodecamp.com/images/emoji/emoji_one/sunflower.png?v=3 ":دوار الشمس:") حل الشفرة المتوسطة:
**(النهج التعريفي)**
`function largestOfFour(arr) {
return arr.map(function(group){
return group.reduce(function(prev, current) {
return (current > prev) ? current : prev;
});
});
}
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/733)
### شرح الشفرة:
* نقوم بتعيين كل العناصر داخل المصفوفة الرئيسية إلى مصفوفة جديدة باستخدام `Array.prototype.map()` وإرجاع هذا المصفوفة `Array.prototype.map()` النهائية
* داخل كل صفيف داخلي ، نقوم بتقليل محتوياته إلى قيمة واحدة باستخدام `Array.prototype.reduce()`
* تأخذ وظيفة رد الاتصال التي تم تمريرها إلى طريقة تقليل القيمة السابقة والقيمة الحالية وتقارن القيمتين
* إذا كانت القيمة الحالية أعلى من القيمة السابقة ، فسيتم تعيينها كقيمة سابقة جديدة للمقارنة مع العنصر التالي داخل الصفيف أو إرجاعها إلى استدعاء أسلوب الخريطة إذا كان العنصر الأخير
#### روابط ذات صلة
* [Array.prototype.map ()](http://forum.freecodecamp.com/t/javascript-array-prototype-map/14294)
* [Array.prototype.reduce ()](http://forum.freecodecamp.com/t/javascript-array-prototype-reduce/14299)
* [المشغلين التابعين](http://forum.freecodecamp.com/t/javascript-ternary-operator/15973)
## ![:rotating_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/rotating_light.png?v=3 ": rotating_light:") الحل المتقدم للكود:
**(النهج التعريفي)**
`function largestOfFour(arr) {
return arr.map(Function.apply.bind(Math.max, null));
}
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/17)
### شرح الشفرة:
TL ؛ DR: نحن نبني وظيفة رد اتصال خاص (باستخدام طريقة `Function.bind` ) ، التي تعمل تمامًا مثل `Math.max` ولكن أيضًا لديها القدرة على اتخاذ `Math.max` `Function.prototype.apply` `Math.max` ![:smiley:](https://forum.freecodecamp.com/images/emoji/emoji_one/smiley.png?v=3 ": مبتسم:")
* نبدأ من خلال رسم الخرائط من خلال العناصر داخل المصفوفة الرئيسية. معنى كل واحدة من المصفوفات الداخلية.
* الآن الحاجة إلى وظيفة رد اتصال للعثور على الحد الأقصى من كل مجموعة الداخلية التي تقدمها الخريطة.
لذا نريد إنشاء وظيفة تقوم بعمل `Math.max` وتقبل الإدخال كصفيف (والذي لا يتم افتراضياً عن `Math.max` ).
بعبارة أخرى ، سيكون الأمر لطيفًا وبسيطًا إذا نجح هذا بنفسه:
`Math.max([9, 43, 20, 6]); // Resulting in 43`
للأسف ، لا.
* للقيام بعمل قبول الوسيطات في شكل مصفوفة ، توجد هذه الطريقة `Function.prototype.apply` ، ولكنها تعقّد الأشياء قليلاً _باستدعاء_ وظيفة _السياق_ .
أي `Math.max.apply(null, [9, 43, 20, 6]);` يمكن استدعاء شيء مثل أسلوب `Max.max` . ما نبحث عنه ... تقريبا.
نحن هنا نعتبر `null` _سياق سياق_ `Function.prototype.apply` حيث لا يحتاج `Math.max` إلى أي سياق.
* بما أن `arr.map` يتوقع وظيفة رد اتصال ، وليس مجرد تعبير ، فإننا نقوم بإنشاء دالة خارج التعبير السابق باستخدام الأسلوب `Function.bind` .
* منذ ، `Function.prototype.apply` هو _طريقة_ ثابتة _لكائن_ `Function` نفسه ، يمكننا الاتصال `Function.prototype.bind` على `Function.prototype.apply` ie `Function.prototype.apply.bind` .
* الآن نقوم بتمرير _السياق_ للدعوة `Function.prototype.apply.bind` (في هذه الحالة نريد `Math.max` حتى نتمكن من الحصول على وظائفه).
* نظرًا لأن الأسلوب `Function.prototype.apply` المضمن سيتطلب أيضًا سياقًا كوسيطة أولى ، نحتاج إلى تمريره في _سياق_ زائف.
* لذلك ، فإننا نمر `null` `Math.max` ثانية إلى `Function.prototype.apply.bind` الذي يعطي _سياقًا_ لطريقة `Math.max` .
* نظرًا لأن ، `Math.max` مستقل عن أي _سياق_ ، فإنه يتجاهل _السياق_ الزائف المعطى بواسطة استدعاء الأسلوب `Function.prototype.apply` .
* وبالتالي ، يجعل `Function.prototype.apply.bind(Math.max, null)` دالة جديدة تقبل قيم `arr.map` بمعنى المصفوفات الداخلية.
#### روابط ذات صلة
* [Math.max](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max)
* [Function.prototype.apply على DevDocs](http://devdocs.io/#q=js+Function+apply)
* [Function.bind على DevDocs](http://devdocs.io/#q=js+Function+bind)
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": الحافظة:") ملاحظات للمساهمات:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **لا تقم** بإضافة حلول مشابهة لأي حلول موجودة. إذا كنت تعتقد أنها **_مشابهة ولكن أفضل_** ، فحاول دمج (أو استبدال) الحل المشابه الموجود.
* أضف شرحًا لحلك.
* تصنيف الحل في واحدة من الفئات التالية - **الأساسي** **والمتوسط** **والمتقدم** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ": traffic_light:")
* الرجاء إضافة اسم المستخدم الخاص بك فقط إذا قمت بإضافة أي **محتويات رئيسية ذات صلة** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **_لا_** _تزيل أي أسماء مستخدمين حالية_ )
> نرى ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": point_right:") [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) كمرجع.

View File

@@ -0,0 +1,68 @@
---
title: Reverse a String
localeTitle: عكس سلسلة
---
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": triangular_flag_on_post:") تذكر استخدام **`Read-Search-Ask`** إذا واجهتك مشكلة. حاول إقران البرنامج ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": busts_in_silhouette:") واكتب الكود الخاص بك ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":قلم:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ":العلم متقلب:") شرح المشكلة:
نحتاج أن نأخذ السلسلة ونعكسها ، لذلك إذا قرأ "مرحبا" في الأصل ، سيقرأ الآن "olleh". سنحتاج إلى تقسيم السلسلة ، وبالتالي سوف نعمل مع Arrays أيضًا.
#### روابط ذات صلة
* [str.split ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split)
* [arr.reverse ()](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse)
* [arr.join ()](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/join)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 1
ابدأ بتجزئة السلسلة بأحرف.
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 2
ابحث عن وظيفة مدمجة لعكس سلسلة.
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 3
لا تنسى الانضمام إلى الشخصيات مرة أخرى بعد عكسها.
> اول أن تحل المشكلة الآن_
## تنبيه المفسد!
![علامة تحذير](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**الحل في المستقبل!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ":مبتدئ:") الحل الأساسي للكود:
`function reverseString(str) {
return str.split('').reverse().join('');
}
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU)
### شرح الشفرة:
* هدفنا هو أخذ الإدخال ، `str` ، وإعادته في الاتجاه المعاكس. خطوتنا الأولى هي تقسيم السلسلة بالأحرف باستخدام `split('')` . لاحظ أننا لا نترك أي شيء بين علامات الاقتباس المفردة ، وهذا يخبر الدالة بتقسيم السلسلة لكل حرف.
* استخدام الدالة `split()` سيحول السلسلة إلى مجموعة من الأحرف ، ضع ذلك في الاعتبار بينما نمضي قدمًا.
* بعد ذلك ، نقوم _بربط_ الدالة `reverse()` ، والتي تأخذ مجموعة من الأحرف الخاصة بنا وتقوم بإرجاعها.
* وأخيرًا ، فإننا `join('')` _سلسلة_ `join('')` لإعادة أحرفنا إلى سلسلة. لاحظ مرة أخرى أننا لم نترك أي مسافات في الوسيطة للانضمام ، وهذا يجعل من أن مجموعة الصفوف مرتبطة معاً بكل حرف.
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": الحافظة:") ملاحظات للمساهمات:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **لا تقم** بإضافة حلول مشابهة لأي حلول موجودة. إذا كنت تعتقد أنها **_مشابهة ولكن أفضل_** ، فحاول دمج (أو استبدال) الحل المشابه الموجود.
* أضف شرحًا لحلك.
* تصنيف الحل في واحدة من الفئات التالية - **الأساسي** **والمتوسط** **والمتقدم** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ": traffic_light:")
* الرجاء إضافة اسم المستخدم الخاص بك فقط إذا قمت بإضافة أي **محتويات رئيسية ذات صلة** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **_لا_** _تزيل أي أسماء مستخدمين حالية_ )
> نرى ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": point_right:") [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) كمرجع.

View File

@@ -0,0 +1,77 @@
---
title: Slice and Splice
localeTitle: شريحة و لصق
---
## شريحة و لصق
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": triangular_flag_on_post:") تذكر استخدام **`Read-Search-Ask`** إذا واجهتك مشكلة. حاول إقران البرنامج ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": busts_in_silhouette:") واكتب الكود الخاص بك ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":قلم:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ":العلم متقلب:") شرح المشكلة:
نحتاج إلى نسخ كل عنصر من المصفوفة الأولى إلى المصفوفة الثانية بدءًا من الفهرس n. علينا أيضا أن نتأكد من أن المصفوفات الأصلية ليست متحولة. بمعنى ، لا يمكننا إجراء أي تغييرات على المصفوفات الأصلية.
#### روابط ذات صلة
* [str.slice ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice)
* [str.splice ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 1
قم بإنشاء نسخة من المصفوفة الثانية داخل الدالة. سيضمن ذلك عدم تحوّل الصفيف الأصلي. يمكن القيام بذلك عن طريق استخدام عملية الشريحة في الصفيف الثاني ، وتعيينه إلى متغير.
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 2
قم بالالتفاف عبر كافة العناصر في الصفيف الأول. لكل عنصر في الصفيف الأول لصقه في المصفوفة المنسوخة في الفهرس المعطى كوسيطة.
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 3
زيادة المؤشر بعد إجراء لصق.
> اول أن تحل المشكلة الآن_
## تنبيه المفسد!
![علامة تحذير](https://discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**الحل في المستقبل!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ":مبتدئ:") الحل الأساسي للكود:
`function frankenSplice(arr1, arr2, n) {
// It's alive. It's alive!
let localArray = arr2.slice();
for (let i = 0; i < arr1.length; i++) {
localArray.splice(n, 0, arr1[i]);
n++;
}
return localArray;
}
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU)
### شرح الشفرة:
* هدفنا هو أخذ جميع العناصر من `arr1` وإدخالها في `arr2` بدءًا من وضع الفهرس `n` . في نفس الوقت يجب علينا أن ensurethat لا `arr` أو `arr2` تم تحور.
* باستخدام الدالة `slice()` يمكننا إنشاء نسخة طبق الأصل من `arr2` بدقة وتعيين نتيجة العملية إلى متغير ، `localArray` .
* والآن بعد أن أصبح لدينا مجموعة يمكننا التحور عليها ، يمكننا التكرار من خلال كل عنصر في الصفيف الأول. لكل عنصر في الصفيف الأول يمكننا استخدام الدالة `splice()` لإدراج العنصر في فهرس `n` من `localArray` .
* نحن زيادة مؤشر `n` تلو الآخر. سيضمن هذا أن كل عنصر من `arr1` يتم إدخاله في `localArray` في موضع الفهرس الصحيح.
* وأخيرًا ، نعود إلى `localArray` الوظيفة.
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": الحافظة:") ملاحظات للمساهمات:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **لا تقم** بإضافة حلول مشابهة لأي حلول موجودة. إذا كنت تعتقد أنها **_مشابهة ولكن أفضل_** ، فحاول دمج (أو استبدال) الحل المشابه الموجود.
* أضف شرحًا لحلك.
* تصنيف الحل في واحدة من الفئات التالية - **الأساسي** **والمتوسط** **والمتقدم** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ": traffic_light:")
* الرجاء إضافة اسم المستخدم الخاص بك فقط إذا قمت بإضافة أي **محتويات رئيسية ذات صلة** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **_لا_** _تزيل أي أسماء مستخدمين حالية_ )
> نرى ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": point_right:") [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) كمرجع.

View File

@@ -0,0 +1,144 @@
---
title: Title Case a Sentence
localeTitle: العنوان حالة الجملة
---
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": triangular_flag_on_post:") تذكر استخدام **`Read-Search-Ask`** إذا واجهتك مشكلة. حاول إقران البرنامج ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": busts_in_silhouette:") واكتب الكود الخاص بك ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":قلم:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ":العلم متقلب:") شرح المشكلة:
علينا أن نعيد الجملة مع حالة اللقب. وهذا يعني أن الحرف الأول سيكون دائمًا بالحروف الكبيرة وأن يكون الباقي بأحرف صغيرة.
#### روابط ذات صلة
* [كائن السلسلة العالمية](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)
* [JS String Prototype ToLowerCase](http://forum.freecodecamp.com/t/javascript-string-prototype-tolowercase/15948)
* [JS String Prototype ToUpperCase](http://forum.freecodecamp.com/t/javascript-string-prototype-touppercase/15950)
* [JS String Prototype Replace](http://forum.freecodecamp.com/t/javascript-string-prototype-replace/15942)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 1
* يجب أن تبدأ بتجزئة السلسلة إلى مجموعة من الكلمات.
* انقسام الجملة.
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 2
* يجب أن تجعل الكلمة صغيرة قبل إنشاء الحرف الأول بأحرف كبيرة.
* استخدم طريقة الاستبدال في كل كلمة لتكبير الحرف الأول من كل كلمة.
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 3
* ستحتاج إلى إنشاء سلسلة جديدة بقطع من السلسلة السابقة ، وفي النهاية دمج كل شيء في سلسلة واحدة مرة أخرى.
* في أسلوب الاستبدال ، قم بإعطاء الوسيطة الأولى كموضع الحرف الأول باستخدام charAt. بالنسبة إلى الوسيطة الثانية ، اكتب دالة لإرجاع الحرف المكتوب عليه كبديل.
> اول أن تحل المشكلة الآن_
## تنبيه المفسد!
![علامة تحذير](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**الحل في المستقبل!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ":مبتدئ:") الحل الأساسي للكود:
`String.prototype.replaceAt = function(index, character) {
return this.substr(0, index) + character + this.substr(index+character.length);
};
function titleCase(str) {
var newTitle = str.split(' ');
var updatedTitle = [];
for (var st in newTitle) {
updatedTitle[st] = newTitle[st].toLowerCase().replaceAt(0, newTitle[st].charAt(0).toUpperCase());
}
return updatedTitle.join(' ');
}
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/8)
### شرح الشفرة:
نقوم بتعديل وظيفة `replaceAt` باستخدام النموذج لتسهيل استخدام البرنامج.
تقسيم السلسلة بمسافات بيضاء ، وإنشاء متغير لتعقب العنوان الذي تم تحديثه. ثم نستخدم حلقة لتحويل تحويل الحرف الأول من الكلمة إلى أحرف كبيرة والباقي إلى أحرف صغيرة. من خلال إنشاء سلسلة متسلسلة تتألف من الكلمة بأكملها بأحرف صغيرة مع استبدال الحرف الأول بحرف كبير.
#### روابط ذات صلة
* [شبيبة لشرح الحلقات](http://forum.freecodecamp.com/t/javascript-for-loop/14666s-Explained)
* [JS String Prototype Split](http://forum.freecodecamp.com/t/javascript-string-prototype-split/15944)
* [JS String Prototype Substr](http://forum.freecodecamp.com/t/javascript-string-prototype-substr/15945)
* [شبيبة صفيف النموذج](http://forum.freecodecamp.com/t/javascript-array-prototype-join/14292)
## ![:sunflower:](https://forum.freecodecamp.com/images/emoji/emoji_one/sunflower.png?v=3 ":دوار الشمس:") حل الشفرة المتوسطة:
`function titleCase(str) {
var convertToArray = str.toLowerCase().split(" ");
var result = convertToArray.map(function(val){
return val.replace(val.charAt(0), val.charAt(0).toUpperCase());
});
return result.join(" ");
}
titleCase("I'm a little tea pot");
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/9)
### شرح الشفرة:
نحن نبذل سلسلة صغيرة بأكملها ومن ثم تحويلها إلى مجموعة. ثم نستخدم وظيفة الخريطة لاستبدال الحرف الصغير بالحروف الكبيرة. وأخيرًا ، نعيد السلسلة باستخدام طريقة `join` .
#### روابط ذات صلة
* [JS Array Prototype Map](http://forum.freecodecamp.com/t/javascript-array-prototype-map/14294)
## ![:rotating_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/rotating_light.png?v=3 ": rotating_light:") الحل المتقدم للكود:
`function titleCase(str) {
return str.toLowerCase().replace(/(^|\s)\S/g, (L) => L.toUpperCase());
}
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/14)
### شرح الشفرة:
يعمل الحل أولاً بتخفيض جميع الأحرف في السلسلة ، ثم يؤدي إلى حرف أول حرف فقط لكل كلمة.
* أحرف صغيرة السلسلة بأكملها باستخدام `str.toLowerCase()` .
* استبدل كل كلمة "أول حرف بأحرف كبيرة باستخدام `.replace` .
* ابحث عن الحرف في بداية كل كلمة ، أي مطابقة أي حرف بعد `space` أو مطابقة الحرف الأول من السلسلة بأكملها ، باستخدام النمط التالي.
* شرح regex:
* البحث عن كل أحرف غير بيضاء `(\S` )
* في بداية السلسلة `(^)`
* أو بعد أي حرف مسافة بيضاء `(\s)`
* يبحث معدّل `g` لنمط كلمة آخر من هذا القبيل في السلسلة بأكملها ويستبدلها.
* يعمل هذا الحل مع الرموز الوطنية والأحرف البارزة كما هو موضح في الأمثلة التالية
`international characters:` 'бабушка курит трубку' // -> 'Бабушка Курит Трубку'
`accented characters:` 'località àtilacol' // -> 'Località Àtilacol'
#### روابط ذات صلة
* [شبيبة ريجكس الموارد](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions)
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": الحافظة:") ملاحظات للمساهمات:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **لا تقم** بإضافة حلول مشابهة لأي حلول موجودة. إذا كنت تعتقد أنها **_مشابهة ولكن أفضل_** ، فحاول دمج (أو استبدال) الحل المشابه الموجود.
* أضف شرحًا لحلك.
* تصنيف الحل في واحدة من الفئات التالية - **الأساسي** **والمتوسط** **والمتقدم** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ": traffic_light:")
* الرجاء إضافة اسم المستخدم الخاص بك فقط إذا قمت بإضافة أي **محتويات رئيسية ذات صلة** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **_لا_** _تزيل أي أسماء مستخدمين حالية_ )
> نرى ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": point_right:") [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) كمرجع.

View File

@@ -0,0 +1,101 @@
---
title: Truncate a String
localeTitle: اقتطاع سلسلة
---
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": triangular_flag_on_post:") تذكر استخدام **`Read-Search-Ask`** إذا واجهتك مشكلة. حاول إقران البرنامج ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": busts_in_silhouette:") واكتب الكود الخاص بك ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":قلم:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ":العلم متقلب:") شرح المشكلة:
نحتاج إلى تقليل طول السلسلة أو **اقتطاعها** إذا كانت أطول من الطول الأقصى المحدد المحدد وإضافة `...` إلى النهاية. إذا لم يكن طويلاً ، فإننا نحتفظ بها كما هي.
#### روابط ذات صلة
* [String.prototype.slice ()](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/JS-String-Prototype-Slice)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 1
سلاسل غير قابلة للتغيير في JavaScript لذا سنحتاج إلى متغير جديد لتخزين السلسلة المقتطعة.
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 2
ستحتاج إلى استخدام طريقة الشريحة () وتحديد مكان البدء وأين تتوقف.
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 3
لا ننسى أنه عندما نقتسم الكلمة ، يجب علينا أيضًا حساب الطول الذي أضيفه `...`
> اول أن تحل المشكلة الآن_
## تنبيه المفسد!
![علامة تحذير](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**الحل في المستقبل!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ":مبتدئ:") الحل الأساسي للكود:
`function truncateString(str, num) {
// Clear out that junk in your trunk
if (str.length > num && num > 3) {
return str.slice(0, (num - 3)) + '...';
} else if (str.length > num && num <= 3) {
return str.slice(0, num) + '...';
} else {
return str;
}
}
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/55)
### شرح الشفرة:
* نبدأ أولاً ببيان بسيط `if` تحديد إحدى النتائج الثلاثة ...
* إذا طول سلسلة لدينا هو أكبر من `num` نريد لاقتطاع في، ونقطة اقتطاع لدينا ثلاثة أحرف على الأقل أو أكثر في سلسلة، نعود شريحة من سلسلة لدينا تبدأ من حرف 0، وتنتهي في `num - 3` . ثم نلحق `'...'` بنهاية السلسلة.
* ومع ذلك، إذا طول سلسلة لدينا هو أكبر من `num` ولكن `num` ضمن أول ثلاثة أحرف، ونحن لم يكن لديك لحساب النقاط على النحو حرفا. لذلك، نعود لنفس السلسلة على النحو الوارد أعلاه، مع فارق واحد: نقطة النهاية من شريحة لدينا الآن فقط `num` .
* وأخيرًا ، إذا لم تكن أي من الحالات المذكورة أعلاه صحيحة ، فهذا يعني أن طول السلسلة أقل من عدد `num` . لذلك ، يمكننا فقط إرجاع السلسلة.
## ![:rotating_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/rotating_light.png?v=3 ": rotating_light:") الحل المتقدم للكود:
`function truncateString(str, num) {
if (str.length <= num) {
return str;
} else {
return str.slice(0, num > 3 ? num - 3 : num) + '...';
}
}
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/54)
### شرح الشفرة:
* أولاً ، نحتاج إلى جملة if لاختبار ما إذا كان طول السلسلة الكاملة قد تم تمريره حيث أن الوسيطة الأولى تتلاءم بالفعل ضمن حد الحجم الذي تم تمريره كوسيطة ثانية. إذا كان الأمر كذلك ، فيمكننا فقط إرجاع السلسلة التي تم تمريرها.
إذا (str.length <= عدد الأسطوانات) عودة str؛
* إذا فشل بيان `if` بنا أعلاه ، فإننا ننتقل إلى `else` ، حيث سنقوم بإرجاع "شريحة" من السلسلة. تقوم طريقة الشريحة باستخلاص مقطع من سلسلة وإرجاع سلسلة جديدة. هنا نعبر 0 كنقطة انطلاق لشريحة لدينا. لتحديد نقطة النهاية ، نستخدم مشغل الثلاثي: عدد `num > 3 ? num - 3 : num` . في الثلاثي لدينا، إذا `num` أكبر من 3، ونحن يجب أن عاملا في النقاط الثلاث ليبلغ الطول الإجمالي لدينا، وبالتالي نحن في نهاية شريحة لدينا في `num-3` . إذا كانت قيمة num أقل من أو تساوي 3 ، فإن الشريحة تحصل على متغير نهاية `num` . وأخيرًا ، يتم إلحاق `'...'` بنهاية السلسلة الجديدة الخاصة بنا ويتم إرجاعها.
} آخر { return str.slice (0، num> 3 num - 3: num) + '…'؛ }
* **ملاحظة** لفهم الكود أعلاه ، تحتاج إلى فهم كيفية عمل مشغل Ternary. وكثيرا ما يستخدم المشغل الثلاثي كاختصار لبيان `if` ويتبع هذا الشكل: `condition ? expr1 : expr2` . إذا تم تقييم `condition` إلى true ، `expr1` تُرجع عامل التشغيل قيمة `expr1` . خلاف ذلك ، تقوم بإرجاع قيمة `expr2` .
#### روابط ذات صلة
* [شرطي (ثلاثي) المشغل](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator)
* [String.prototype.slice ()](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/JS-String-Prototype-Slice)
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": الحافظة:") ملاحظات للمساهمات:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **لا تقم** بإضافة حلول مشابهة لأي حلول موجودة. إذا كنت تعتقد أنها **_مشابهة ولكن أفضل_** ، فحاول دمج (أو استبدال) الحل المشابه الموجود.
* أضف شرحًا لحلك.
* تصنيف الحل في واحدة من الفئات التالية - **الأساسي** **والمتوسط** **والمتقدم** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ": traffic_light:")
* الرجاء إضافة اسم المستخدم الخاص بك فقط إذا قمت بإضافة أي **محتويات رئيسية ذات صلة** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **_لا_** _تزيل أي أسماء مستخدمين حالية_ )
> نرى ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": point_right:") [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) كمرجع.

View File

@@ -0,0 +1,205 @@
---
title: Where Do I Belong
localeTitle: إلى أين أنتمي
---
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": triangular_flag_on_post:") تذكر استخدام **`Read-Search-Ask`** إذا واجهتك مشكلة. حاول إقران البرنامج ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": busts_in_silhouette:") واكتب الكود الخاص بك ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":قلم:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ":العلم متقلب:") شرح المشكلة:
هذا يمكن أن يكون مشكلة صعبة لفهم. تحتاج إلى العثور على مكان في الصفيف يجب إدراج رقم بواسطة الأمر ، وإرجاع الفهرس حيث يجب أن تذهب.
#### روابط ذات صلة
* [شبيبة صفيف الفرز](http://forum.freecodecamp.com/t/javascript-array-prototype-sort/14306)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 1
أول شيء يجب فعله هو ترتيب الصفيف من الأسفل إلى الأعلى ، فقط لجعل الرمز أسهل. هذا هو المكان الذي يأتي فيه النوع ، فهو يحتاج إلى وظيفة رد اتصال حتى تضطر إلى إنشائه.
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 2
بمجرد فرز الصفيف ، قم فقط بالتحقق من الرقم الأول الأكبر وإرجاع الفهرس.
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 3
إذا لم يكن هناك مؤشر لهذا الرقم ، فسيتعين عليك التعامل مع هذه الحالة أيضًا.
> اول أن تحل المشكلة الآن_
## تنبيه المفسد!
![علامة تحذير](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**الحل في المستقبل!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ":مبتدئ:") الحل الأساسي للكود:
`function getIndexToIns(arr, num) {
arr.sort(function(a, b) {
return a - b;
});
for (var a = 0; a < arr.length; a++) {
if (arr[a] >= num)
return a;
}
return arr.length;
}
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/36)
## شرح الشفرة:
* أولاً ، أقوم بتصنيف الصفيف باستخدام. `.sort(callbackFuntion)` حسب الأقل إلى الأعلى ، من اليسار إلى اليمين.
* ثم أستخدم حلقة for لمقارنة العناصر الموجودة في الصفيف بدءًا من أصغرها. عندما يكون عنصر في الصفيف أكبر من الرقم الذي نقارنه ، فإننا نعيد الفهرس كعدد صحيح.
#### روابط ذات صلة
* [parseInt ()](http://forum.freecodecamp.com/t/javascript-parseint/14686)
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ":مبتدئ:") الحل الأساسي للكود:
`function getIndexToIns(arr, num) {
// Find my place in this sorted array.
var times = arr.length; // runs the for loop once for each thing in the array
var count = 0;
for (var i=0;i<times;i++){
if(num>arr[i]){count++;} } // counts how many array numbers are smaller than num
return count; // the above equals num's position in a sorted array
}
getIndexToIns([40, 60], 50);
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/2547)
## شرح الشفرة:
* أنا لا فرز مصفوفة إدخال arr
* أقوم بحساب عد للفرز كلما كان إدخال num أكبر من رقم إدخال arr.
* هذا الرقم يساوي ما هو موضع num في مصفوفة مرتبة.
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ":مبتدئ:") الحل الأساسي للكود:
بواسطة [HarinaPana](/u/harinapana)
`function getIndexToIns(arr, num) {
arr.sort(function(a, b) {
return a - b;
});
var i = 0;
while (num > arr[i]) {
i++;
}
return i;
}
getIndexToIns([40, 60], 50);
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/4135)
## شرح الشفرة:
* فرز مجموعة موجودة.
* تكرار خلال مجموعة أثناء التحقق إذا _الأسطوانات_ هي الأكبر.
* ستتوقف الحلقة عندما لا تكون _num_ أكبر من _i_ وإرجاع العنصر الأخير محددًا.
## ![:sunflower:](https://forum.freecodecamp.com/images/emoji/emoji_one/sunflower.png?v=3 ":دوار الشمس:") حل الشفرة المتوسطة:
بواسطة [faustodc](/u/faustodc)
`function getIndexToIns(arr, num) {
arr.push(num);
arr.sort(function(a, b){return ab});
return arr.indexOf(num);
}
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/EB10/1)
## شرح الشفرة:
* أولاً ، نضيف عدد `num` إلى الصفيف باستخدام `push()` الذي يضيفه كعنصر آخر في الصفيف.
* ثم نستخدم `sort()` مع وظيفة `function(a, b){return ab}` رد الاتصال `function(a, b){return ab}` لفرز الأرقام بترتيب تصاعدي.
* وأخيرًا ، نعيد عنوان أو فهرس `num` في الصفيف باستخدام الدالة `indexOf()` .
#### روابط ذات صلة
* [إدفع()](http://forum.freecodecamp.com/t/javascript-array-prototype-push/14298)
* [فرز()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)
* [مؤشر()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf)
## ![:sunflower:](https://forum.freecodecamp.com/images/emoji/emoji_one/sunflower.png?v=3 ":دوار الشمس:") حل الشفرة المتوسطة:
**باستخدام `.findIndex()`**
`function getIndexToIns(arr, num) {
// sort and find right index
var index = arr.sort((curr, next) => curr > next)
.findIndex((currNum)=> num <= currNum);
// Returns proper answer
return index === -1 ? arr.length : index;
}
getIndexToIns([40, 60], 500);
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLjU/63)
## شرح الشفرة:
* أولاً ، قم بفرز الصفيف بترتيب تصاعدي ، ويتم ذلك حاليًا باستخدام وظائف الصفيف للحد الأدنى من المساحة.
* بمجرد فرز المصفوفة ، نقوم مباشرة بتطبيق `.findIndex()` حيث سنقوم بمقارنة كل عنصر في المصفوفة حتى نجد `num <= currNum` حيث أن الرقم الذي نريد إدراجه هو أقل أو يساوي الرقم الحالي رقم في التكرار.
* ثم نستخدم العمليات الثلاثية للتحقق مما إذا حصلنا على فهرس تم إرجاعه أو `-1` . نحصل فقط على `-1` عندما لم يتم العثور على المعنى يعني عندما نحصل على خطأ بالنسبة لجميع العناصر في الصفيف ، وفي هذه الحالة ، يعني ذلك أنه يجب إدراج `num` في نهاية القائمة ومن ثمَّ ، لماذا نستخدم `arr.length` .
#### روابط ذات صلة
* [Array.findIndex ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex)
* [وظائف السهم](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions)
* [مشغل ثلاثي](http://forum.freecodecamp.com/t/javascript-ternary-operator/15973)
## ![:rotating_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/rotating_light.png?v=3 ": rotating_light:") الحل المتقدم للكود:
بواسطة [nivrith](/u/nivrith)
`function getIndexToIns(arr, num) {
return arr.concat(num).sort((a,b) => ab).indexOf(num);
}
getIndexToIns([1,3,4],2);
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/IUJE/0)
## شرح الشفرة:
* نستخدم تسلسل الأسلوب لاستدعاء طريقة واحدة تلو الأخرى لحل المشكلة في سطر واحد. أولاً نقوم بدمج `arr` و `num` باستدعاء طريقة arr.concat (num)
* ثم نستخدم `sort()` مع **وظيفة سهم** الاستعادة `(a, b) => return ab` لفرز الأرقام بترتيب تصاعدي
* وأخيرًا ، نعيد عنوان أو فهرس `num` في الصفيف باستخدام طريقة `indexOf()`
#### روابط ذات صلة
* [طريقة تسلسل في JavaScript](https://schier.co/blog/2013/11/14/method-chaining-in-javascript.html)
* [CONCAT ()](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/concat?v=example)
* [وظائف السهم](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions)
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": الحافظة:") ملاحظات للمساهمات:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **لا تقم** بإضافة حلول مشابهة لأي حلول موجودة. إذا كنت تعتقد أنها **_مشابهة ولكن أفضل_** ، فحاول دمج (أو استبدال) الحل المشابه الموجود.
* أضف شرحًا لحلك.
* تصنيف الحل في واحدة من الفئات التالية - **الأساسي** **والمتوسط** **والمتقدم** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ": traffic_light:")
* الرجاء إضافة اسم المستخدم الخاص بك فقط إذا قمت بإضافة أي **محتويات رئيسية ذات صلة** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":تحذير:") **_لا_** _تزيل أي أسماء مستخدمين حالية_ )
> نرى ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": point_right:") [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) كمرجع.