mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2026-01-10 09:05:55 -05:00
chore(i18n,learn): processed translations (#48152)
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
---
|
||||
id: a77dbc43c33f39daa4429b4f
|
||||
title: ما هي المقارنة (Boo who)
|
||||
challengeType: 1
|
||||
forumTopicId: 16000
|
||||
dashedName: boo-who
|
||||
---
|
||||
|
||||
# --description--
|
||||
|
||||
تحقق مما إذا كانت القيمة تصنف كقيمة boolean المنطقية. أنتج القيم `true` أو `false`.
|
||||
|
||||
قيم المقارنة (Boolean primitives) تكون `true` و `false`.
|
||||
|
||||
# --hints--
|
||||
|
||||
يجب أن ينتج `booWho(true)` القيمة باسم `true`.
|
||||
|
||||
```js
|
||||
assert.strictEqual(booWho(true), true);
|
||||
```
|
||||
|
||||
`booWho(false)` يجب أن ينتج `true`.
|
||||
|
||||
```js
|
||||
assert.strictEqual(booWho(false), true);
|
||||
```
|
||||
|
||||
`booWho([1, 2, 3])` يجب أن ينتج `false`.
|
||||
|
||||
```js
|
||||
assert.strictEqual(booWho([1, 2, 3]), false);
|
||||
```
|
||||
|
||||
`booWho([].slice)` يجب أن يتنج `false`.
|
||||
|
||||
```js
|
||||
assert.strictEqual(booWho([].slice), false);
|
||||
```
|
||||
|
||||
`booWho({ "a": 1 })` يجب أن ينتج `false`.
|
||||
|
||||
```js
|
||||
assert.strictEqual(booWho({ a: 1 }), false);
|
||||
```
|
||||
|
||||
`booWho(1)` يجب أن ينتج `false`.
|
||||
|
||||
```js
|
||||
assert.strictEqual(booWho(1), false);
|
||||
```
|
||||
|
||||
`booWho(NaN)` يجب أن ينتج `false`.
|
||||
|
||||
```js
|
||||
assert.strictEqual(booWho(NaN), false);
|
||||
```
|
||||
|
||||
`booWho("a")` يجب أن ينتج `false`.
|
||||
|
||||
```js
|
||||
assert.strictEqual(booWho('a'), false);
|
||||
```
|
||||
|
||||
`booWho("true")` يجب أن ينتج `false`.
|
||||
|
||||
```js
|
||||
assert.strictEqual(booWho('true'), false);
|
||||
```
|
||||
|
||||
`booWho("false")` يجب أن ينتج `false`.
|
||||
|
||||
```js
|
||||
assert.strictEqual(booWho('false'), false);
|
||||
```
|
||||
|
||||
# --seed--
|
||||
|
||||
## --seed-contents--
|
||||
|
||||
```js
|
||||
function booWho(bool) {
|
||||
return bool;
|
||||
}
|
||||
|
||||
booWho(null);
|
||||
```
|
||||
|
||||
# --solutions--
|
||||
|
||||
```js
|
||||
function booWho(bool) {
|
||||
return typeof bool === "boolean";
|
||||
}
|
||||
|
||||
booWho(null);
|
||||
```
|
||||
@@ -0,0 +1,110 @@
|
||||
---
|
||||
id: a9bd25c716030ec90084d8a1
|
||||
title: تقسيم المصفوفة إلي مجموعات
|
||||
challengeType: 1
|
||||
forumTopicId: 16005
|
||||
dashedName: chunky-monkey
|
||||
---
|
||||
|
||||
# --description--
|
||||
|
||||
كتابة وظيفة (function) تقسم القائمة (array) (الحَجَّة الأولى) إلى مجموعات لها طول `size` (الحَجَّة الثانية) وتنشئهما كقائمة (array) ثنائية الأبعاد.
|
||||
|
||||
# --hints--
|
||||
|
||||
`chunkArrayInGroups(["a", "b", "c", "d"], 2)` يجب أن ينتج `[["a", "b"], ["c", "d"]]`.
|
||||
|
||||
```js
|
||||
assert.deepEqual(chunkArrayInGroups(['a', 'b', 'c', 'd'], 2), [
|
||||
['a', 'b'],
|
||||
['c', 'd']
|
||||
]);
|
||||
```
|
||||
|
||||
`chunkArrayInGroups([0, 1, 2, 3, 4, 5], 3)`> يجب أن ينتج `[[0, 1, 2], [3, 4, 5]]`.
|
||||
|
||||
```js
|
||||
assert.deepEqual(chunkArrayInGroups([0, 1, 2, 3, 4, 5], 3), [
|
||||
[0, 1, 2],
|
||||
[3, 4, 5]
|
||||
]);
|
||||
```
|
||||
|
||||
`chunkArrayInGroups([0, 1, 2, 3, 4, 5], 2)` يجب أن ينتج `[[0, 1], [2, 3], [4, 5]]`.
|
||||
|
||||
```js
|
||||
assert.deepEqual(chunkArrayInGroups([0, 1, 2, 3, 4, 5], 2), [
|
||||
[0, 1],
|
||||
[2, 3],
|
||||
[4, 5]
|
||||
]);
|
||||
```
|
||||
|
||||
`chunkArrayInGroups([0, 1, 2, 3, 4, 5], 4)` يجب أن ينتج `[[0, 1, 2, 3], [4, 5]]`.
|
||||
|
||||
```js
|
||||
assert.deepEqual(chunkArrayInGroups([0, 1, 2, 3, 4, 5], 4), [
|
||||
[0, 1, 2, 3],
|
||||
[4, 5]
|
||||
]);
|
||||
```
|
||||
|
||||
`chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6], 3)` يجب أن ينتج `[[0, 1, 2], [3, 4, 5], [6]]`.
|
||||
|
||||
```js
|
||||
assert.deepEqual(chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6], 3), [
|
||||
[0, 1, 2],
|
||||
[3, 4, 5],
|
||||
[6]
|
||||
]);
|
||||
```
|
||||
|
||||
`chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 4)` يجب أن ينتج `[[0, 1, 2, 3], [4, 5, 6, 7], [8]]`.
|
||||
|
||||
```js
|
||||
assert.deepEqual(chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 4), [
|
||||
[0, 1, 2, 3],
|
||||
[4, 5, 6, 7],
|
||||
[8]
|
||||
]);
|
||||
```
|
||||
|
||||
`chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 2)` يجب أن ينتج `[[0, 1], [2, 3], [4, 5], [6, 7], [8]]`.
|
||||
|
||||
```js
|
||||
assert.deepEqual(chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 2), [
|
||||
[0, 1],
|
||||
[2, 3],
|
||||
[4, 5],
|
||||
[6, 7],
|
||||
[8]
|
||||
]);
|
||||
```
|
||||
|
||||
# --seed--
|
||||
|
||||
## --seed-contents--
|
||||
|
||||
```js
|
||||
function chunkArrayInGroups(arr, size) {
|
||||
return arr;
|
||||
}
|
||||
|
||||
chunkArrayInGroups(["a", "b", "c", "d"], 2);
|
||||
```
|
||||
|
||||
# --solutions--
|
||||
|
||||
```js
|
||||
function chunkArrayInGroups(arr, size) {
|
||||
let out = [];
|
||||
|
||||
for (let i = 0; i < arr.length; i += size) {
|
||||
out.push(arr.slice(i, i + size));
|
||||
}
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
chunkArrayInGroups(["a", "b", "c", "d"], 2);
|
||||
```
|
||||
@@ -0,0 +1,113 @@
|
||||
---
|
||||
id: acda2fb1324d9b0fa741e6b5
|
||||
title: تيقن من الأخير
|
||||
challengeType: 1
|
||||
forumTopicId: 16006
|
||||
dashedName: confirm-the-ending
|
||||
---
|
||||
|
||||
# --description--
|
||||
|
||||
تحقق مما إذا كان string (الحَجَّة الأولى، `str`) أخر string المطلوب (الحَجَّة الثانية، `target`).
|
||||
|
||||
*يمكنك* حل هذا التحدي بطريقة `.endsWith()`، التي تم تقديمها في ES2015. لكن لغرض هذا التحدي، نود أن تستخدموا واحدة من طرق subnstrings فى JavaScript بدلاً من ذلك.
|
||||
|
||||
# --hints--
|
||||
|
||||
`confirmEnding("Bastian", "n")` يجب أن ينتج `true`.
|
||||
|
||||
```js
|
||||
assert(confirmEnding('Bastian', 'n') === true);
|
||||
```
|
||||
|
||||
`confirmEnding("Congratulation", "on")` يجب أن ينتج `true`.
|
||||
|
||||
```js
|
||||
assert(confirmEnding('Congratulation', 'on') === true);
|
||||
```
|
||||
|
||||
`confirmEnding("Connor", "n")` يجب أن ينتج `false`.
|
||||
|
||||
```js
|
||||
assert(confirmEnding('Connor', 'n') === false);
|
||||
```
|
||||
|
||||
`confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification")` يجب أن ينتج `false`.
|
||||
|
||||
```js
|
||||
assert(
|
||||
confirmEnding(
|
||||
'Walking on water and developing software from a specification are easy if both are frozen',
|
||||
'specification'
|
||||
) === false
|
||||
);
|
||||
```
|
||||
|
||||
`confirmEnding("He has to give me a new name", "name")` يجب أن ينتج `true`.
|
||||
|
||||
```js
|
||||
assert(confirmEnding('He has to give me a new name', 'name') === true);
|
||||
```
|
||||
|
||||
`confirmEnding("Open sesame", "same")` يجب أن ينتج `true`.
|
||||
|
||||
```js
|
||||
assert(confirmEnding('Open sesame', 'same') === true);
|
||||
```
|
||||
|
||||
`confirmEnding("Open sesame", "sage")` يجب أن ينتج `false`.
|
||||
|
||||
```js
|
||||
assert(confirmEnding('Open sesame', 'sage') === false);
|
||||
```
|
||||
|
||||
`confirmEnding("Open sesame", "game")` يجب أن ينتج `false`.
|
||||
|
||||
```js
|
||||
assert(confirmEnding('Open sesame', 'game') === false);
|
||||
```
|
||||
|
||||
`confirmEnding("If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing", "mountain")` يجب أن ينتج `false`.
|
||||
|
||||
```js
|
||||
assert(
|
||||
confirmEnding(
|
||||
'If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing',
|
||||
'mountain'
|
||||
) === false
|
||||
);
|
||||
```
|
||||
|
||||
`confirmEnding("Abstraction", "action")` يجب أن ينتج `true`.
|
||||
|
||||
```js
|
||||
assert(confirmEnding('Abstraction', 'action') === true);
|
||||
```
|
||||
|
||||
برنامجك يجب ألا يستخدم طريقة مبنية داخلياً (built-in method) باسم `.endsWith()` لحل التحدي.
|
||||
|
||||
```js
|
||||
assert(!/\.endsWith\(.*?\)\s*?;?/.test(code) && !/\['endsWith'\]/.test(code));
|
||||
```
|
||||
|
||||
# --seed--
|
||||
|
||||
## --seed-contents--
|
||||
|
||||
```js
|
||||
function confirmEnding(str, target) {
|
||||
return str;
|
||||
}
|
||||
|
||||
confirmEnding("Bastian", "n");
|
||||
```
|
||||
|
||||
# --solutions--
|
||||
|
||||
```js
|
||||
function confirmEnding(str, target) {
|
||||
return str.substring(str.length - target.length) === target;
|
||||
}
|
||||
|
||||
confirmEnding("Bastian", "n");
|
||||
```
|
||||
@@ -0,0 +1,75 @@
|
||||
---
|
||||
id: 56533eb9ac21ba0edf2244b3
|
||||
title: تحويل الدرجات المئوية (Celsius) إلى فهرنهايت (Fahrenheit)
|
||||
challengeType: 1
|
||||
forumTopicId: 16806
|
||||
dashedName: convert-celsius-to-fahrenheit
|
||||
---
|
||||
|
||||
# --description--
|
||||
|
||||
معادلة تحويل درجة الحرارة من الدرجة المئوية إلى درجة فهرنهايت هي: درجة الحرارة المئوية مضروبة في `9/5`, مضاف إليها `32`.
|
||||
|
||||
لديك المتغير `celsius` ويمثل درجة الحرارة المئوية. استخدم المتغير `fahrenheit` الذي سبق تعريفه وعيّن درجة حرارة فهرنهايت المعادلة لدرجة الحرارة المئوية المعطاة. استخدم المعادلة في السطر الأول، لتحويل درجة الحرارة المئوية إلى فهرنهايت.
|
||||
|
||||
# --hints--
|
||||
|
||||
`convertCtoF(0)` يجب أن ينتج رقماً
|
||||
|
||||
```js
|
||||
assert(typeof convertCtoF(0) === 'number');
|
||||
```
|
||||
|
||||
`convertCtoF(-30)` يجب أن ينتج قيمة `-22`
|
||||
|
||||
```js
|
||||
assert(convertCtoF(-30) === -22);
|
||||
```
|
||||
|
||||
`convertCtoF(-10)` يجب أن ينتج قيمة `14`
|
||||
|
||||
```js
|
||||
assert(convertCtoF(-10) === 14);
|
||||
```
|
||||
|
||||
`convertCtoF(0)` يجب أن ينتج قيمة `32`
|
||||
|
||||
```js
|
||||
assert(convertCtoF(0) === 32);
|
||||
```
|
||||
|
||||
`convertCtoF(20)` يجب أن ينتج قيمة `68`
|
||||
|
||||
```js
|
||||
assert(convertCtoF(20) === 68);
|
||||
```
|
||||
|
||||
`convertCtoF(30)` يجب أن ينتج قيمة `86`
|
||||
|
||||
```js
|
||||
assert(convertCtoF(30) === 86);
|
||||
```
|
||||
|
||||
# --seed--
|
||||
|
||||
## --seed-contents--
|
||||
|
||||
```js
|
||||
function convertCtoF(celsius) {
|
||||
let fahrenheit;
|
||||
return fahrenheit;
|
||||
}
|
||||
|
||||
convertCtoF(30);
|
||||
```
|
||||
|
||||
# --solutions--
|
||||
|
||||
```js
|
||||
function convertCtoF(celsius) {
|
||||
let fahrenheit = celsius * 9/5 + 32;
|
||||
return fahrenheit;
|
||||
}
|
||||
|
||||
convertCtoF(30);
|
||||
```
|
||||
@@ -0,0 +1,73 @@
|
||||
---
|
||||
id: a302f7aae1aa3152a5b413bc
|
||||
title: عامل الضرب للرَّقَم (Factorialize a Number)
|
||||
challengeType: 1
|
||||
forumTopicId: 16013
|
||||
dashedName: factorialize-a-number
|
||||
---
|
||||
|
||||
# --description--
|
||||
|
||||
أرجع عامل الضرب للرقم الصحيح الذي تم تزويدك به.
|
||||
|
||||
إذا كان الرَّقَم الصحيح مُمَثل بحرف `n`، عامل الضرب للرقم هو حاصل ضرب كل الأرقام الموجبة التي هي أصغر أو تساوي الرقم`n`.
|
||||
|
||||
عوامل الضرب غالبا ما يتم تمثيله كالترميز التالي `n!`
|
||||
|
||||
مثال: `5! = 1 * 2 * 3 * 4 * 5 = 120`
|
||||
|
||||
فقط الأرقام التي هي أكبر أو تساوي الصفر سيتم إدخالها في الوظيفة (function).
|
||||
|
||||
# --hints--
|
||||
|
||||
`factorialize(5)` يجب أن ينتج رقماً.
|
||||
|
||||
```js
|
||||
assert(typeof factorialize(5) === 'number');
|
||||
```
|
||||
|
||||
`factorialize(5)` يجب أن ينتج `120`.
|
||||
|
||||
```js
|
||||
assert(factorialize(5) === 120);
|
||||
```
|
||||
|
||||
`factorialize(10)` يجب أن ينتج `3628800`.
|
||||
|
||||
```js
|
||||
assert(factorialize(10) === 3628800);
|
||||
```
|
||||
|
||||
`factorialize(20)` يجب أن ينتج `2432902008176640000`.
|
||||
|
||||
```js
|
||||
assert(factorialize(20) === 2432902008176640000);
|
||||
```
|
||||
|
||||
`factorialize(0)` يجب أن ينتج `1`.
|
||||
|
||||
```js
|
||||
assert(factorialize(0) === 1);
|
||||
```
|
||||
|
||||
# --seed--
|
||||
|
||||
## --seed-contents--
|
||||
|
||||
```js
|
||||
function factorialize(num) {
|
||||
return num;
|
||||
}
|
||||
|
||||
factorialize(5);
|
||||
```
|
||||
|
||||
# --solutions--
|
||||
|
||||
```js
|
||||
function factorialize(num) {
|
||||
return num < 1 ? 1 : num * factorialize(num - 1);
|
||||
}
|
||||
|
||||
factorialize(5);
|
||||
```
|
||||
@@ -0,0 +1,71 @@
|
||||
---
|
||||
id: adf08ec01beb4f99fc7a68f2
|
||||
title: التنقل بين قيم زائفة (Falsy Bouncer)
|
||||
challengeType: 1
|
||||
forumTopicId: 16014
|
||||
dashedName: falsy-bouncer
|
||||
---
|
||||
|
||||
# --description--
|
||||
|
||||
أزل جميع القيم الزائفة falsy من القائمة (array). أنتج قائمة (array) جديدة ولا تغير قيمة القائمة (array) الأصلية.
|
||||
|
||||
القيم الزائفة Falsy في لغة JavaScript هي `false`, `null`, `0`, `""`, `undefined`, و `NaN`.
|
||||
|
||||
تلميح: حاول تحويل كل قيمة إلى Boolean.
|
||||
|
||||
# --hints--
|
||||
|
||||
`bouncer([7, "ate", "", false, 9])` يجب أن ينتج `[7, "ate", 9]`.
|
||||
|
||||
```js
|
||||
assert.deepEqual(bouncer([7, 'ate', '', false, 9]), [7, 'ate', 9]);
|
||||
```
|
||||
|
||||
`bouncer(["a", "b", "c"])` يجب أن تنتج `["a", "b", "c"]`.
|
||||
|
||||
```js
|
||||
assert.deepEqual(bouncer(['a', 'b', 'c']), ['a', 'b', 'c']);
|
||||
```
|
||||
|
||||
`bouncer([false, null, 0, NaN, undefined, ""])`يجب أن تنتج `[]`.
|
||||
|
||||
```js
|
||||
assert.deepEqual(bouncer([false, null, 0, NaN, undefined, '']), []);
|
||||
```
|
||||
|
||||
`bouncer([null, NaN, 1, 2, undefined])` يجب أن تنتج `[1, 2]`.
|
||||
|
||||
```js
|
||||
assert.deepEqual(bouncer([null, NaN, 1, 2, undefined]), [1, 2]);
|
||||
```
|
||||
|
||||
لا يجب عليك تغيير `arr`.
|
||||
|
||||
```js
|
||||
const arr = ['a', false, 0, 'Naomi'];
|
||||
bouncer(arr);
|
||||
assert.deepEqual(arr, ['a', false, 0, 'Naomi'])
|
||||
```
|
||||
|
||||
# --seed--
|
||||
|
||||
## --seed-contents--
|
||||
|
||||
```js
|
||||
function bouncer(arr) {
|
||||
return arr;
|
||||
}
|
||||
|
||||
bouncer([7, "ate", "", false, 9]);
|
||||
```
|
||||
|
||||
# --solutions--
|
||||
|
||||
```js
|
||||
function bouncer(arr) {
|
||||
return arr.filter(e => e);
|
||||
}
|
||||
|
||||
bouncer([7, "ate", "", false, 9]);
|
||||
```
|
||||
@@ -0,0 +1,87 @@
|
||||
---
|
||||
id: a26cbbe9ad8655a977e1ceb5
|
||||
title: جد أطول كلمة في المقطع (String)
|
||||
challengeType: 1
|
||||
forumTopicId: 16015
|
||||
dashedName: find-the-longest-word-in-a-string
|
||||
---
|
||||
|
||||
# --description--
|
||||
|
||||
أرجع طول (length) أطول كلمة في الجملة المزودة.
|
||||
|
||||
يجب أن تكون القيمة التي إرجاعاتها رقما (number).
|
||||
|
||||
# --hints--
|
||||
|
||||
`findLongestWordLength("The quick brown fox jumped over the lazy dog")` يجب أن ينتج رقما.
|
||||
|
||||
```js
|
||||
assert(
|
||||
typeof findLongestWordLength(
|
||||
'The quick brown fox jumped over the lazy dog'
|
||||
) === 'number'
|
||||
);
|
||||
```
|
||||
|
||||
`findLongestWordLength("The quick brown fox jumped over the lazy dog")` يجب أن ينتج `6`.
|
||||
|
||||
```js
|
||||
assert(
|
||||
findLongestWordLength('The quick brown fox jumped over the lazy dog') === 6
|
||||
);
|
||||
```
|
||||
|
||||
`findLongestWordLength("May the force be with you")` يجب أن ينتج `5`.
|
||||
|
||||
```js
|
||||
assert(findLongestWordLength('May the force be with you') === 5);
|
||||
```
|
||||
|
||||
`findLongestWordLength("Google do a barrel roll")` يجب أن ينتج `6`.
|
||||
|
||||
```js
|
||||
assert(findLongestWordLength('Google do a barrel roll') === 6);
|
||||
```
|
||||
|
||||
`findLongestWordLength("What is the average airspeed velocity of an unladen swallow")`يجب أن ينتج `8`.
|
||||
|
||||
```js
|
||||
assert(
|
||||
findLongestWordLength(
|
||||
'What is the average airspeed velocity of an unladen swallow'
|
||||
) === 8
|
||||
);
|
||||
```
|
||||
|
||||
`findLongestWordLength("What if we try a super-long word such as otorhinolaryngology")` يجب أن ينتج `19`.
|
||||
|
||||
```js
|
||||
assert(
|
||||
findLongestWordLength(
|
||||
'What if we try a super-long word such as otorhinolaryngology'
|
||||
) === 19
|
||||
);
|
||||
```
|
||||
|
||||
# --seed--
|
||||
|
||||
## --seed-contents--
|
||||
|
||||
```js
|
||||
function findLongestWordLength(str) {
|
||||
return str.length;
|
||||
}
|
||||
|
||||
findLongestWordLength("The quick brown fox jumped over the lazy dog");
|
||||
```
|
||||
|
||||
# --solutions--
|
||||
|
||||
```js
|
||||
function findLongestWordLength(str) {
|
||||
return str.split(' ').sort((a, b) => b.length - a.length)[0].length;
|
||||
}
|
||||
|
||||
findLongestWordLength("The quick brown fox jumped over the lazy dog");
|
||||
```
|
||||
@@ -0,0 +1,58 @@
|
||||
---
|
||||
id: a6e40f1041b06c996f7b2406
|
||||
title: من يجد شيئا يحتفظ به Finders Keepers
|
||||
challengeType: 1
|
||||
forumTopicId: 16016
|
||||
dashedName: finders-keepers
|
||||
---
|
||||
|
||||
# --description--
|
||||
|
||||
أنشئ وظيفة تبحث في القائمة `arr` وترجع العنصر الأول فيها الذي يجتاز 'اختبار الحقيقة'. وهذا يعني أنه نظراً لعنصر `x`، يتم اجتياز 'اختبار الحقيقة' إذا كان `func(x)` صحيحا `true`. إذا لم ينجح أي عنصر في الاختبار، انتج `undefined`.
|
||||
|
||||
# --hints--
|
||||
|
||||
يجب إن `findElement([1, 3, 5, 8, 9, 10], function(num) { return num % 2 === 0; })` ينتج `8`.
|
||||
|
||||
```js
|
||||
assert.strictEqual(
|
||||
findElement([1, 3, 5, 8, 9, 10], function (num) {
|
||||
return num % 2 === 0;
|
||||
}),
|
||||
8
|
||||
);
|
||||
```
|
||||
|
||||
يجب إن `findElement([1, 3, 5, 9], function(num) { return num % 2 === 0; })` ينتج `undefined`.
|
||||
|
||||
```js
|
||||
assert.strictEqual(
|
||||
findElement([1, 3, 5, 9], function (num) {
|
||||
return num % 2 === 0;
|
||||
}),
|
||||
undefined
|
||||
);
|
||||
```
|
||||
|
||||
# --seed--
|
||||
|
||||
## --seed-contents--
|
||||
|
||||
```js
|
||||
function findElement(arr, func) {
|
||||
let num = 0;
|
||||
return num;
|
||||
}
|
||||
|
||||
findElement([1, 2, 3, 4], num => num % 2 === 0);
|
||||
```
|
||||
|
||||
# --solutions--
|
||||
|
||||
```js
|
||||
function findElement(arr, func) {
|
||||
return arr.filter(func)[0];
|
||||
}
|
||||
|
||||
findElement([1, 2, 3, 4], num => num % 2 === 0);
|
||||
```
|
||||
@@ -0,0 +1,117 @@
|
||||
---
|
||||
id: af2170cad53daa0770fabdea
|
||||
title: التحولات (Mutations)
|
||||
challengeType: 1
|
||||
forumTopicId: 16025
|
||||
dashedName: mutations
|
||||
---
|
||||
|
||||
# --description--
|
||||
|
||||
ققم يإرجاع `true` إذا كانت المقطع النصي (string) في العنصر الأول من القائمة تحتوي على جميع الأحرف من القطع النصي (string) في العنصر الثاني من القائمة.
|
||||
|
||||
على سبيل المثال، `["hello", "Hello"]`, يجب أن ينتج `true` لأن جميع الحروف في المقطع النصي (string) الثانية موجودة في المقطع النصي (string) الأولى، وذلك بتجاهل حالة الحروف سواء كانت كبيرة أو صغيرة.
|
||||
|
||||
الحجج `["hello", "hey"]` يجب أن ينتح `false` لأن المقطع النصي (string) باسم `hello` لا تحتوي على حرف `y`.
|
||||
|
||||
أخراً, يجب إن`["Alien", "line"]` ينتج `true` لان كل الحروف في `line` موجودة في `Alien`.
|
||||
|
||||
# --hints--
|
||||
|
||||
يجب إن `mutation(["hello", "hey"])` ينتج `false`.
|
||||
|
||||
```js
|
||||
assert(mutation(['hello', 'hey']) === false);
|
||||
```
|
||||
|
||||
يجب إن `mutation(["hello", "Hello"])` ينتج `true`.
|
||||
|
||||
```js
|
||||
assert(mutation(['hello', 'Hello']) === true);
|
||||
```
|
||||
|
||||
يجب إن `mutation(["zyxwvutsrqponmlkjihgfedcba", "qrstu"])` ينتج `true`.
|
||||
|
||||
```js
|
||||
assert(mutation(['zyxwvutsrqponmlkjihgfedcba', 'qrstu']) === true);
|
||||
```
|
||||
|
||||
يجب إن `mutation(["Mary", "Army"])` ينتج `true`.
|
||||
|
||||
```js
|
||||
assert(mutation(['Mary', 'Army']) === true);
|
||||
```
|
||||
|
||||
يجب إن `mutation(["Mary", "Aarmy"])` ينتج `true`.
|
||||
|
||||
```js
|
||||
assert(mutation(['Mary', 'Aarmy']) === true);
|
||||
```
|
||||
|
||||
يجب إن `mutation(["Alien", "line"])` ينتج `true`.
|
||||
|
||||
```js
|
||||
assert(mutation(['Alien', 'line']) === true);
|
||||
```
|
||||
|
||||
يجب إن `mutation(["floor", "for"])` ينتج `true`.
|
||||
|
||||
```js
|
||||
assert(mutation(['floor', 'for']) === true);
|
||||
```
|
||||
|
||||
يجب إن `mutation(["hello", "neo"])` ينتج `false`.
|
||||
|
||||
```js
|
||||
assert(mutation(['hello', 'neo']) === false);
|
||||
```
|
||||
|
||||
يجب إن `mutation(["voodoo", "no"])` ينتج `false`.
|
||||
|
||||
```js
|
||||
assert(mutation(['voodoo', 'no']) === false);
|
||||
```
|
||||
|
||||
يجب إن `mutation(["ate", "date"])` ينتج `false`.
|
||||
|
||||
```js
|
||||
assert(mutation(['ate', 'date']) === false);
|
||||
```
|
||||
|
||||
يجب إن `mutation(["Tiger", "Zebra"])` ينتج `false`.
|
||||
|
||||
```js
|
||||
assert(mutation(['Tiger', 'Zebra']) === false);
|
||||
```
|
||||
|
||||
يجب إن `mutation(["Noel", "Ole"])` ينتج `true`.
|
||||
|
||||
```js
|
||||
assert(mutation(['Noel', 'Ole']) === true);
|
||||
```
|
||||
|
||||
# --seed--
|
||||
|
||||
## --seed-contents--
|
||||
|
||||
```js
|
||||
function mutation(arr) {
|
||||
return arr;
|
||||
}
|
||||
|
||||
mutation(["hello", "hey"]);
|
||||
```
|
||||
|
||||
# --solutions--
|
||||
|
||||
```js
|
||||
function mutation(arr) {
|
||||
let hash = Object.create(null);
|
||||
|
||||
arr[0].toLowerCase().split('').forEach(c => hash[c] = true);
|
||||
|
||||
return !arr[1].toLowerCase().split('').filter(c => !hash[c]).length;
|
||||
}
|
||||
|
||||
mutation(["hello", "hey"]);
|
||||
```
|
||||
@@ -0,0 +1,84 @@
|
||||
---
|
||||
id: afcc8d540bea9ea2669306b6
|
||||
title: تكرار مقطع (String) نصي تكرار مقطع (String) نصي
|
||||
challengeType: 1
|
||||
forumTopicId: 16041
|
||||
dashedName: repeat-a-string-repeat-a-string
|
||||
---
|
||||
|
||||
# --description--
|
||||
|
||||
كرر مقطع (String) نصي معين `str` (الحجَّة الأولى) لعدد `num` مرات (الحِجَّة الثانية). انتج مقطع (String) نصي فارغ إذا كان `num` ليس رقماً موجباً. لأغراض هذا التحدي، *لا* تستخدم الوظيفة `.repeat()` المدمجة.
|
||||
|
||||
# --hints--
|
||||
|
||||
`repeatStringNumTimes("*", 3)` يجب أن ينتج المقطع `***`.
|
||||
|
||||
```js
|
||||
assert(repeatStringNumTimes('*', 3) === '***');
|
||||
```
|
||||
|
||||
`repeatStringNumTimes("abc", 3)` يجب أن ينتج المقطع `abcabcabc`.
|
||||
|
||||
```js
|
||||
assert(repeatStringNumTimes('abc', 3) === 'abcabcabc');
|
||||
```
|
||||
|
||||
`repeatStringNumTimes("abc", 4)` يجب أن ينتج المقطع `abcabcabcabc`.
|
||||
|
||||
```js
|
||||
assert(repeatStringNumTimes('abc', 4) === 'abcabcabcabc');
|
||||
```
|
||||
|
||||
`repeatStringNumTimes("abc", 1)` يجب أن ينتج المقطع `abc`.
|
||||
|
||||
```js
|
||||
assert(repeatStringNumTimes('abc', 1) === 'abc');
|
||||
```
|
||||
|
||||
`repeatStringNumTimes("*", 8)` يجب أن ينتج المقطع `********`.
|
||||
|
||||
```js
|
||||
assert(repeatStringNumTimes('*', 8) === '********');
|
||||
```
|
||||
|
||||
`repeatStringNumTimes("abc", -2)` يجب أن ينتج مقطع فارغة (`""`).
|
||||
|
||||
```js
|
||||
assert(repeatStringNumTimes('abc', -2) === '');
|
||||
```
|
||||
|
||||
لا ينبغي استخدام الوظيفة `repeat()` المدمجة.
|
||||
|
||||
```js
|
||||
assert(!/\.repeat/g.test(code));
|
||||
```
|
||||
|
||||
`repeatStringNumTimes("abc", 0)` يجب أن ينتج `""`.
|
||||
|
||||
```js
|
||||
assert(repeatStringNumTimes('abc', 0) === '');
|
||||
```
|
||||
|
||||
# --seed--
|
||||
|
||||
## --seed-contents--
|
||||
|
||||
```js
|
||||
function repeatStringNumTimes(str, num) {
|
||||
return str;
|
||||
}
|
||||
|
||||
repeatStringNumTimes("abc", 3);
|
||||
```
|
||||
|
||||
# --solutions--
|
||||
|
||||
```js
|
||||
function repeatStringNumTimes(str, num) {
|
||||
if (num < 1) return '';
|
||||
return num === 1 ? str : str + repeatStringNumTimes(str, num-1);
|
||||
}
|
||||
|
||||
repeatStringNumTimes("abc", 3);
|
||||
```
|
||||
@@ -0,0 +1,92 @@
|
||||
---
|
||||
id: a789b3483989747d63b0e427
|
||||
title: أنشئ أكبر أعداد في القوائم (Arrays)
|
||||
challengeType: 1
|
||||
forumTopicId: 16042
|
||||
dashedName: return-largest-numbers-in-arrays
|
||||
---
|
||||
|
||||
# --description--
|
||||
|
||||
أنشئ قائمة تتكون من أكبر رَقَم من كل قائمة فرعية. من أجل البساطة، سوف تحتوي القائمة على 4 قوائم فرعية بالضبط.
|
||||
|
||||
تذكر، يمكنك المرور علي قائمة باستخدام for loop البسيطة، والوصول إلى كل عنصر باستخدام اسم القائمة `arr[i]`.
|
||||
|
||||
# --hints--
|
||||
|
||||
`largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]])` يجب أن ينتج القائمة.
|
||||
|
||||
```js
|
||||
assert(
|
||||
largestOfFour([
|
||||
[4, 5, 1, 3],
|
||||
[13, 27, 18, 26],
|
||||
[32, 35, 37, 39],
|
||||
[1000, 1001, 857, 1]
|
||||
]).constructor === Array
|
||||
);
|
||||
```
|
||||
|
||||
`largestOfFour([[13, 27, 18, 26], [4, 5, 1, 3], [32, 35, 37, 39], [1000, 1001, 857, 1]])` يجب أن ينتج `[27, 5, 39, 1001]`.
|
||||
|
||||
```js
|
||||
assert.deepEqual(
|
||||
largestOfFour([
|
||||
[13, 27, 18, 26],
|
||||
[4, 5, 1, 3],
|
||||
[32, 35, 37, 39],
|
||||
[1000, 1001, 857, 1]
|
||||
]),
|
||||
[27, 5, 39, 1001]
|
||||
);
|
||||
```
|
||||
|
||||
`largestOfFour([[4, 9, 1, 3], [13, 35, 18, 26], [32, 35, 97, 39], [1000000, 1001, 857, 1]])` يجب أن ينتج `[9, 35, 97, 1000000]`.
|
||||
|
||||
```js
|
||||
assert.deepEqual(
|
||||
largestOfFour([
|
||||
[4, 9, 1, 3],
|
||||
[13, 35, 18, 26],
|
||||
[32, 35, 97, 39],
|
||||
[1000000, 1001, 857, 1]
|
||||
]),
|
||||
[9, 35, 97, 1000000]
|
||||
);
|
||||
```
|
||||
|
||||
`largestOfFour([[17, 23, 25, 12], [25, 7, 34, 48], [4, -10, 18, 21], [-72, -3, -17, -10]])` يجب أن ينتج `[25, 48, 21, -3]`.
|
||||
|
||||
```js
|
||||
assert.deepEqual(
|
||||
largestOfFour([
|
||||
[17, 23, 25, 12],
|
||||
[25, 7, 34, 48],
|
||||
[4, -10, 18, 21],
|
||||
[-72, -3, -17, -10]
|
||||
]),
|
||||
[25, 48, 21, -3]
|
||||
);
|
||||
```
|
||||
|
||||
# --seed--
|
||||
|
||||
## --seed-contents--
|
||||
|
||||
```js
|
||||
function largestOfFour(arr) {
|
||||
return arr;
|
||||
}
|
||||
|
||||
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
|
||||
```
|
||||
|
||||
# --solutions--
|
||||
|
||||
```js
|
||||
function largestOfFour(arr) {
|
||||
return arr.map(subArr => Math.max.apply(null, subArr));
|
||||
}
|
||||
|
||||
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
|
||||
```
|
||||
@@ -0,0 +1,63 @@
|
||||
---
|
||||
id: a202eed8fc186c8434cb6d61
|
||||
title: قلب المقطع النصي String
|
||||
challengeType: 1
|
||||
forumTopicId: 16043
|
||||
dashedName: reverse-a-string
|
||||
---
|
||||
|
||||
# --description--
|
||||
|
||||
أقلب المقطع النصي المقدم.
|
||||
|
||||
قد تحتاج إلى تحويل المقطع النصي (string) إلى قائمة قبل أن تتمكن من قلبها.
|
||||
|
||||
يجب أن تكون نتيجتك مقطع نصي (string).
|
||||
|
||||
# --hints--
|
||||
|
||||
`reverseString("hello")` يجب أن ينتج مقطع نصي.
|
||||
|
||||
```js
|
||||
assert(typeof reverseString('hello') === 'string');
|
||||
```
|
||||
|
||||
`reverseString("hello")` يجب أن ينتج مقطع `olleh`.
|
||||
|
||||
```js
|
||||
assert(reverseString('hello') === 'olleh');
|
||||
```
|
||||
|
||||
`reverseString("Howdy")` يجب أن ينتج مقطع `ydwoH`.
|
||||
|
||||
```js
|
||||
assert(reverseString('Howdy') === 'ydwoH');
|
||||
```
|
||||
|
||||
`reverseString("Greetings from Earth")` يجب أن ينتج المقطع `htraE morf sgniteerG`.
|
||||
|
||||
```js
|
||||
assert(reverseString('Greetings from Earth') === 'htraE morf sgniteerG');
|
||||
```
|
||||
|
||||
# --seed--
|
||||
|
||||
## --seed-contents--
|
||||
|
||||
```js
|
||||
function reverseString(str) {
|
||||
return str;
|
||||
}
|
||||
|
||||
reverseString("hello");
|
||||
```
|
||||
|
||||
# --solutions--
|
||||
|
||||
```js
|
||||
function reverseString(str) {
|
||||
return str.split('').reverse().join('');
|
||||
}
|
||||
|
||||
reverseString("hello");
|
||||
```
|
||||
@@ -0,0 +1,98 @@
|
||||
---
|
||||
id: 579e2a2c335b9d72dd32e05c
|
||||
title: Slice و Splice
|
||||
challengeType: 1
|
||||
forumTopicId: 301148
|
||||
dashedName: slice-and-splice
|
||||
---
|
||||
|
||||
# --description--
|
||||
|
||||
يتم منحك قائمتين وترتيب (index).
|
||||
|
||||
انسخ كل عنصر من القائمة الأولى إلى القائمة الثانية، بالترتيب.
|
||||
|
||||
ابدأ في إدراج عناصر بالترتيب `n` في القائمة الثانية.
|
||||
|
||||
انتج القائمة الناتجة عن ذلك. وينبغي أن تظل قائمات المدخلات (input arrays) على حالها بعد تشغيل الوظيفة (function).
|
||||
|
||||
# --hints--
|
||||
|
||||
`frankenSplice([1, 2, 3], [4, 5], 1)` يجب أن ينتج `[4, 1, 2, 3, 5]`.
|
||||
|
||||
```js
|
||||
assert.deepEqual(frankenSplice([1, 2, 3], [4, 5], 1), [4, 1, 2, 3, 5]);
|
||||
```
|
||||
|
||||
`frankenSplice([1, 2], ["a", "b"], 1)` يجب أن ينتج `["a", 1, 2, "b"]`.
|
||||
|
||||
```js
|
||||
assert.deepEqual(frankenSplice(testArr1, testArr2, 1), ['a', 1, 2, 'b']);
|
||||
```
|
||||
|
||||
`frankenSplice(["claw", "tentacle"], ["head", "shoulders", "knees", "toes"], 2)` يجب أن ينتج `["head", "shoulders", "claw", "tentacle", "knees", "toes"]`.
|
||||
|
||||
```js
|
||||
assert.deepEqual(
|
||||
frankenSplice(
|
||||
['claw', 'tentacle'],
|
||||
['head', 'shoulders', 'knees', 'toes'],
|
||||
2
|
||||
),
|
||||
['head', 'shoulders', 'claw', 'tentacle', 'knees', 'toes']
|
||||
);
|
||||
```
|
||||
|
||||
يجب إضافة جميع العناصر من القائمة الأولى إلى القائمة الثانية بالترتيب الأصلي. `frankenSplice([1, 2, 3, 4], [], 0)` يجب أن ينتج `[1, 2, 3, 4]`.
|
||||
|
||||
```js
|
||||
assert.deepEqual(frankenSplice([1, 2, 3, 4], [], 0), [1, 2, 3, 4]);
|
||||
```
|
||||
|
||||
وينبغي أن تظل القائمة الأولى على حالها بعد تشغيل الوظيفة.
|
||||
|
||||
```js
|
||||
frankenSplice(testArr1, testArr2, 1);
|
||||
assert.deepEqual(testArr1, [1, 2]);
|
||||
```
|
||||
|
||||
وينبغي أن تظل القائمة الثانية على حالها بعد تشغيل الوظيفة.
|
||||
|
||||
```js
|
||||
frankenSplice(testArr1, testArr2, 1);
|
||||
assert.deepEqual(testArr2, ['a', 'b']);
|
||||
```
|
||||
|
||||
# --seed--
|
||||
|
||||
## --after-user-code--
|
||||
|
||||
```js
|
||||
let testArr1 = [1, 2];
|
||||
let testArr2 = ["a", "b"];
|
||||
```
|
||||
|
||||
## --seed-contents--
|
||||
|
||||
```js
|
||||
function frankenSplice(arr1, arr2, n) {
|
||||
return arr2;
|
||||
}
|
||||
|
||||
frankenSplice([1, 2, 3], [4, 5, 6], 1);
|
||||
```
|
||||
|
||||
# --solutions--
|
||||
|
||||
```js
|
||||
function frankenSplice(arr1, arr2, n) {
|
||||
// It's alive. It's alive!
|
||||
let result = arr2.slice();
|
||||
for (let i = 0; i < arr1.length; i++) {
|
||||
result.splice(n+i, 0, arr1[i]);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
frankenSplice([1, 2, 3], [4, 5], 1);
|
||||
```
|
||||
@@ -0,0 +1,64 @@
|
||||
---
|
||||
id: ab6137d4e35944e21037b769
|
||||
title: تكبير الحرف الأول لكل كلمة في الجملة
|
||||
challengeType: 1
|
||||
forumTopicId: 16088
|
||||
dashedName: title-case-a-sentence
|
||||
---
|
||||
|
||||
# --description--
|
||||
|
||||
أنشئ مقطع (string) مقدم مع تكبير الحرف الأول (capitalize) من كل كلمة في الجملة. تحقق أن بقية حروف الكلمة في حالة عادية (lower case).
|
||||
|
||||
لأغراض هذا التمرين، يجب عليك أيضًا تكبير حروف كلمات التوصيل مثل `the` و `of`.
|
||||
|
||||
# --hints--
|
||||
|
||||
`titleCase("I'm a little tea pot")` يجب أن ينشئ مقطع نصية.
|
||||
|
||||
```js
|
||||
assert(typeof titleCase("I'm a little tea pot") === 'string');
|
||||
```
|
||||
|
||||
`titleCase("I'm a little tea pot")` يجب أن ينتج المقطع `I'm A Little Tea Pot`.
|
||||
|
||||
```js
|
||||
assert(titleCase("I'm a little tea pot") === "I'm A Little Tea Pot");
|
||||
```
|
||||
|
||||
`titleCase("sHoRt AnD sToUt")` يجب أن ينشئ المقطع `Short And Stout`.
|
||||
|
||||
```js
|
||||
assert(titleCase('sHoRt AnD sToUt') === 'Short And Stout');
|
||||
```
|
||||
|
||||
`titleCase("HERE IS MY HANDLE HERE IS MY SPOUT")` يجب أن ينشئ المقطع `Here Is My Handle Here Is My Spout`.
|
||||
|
||||
```js
|
||||
assert(
|
||||
titleCase('HERE IS MY HANDLE HERE IS MY SPOUT') ===
|
||||
'Here Is My Handle Here Is My Spout'
|
||||
);
|
||||
```
|
||||
|
||||
# --seed--
|
||||
|
||||
## --seed-contents--
|
||||
|
||||
```js
|
||||
function titleCase(str) {
|
||||
return str;
|
||||
}
|
||||
|
||||
titleCase("I'm a little tea pot");
|
||||
```
|
||||
|
||||
# --solutions--
|
||||
|
||||
```js
|
||||
function titleCase(str) {
|
||||
return str.split(' ').map(word => word.charAt(0).toUpperCase() + word.substring(1).toLowerCase()).join(' ');
|
||||
}
|
||||
|
||||
titleCase("I'm a little tea pot");
|
||||
```
|
||||
@@ -0,0 +1,91 @@
|
||||
---
|
||||
id: ac6993d51946422351508a41
|
||||
title: اقتطاع (Truncate) القطع (String) النصي
|
||||
challengeType: 1
|
||||
forumTopicId: 16089
|
||||
dashedName: truncate-a-string
|
||||
---
|
||||
|
||||
# --description--
|
||||
|
||||
اقتطع المقطع النصي (الحَجَّة الأولى) إذا كانت أطول من الحد الأقصى المحدد لطول المقطع النصي (الحَجَّة الثانية). أنشئ المقطع النصي المتقطع حيث ينتهي بـ `...` ثلاث نُقَط.
|
||||
|
||||
# --hints--
|
||||
|
||||
`truncateString("A-tisket a-tasket A green and yellow basket", 8)` يجب أن يُنشئ المقطع النصي `A-tisket...`.
|
||||
|
||||
```js
|
||||
assert(
|
||||
truncateString('A-tisket a-tasket A green and yellow basket', 8) ===
|
||||
'A-tisket...'
|
||||
);
|
||||
```
|
||||
|
||||
`truncateString("Peter Piper picked a peck of pickled peppers", 11)` يجب أن يُنشئ المقطع `Peter Piper...`.
|
||||
|
||||
```js
|
||||
assert(
|
||||
truncateString('Peter Piper picked a peck of pickled peppers', 11) ===
|
||||
'Peter Piper...'
|
||||
);
|
||||
```
|
||||
|
||||
`truncateString("A-tisket a-tasket A green and yellow basket", "A-tisket a-tasket A green and yellow basket".length)` يجب أن ينشئ المقطع `A-tisket a-tasket A green and yellow basket`.
|
||||
|
||||
```js
|
||||
assert(
|
||||
truncateString(
|
||||
'A-tisket a-tasket A green and yellow basket',
|
||||
'A-tisket a-tasket A green and yellow basket'.length
|
||||
) === 'A-tisket a-tasket A green and yellow basket'
|
||||
);
|
||||
```
|
||||
|
||||
`truncateString("A-tisket a-tasket A green and yellow basket", "A-tisket a-tasket A green and yellow basket".length + 2)` يجب أن يرجع المقطع `A-tisket a-tasket A green and yellow basket`.
|
||||
|
||||
```js
|
||||
assert(
|
||||
truncateString(
|
||||
'A-tisket a-tasket A green and yellow basket',
|
||||
'A-tisket a-tasket A green and yellow basket'.length + 2
|
||||
) === 'A-tisket a-tasket A green and yellow basket'
|
||||
);
|
||||
```
|
||||
|
||||
`truncateString("A-", 1)` يجب أن ينشئ المقطع `A...`.
|
||||
|
||||
```js
|
||||
assert(truncateString('A-', 1) === 'A...');
|
||||
```
|
||||
|
||||
`truncateString("Absolutely Longer", 2)` يجب أن ينشئ المقطع `Ab...`.
|
||||
|
||||
```js
|
||||
assert(truncateString('Absolutely Longer', 2) === 'Ab...');
|
||||
```
|
||||
|
||||
# --seed--
|
||||
|
||||
## --seed-contents--
|
||||
|
||||
```js
|
||||
function truncateString(str, num) {
|
||||
return str;
|
||||
}
|
||||
|
||||
truncateString("A-tisket a-tasket A green and yellow basket", 8);
|
||||
```
|
||||
|
||||
# --solutions--
|
||||
|
||||
```js
|
||||
function truncateString(str, num) {
|
||||
if (num >= str.length) {
|
||||
return str;
|
||||
}
|
||||
|
||||
return str.slice(0, num) + '...';
|
||||
}
|
||||
|
||||
truncateString("A-tisket a-tasket A green and yellow basket", 8);
|
||||
```
|
||||
@@ -0,0 +1,143 @@
|
||||
---
|
||||
id: a24c1a4622e3c05097f71d67
|
||||
title: أين انتمي
|
||||
challengeType: 1
|
||||
forumTopicId: 16094
|
||||
dashedName: where-do-i-belong
|
||||
---
|
||||
|
||||
# --description--
|
||||
|
||||
انتج أدنى الترتيب حيث إدراج قيمته (الحَجَّة الثانية) في القائمة (الحَجَّة الأولى) بمجرد ترتيبها. القيمة المنتجة يجب أن تكون رقما.
|
||||
|
||||
على سبيل المثال، `getIndexToIns([1,2,3,4], 1.5)` يجب أن ينتج `1` لأنه أكبر من `1` (الترتيب 0)، ولكن أقل من `2` (الترتيب 1).
|
||||
|
||||
كذلك، `getIndexToIns([20,3,5], 19)` يجب أن ينتج `2` لأنه بمجرد ترتيب القائمة سوف تبدو مثل `[3,5,20]`, و `19` هي أقل من `20` (الترتيب 2) وأكثر من `5` (الترتيب 1).
|
||||
|
||||
# --hints--
|
||||
|
||||
`getIndexToIns([10, 20, 30, 40, 50], 35)` يجب أن ينتج `3`.
|
||||
|
||||
```js
|
||||
assert(getIndexToIns([10, 20, 30, 40, 50], 35) === 3);
|
||||
```
|
||||
|
||||
`getIndexToIns([10, 20, 30, 40, 50], 35)` يجب أن ينتج رَقَم.
|
||||
|
||||
```js
|
||||
assert(typeof getIndexToIns([10, 20, 30, 40, 50], 35) === 'number');
|
||||
```
|
||||
|
||||
`getIndexToIns([10, 20, 30, 40, 50], 30)` يجب ينتج `2`.
|
||||
|
||||
```js
|
||||
assert(getIndexToIns([10, 20, 30, 40, 50], 30) === 2);
|
||||
```
|
||||
|
||||
`getIndexToIns([10, 20, 30, 40, 50], 30)` يجب أن ينتج رَقَم.
|
||||
|
||||
```js
|
||||
assert(typeof getIndexToIns([10, 20, 30, 40, 50], 30) === 'number');
|
||||
```
|
||||
|
||||
`getIndexToIns([40, 60], 50)` يجب أن ينتج `1`.
|
||||
|
||||
```js
|
||||
assert(getIndexToIns([40, 60], 50) === 1);
|
||||
```
|
||||
|
||||
`getIndexToIns([40, 60], 50)` يجب أن ينتج رَقَم.
|
||||
|
||||
```js
|
||||
assert(typeof getIndexToIns([40, 60], 50) === 'number');
|
||||
```
|
||||
|
||||
`getIndexToIns([3, 10, 5], 3)` يجب أن ينتج `0`.
|
||||
|
||||
```js
|
||||
assert(getIndexToIns([3, 10, 5], 3) === 0);
|
||||
```
|
||||
|
||||
`getIndexToIns([3, 10, 5], 3)` يجب أن ينتج رَقَم.
|
||||
|
||||
```js
|
||||
assert(typeof getIndexToIns([3, 10, 5], 3) === 'number');
|
||||
```
|
||||
|
||||
`getIndexToIns([5, 3, 20, 3], 5)` يجب أن ينتج `2`.
|
||||
|
||||
```js
|
||||
assert(getIndexToIns([5, 3, 20, 3], 5) === 2);
|
||||
```
|
||||
|
||||
`getIndexToIns([5, 3, 20, 3], 5)` يجب أن ينتج رَقَم.
|
||||
|
||||
```js
|
||||
assert(typeof getIndexToIns([5, 3, 20, 3], 5) === 'number');
|
||||
```
|
||||
|
||||
`getIndexToIns([2, 20, 10], 19)` يجب أن ينتج `2`.
|
||||
|
||||
```js
|
||||
assert(getIndexToIns([2, 20, 10], 19) === 2);
|
||||
```
|
||||
|
||||
`getIndexToIns([2, 20, 10], 19)` يجب أن ينتج رَقَم.
|
||||
|
||||
```js
|
||||
assert(typeof getIndexToIns([2, 20, 10], 19) === 'number');
|
||||
```
|
||||
|
||||
`getIndexToIns([2, 5, 10], 15)` يجب أن ينتج `3`.
|
||||
|
||||
```js
|
||||
assert(getIndexToIns([2, 5, 10], 15) === 3);
|
||||
```
|
||||
|
||||
`getIndexToIns([2, 5, 10], 15)` يجب أن ينتج رَقَم.
|
||||
|
||||
```js
|
||||
assert(typeof getIndexToIns([2, 5, 10], 15) === 'number');
|
||||
```
|
||||
|
||||
`getIndexToIns([], 1)` يجب أن ينتج `0`.
|
||||
|
||||
```js
|
||||
assert(getIndexToIns([], 1) === 0);
|
||||
```
|
||||
|
||||
`getIndexToIns([], 1)` يجب أن ينتج رَقَم.
|
||||
|
||||
```js
|
||||
assert(typeof getIndexToIns([], 1) === 'number');
|
||||
```
|
||||
|
||||
# --seed--
|
||||
|
||||
## --seed-contents--
|
||||
|
||||
```js
|
||||
function getIndexToIns(arr, num) {
|
||||
return num;
|
||||
}
|
||||
|
||||
getIndexToIns([40, 60], 50);
|
||||
```
|
||||
|
||||
# --solutions--
|
||||
|
||||
```js
|
||||
function getIndexToIns(arr, num) {
|
||||
arr = arr.sort((a, b) => a - b);
|
||||
|
||||
for (let i = 0; i < arr.length; i++) {
|
||||
if (arr[i] >= num) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return arr.length;
|
||||
}
|
||||
|
||||
getIndexToIns([40, 60], 50);
|
||||
```
|
||||
Reference in New Issue
Block a user