Files

182 lines
11 KiB
Markdown
Raw Normal View History

---
title: Pig Latin
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 ":العلم متقلب:") شرح المشكلة:
تحتاج إلى إنشاء برنامج من الإنجليزية إلى الخنزير اللاتينية. خنزير لاتيني يأخذ أول ساكن ساكن (أو ساكن الكتلة) لكلمة إنجليزية ، ينقلها إلى نهاية الكلمة ويضيف لاحقاً "أي". إذا كانت الكلمة تبدأ بحرف متحرك ، فما عليك سوى إضافة "way" إلى النهاية. قد لا يكون الأمر واضحًا ، لكنك بحاجة إلى إزالة جميع الحروف الساكنة حتى حرف العلة الأول في حالة عدم بدء الكلمة بحرف متحرك.
#### روابط ذات صلة
* [خنزير اللاتينية](http://en.wikipedia.org/wiki/Pig_Latin)
* [JS String Prototype Match](http://forum.freecodecamp.com/t/javascript-string-prototype-match/15941)
## ![: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
إذا كان الحرف الأول حرفًا متحركًا ، فخذ الكلمة بأكملها وأضف "طريقًا" في النهاية. خلاف ذلك يأتي الجزء صعب ، واتخاذ ساكن (ق) قبل حرف العلة الأول وتحريكه إلى النهاية وإضافة "ay". قد يكون هذا أمرًا مربكًا ، ولكنه ليس مجرد الحرف الساكن الأول ، بل كلهم ​​قبل الحرف الأول.
> اول أن تحل المشكلة الآن_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": speech_balloon:") تلميح: 3
سوف تحتاج إلى استخدام كل ما تعرفه عن التلاعب بالسلسلة للحصول على الجزء الأخير بشكل صحيح. ومع ذلك ، يمكن القيام به مع `substr` وحده.
> اول أن تحل المشكلة الآن_
## تنبيه المفسد!
![علامة تحذير](//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 translatePigLatin(str) {
// Create variables to be used
var pigLatin = '';
var regex = /[aeiou]/gi;
// Check if the first character is a vowel
if (str[0].match(regex)) {
pigLatin = str + 'way';
} else if(str.match(regex) === null) {
// Check if the string contains only consonants
pigLatin = str + 'ay';
} else {
// Find how many consonants before the first vowel.
var vowelIndice = str.indexOf(str.match(regex)[0]);
// Take the string from the first vowel to the last char
// then add the consonants that were previously omitted and add the ending.
pigLatin = str.substr(vowelIndice) + str.substr(0, vowelIndice) + 'ay';
}
return pigLatin;
}
// test here
translatePigLatin("consonant");
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLmt/0)
### شرح الشفرة:
* جعل سلسلة فارغة لعقد كلمة الخنزير اللاتينية.
* قم بتعيين التعبير العادي المناسب للمتغير.
* إذا كان الحرف الأول حرفًا متحركًا ، فما عليك سوى إضافة **طريقة** إلى نهاية السلسلة وإعادتها.
* إذا لم يكن الحرف الأول حرفًا متحركًا:
* العثور على عدد من الحروف الساكنة قبل الحرف الأول مع مساعدة من `indexOf()` ، `match()` و regex.
* بدء سلسلة خنزير اللاتينية مع أول حرف علة حتى النهاية.
* أضف الحروف قبل حرف العلة الأول لنهاية السلسلة.
* `substr()` يستخدم للتلاعب بالسلسلة هنا.
* أضف **ay** إلى نهاية السلسلة وأعدها.
#### روابط ذات صلة
* شبيبة ريجكس الموارد
* [JS String Prototype IndexOf](http://forum.freecodecamp.com/t/javascript-string-prototype-indexof/15936)
* [JS String Prototype Substr](http://forum.freecodecamp.com/t/javascript-string-prototype-substr/15945)
## ![:sunflower:](https://forum.freecodecamp.com/images/emoji/emoji_one/sunflower.png?v=3 ":دوار الشمس:") حل الشفرة المتوسطة:
`function translatePigLatin(str) {
function check(obj) {
return ['a','i','u','e','o'].indexOf(str.charAt(obj)) == -1 ? check(obj + 1) : obj;
}
return str.substr(check(0)).concat((check(0) === 0 ? 'w' : str.substr(0, check(0))) + 'ay');
}
// test here
translatePigLatin("consonant");
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLmw/0)
### شرح الشفرة:
* هذا هو نهج تفسيري وكذلك تعاودي لهذه المشكلة.
* `check()` هي وظيفة تقوم بفحص الحرف الأول من السلسلة ليكون في صفيف حروف العلة ، `['a','i','u','e','o']` .
* في حالة الحروف الساكنة ، فإن `check()` يستدعي نفسه على الحروف التالية حتى يعثر على الحرف الأول.
* سيعود المؤشر إلى أي شيء يجد أنه آخر حرف مبدئي ، أي أن Schmidtsville سيكون 3.
* بعد ذلك ، يتم رفع الحروف إلى أن تتم إزالة هذا الفهرس من السلسلة وتتصل مع نفس الجزء من السلسلة التي تمت إزالتها أو **w** وفقا لذلك ، ثم **ay ay** بغض النظر.
#### روابط ذات صلة
* [JS String Prototype CharAt](http://forum.freecodecamp.com/t/javascript-string-prototype-charat/15932)
* [JS String Prototype Concat](http://forum.freecodecamp.com/t/javascript-string-prototype-concat/15935)
## ![:rotating_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/rotating_light.png?v=3 ": rotating_light:") الحل المتقدم للكود:
`function translatePigLatin(str) {
var strArr = [];
var tmpChar;
// check if the char is consonant using RegEx
function isConsonant(char) {
return !/[aeiou]/.test(char);
}
// return initial str + "way" if it starts with vowel
// if not - convert str to array
if (!isConsonant(str.charAt(0)))
return str + "way";
else
strArr = str.split("");
// push all consonats to the end of the array
while (isConsonant(strArr[0])) {
tmpChar = strArr.shift();
strArr.push(tmpChar);
}
// convert array to string and concatenate "ay" at the end
return strArr.join("")+"ay";
}
// test here
translatePigLatin("consonant");
`
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":صاروخ:") [تشغيل الكود](https://repl.it/CLmv/0)
### شرح الشفرة:
* يتم استخدام `isConsonant()` للتحقق ما إذا كان الحرف حرف ساكن.
* إذا كان الحرف الأول حرفًا متحركًا ، فأضف **طريقًا** إلى نهاية السلسلة وأعده.
* إذا لم يكن الحرف الأول حرفًا متحركًا:
* تقسيم السلسلة إلى صفيف باستخدام `split()` .
* دفع جميع الحروف الساكنة إلى نهاية مجموعة مع مساعدة من `shift()` `push()` .
* تحويل مجموعة إلى سلسلة باستخدام `join()` وإضافة **ay** إلى نهاية السلسلة. أعده.
#### روابط ذات صلة
* [JS String Prototype Split](http://forum.freecodecamp.com/t/javascript-string-prototype-split/15944)
* [JS Array Prototype Shift](http://forum.freecodecamp.com/t/javascript-array-prototype-shift/14301)
* [JS Array Prototype Push](http://forum.freecodecamp.com/t/javascript-array-prototype-push/14298)
* [شبيبة صفيف النموذج](http://forum.freecodecamp.com/t/javascript-array-prototype-join/14292)
### ![:trophy:](https://forum.freecodecamp.com/images/emoji/emoji_one/trophy.png?v=3 ":غنيمة:") ائتمانات:
إذا وجدت هذه الصفحة مفيدة ، يمكنك أن تقول شكرا للمساهمين من خلال نسخ ولصق السطر التالي في الدردشة الرئيسية:
**`Thanks @Rafase282 @sabahang @aganita @Hallaathrad for your help with Algorithm: Pig Latin`**
## ![: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) كمرجع.