11 KiB
title, localeTitle
title | localeTitle |
---|---|
Pig Latin | خنزير اللاتينية |
تذكر استخدام
Read-Search-Ask
إذا واجهتك مشكلة. حاول إقران البرنامج واكتب الكود الخاص بك
شرح المشكلة:
تحتاج إلى إنشاء برنامج من الإنجليزية إلى الخنزير اللاتينية. خنزير لاتيني يأخذ أول ساكن ساكن (أو ساكن الكتلة) لكلمة إنجليزية ، ينقلها إلى نهاية الكلمة ويضيف لاحقاً "أي". إذا كانت الكلمة تبدأ بحرف متحرك ، فما عليك سوى إضافة "way" إلى النهاية. قد لا يكون الأمر واضحًا ، لكنك بحاجة إلى إزالة جميع الحروف الساكنة حتى حرف العلة الأول في حالة عدم بدء الكلمة بحرف متحرك.
روابط ذات صلة
تلميح: 1
ربما تريد استخدام التعبيرات العادية. هذا سيسمح لك بتحويل الكلمات بسهولة.
حاول أن تحل المشكلة الآن
تلميح: 2
إذا كان الحرف الأول حرفًا متحركًا ، فخذ الكلمة بأكملها وأضف "طريقًا" في النهاية. خلاف ذلك يأتي الجزء صعب ، واتخاذ ساكن (ق) قبل حرف العلة الأول وتحريكه إلى النهاية وإضافة "ay". قد يكون هذا أمرًا مربكًا ، ولكنه ليس مجرد الحرف الساكن الأول ، بل كلهم قبل الحرف الأول.
حاول أن تحل المشكلة الآن
تلميح: 3
سوف تحتاج إلى استخدام كل ما تعرفه عن التلاعب بالسلسلة للحصول على الجزء الأخير بشكل صحيح. ومع ذلك ، يمكن القيام به مع substr
وحده.
حاول أن تحل المشكلة الآن
تنبيه المفسد!
الحل في المستقبل!
الحل الأساسي للكود:
`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"); `
شرح الشفرة:
- جعل سلسلة فارغة لعقد كلمة الخنزير اللاتينية.
- قم بتعيين التعبير العادي المناسب للمتغير.
- إذا كان الحرف الأول حرفًا متحركًا ، فما عليك سوى إضافة طريقة إلى نهاية السلسلة وإعادتها.
- إذا لم يكن الحرف الأول حرفًا متحركًا:
- العثور على عدد من الحروف الساكنة قبل الحرف الأول مع مساعدة من
indexOf()
،match()
و regex. - بدء سلسلة خنزير اللاتينية مع أول حرف علة حتى النهاية.
- أضف الحروف قبل حرف العلة الأول لنهاية السلسلة.
substr()
يستخدم للتلاعب بالسلسلة هنا.- أضف ay إلى نهاية السلسلة وأعدها.
- العثور على عدد من الحروف الساكنة قبل الحرف الأول مع مساعدة من
روابط ذات صلة
- شبيبة ريجكس الموارد
- JS String Prototype IndexOf
- JS String Prototype Substr
حل الشفرة المتوسطة:
`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"); `
شرح الشفرة:
- هذا هو نهج تفسيري وكذلك تعاودي لهذه المشكلة.
check()
هي وظيفة تقوم بفحص الحرف الأول من السلسلة ليكون في صفيف حروف العلة ،['a','i','u','e','o']
.- في حالة الحروف الساكنة ، فإن
check()
يستدعي نفسه على الحروف التالية حتى يعثر على الحرف الأول. - سيعود المؤشر إلى أي شيء يجد أنه آخر حرف مبدئي ، أي أن Schmidtsville سيكون 3.
- بعد ذلك ، يتم رفع الحروف إلى أن تتم إزالة هذا الفهرس من السلسلة وتتصل مع نفس الجزء من السلسلة التي تمت إزالتها أو w وفقا لذلك ، ثم ay ay بغض النظر.
روابط ذات صلة
الحل المتقدم للكود:
`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"); `
شرح الشفرة:
- يتم استخدام
isConsonant()
للتحقق ما إذا كان الحرف حرف ساكن. - إذا كان الحرف الأول حرفًا متحركًا ، فأضف طريقًا إلى نهاية السلسلة وأعده.
- إذا لم يكن الحرف الأول حرفًا متحركًا:
- تقسيم السلسلة إلى صفيف باستخدام
split()
. - دفع جميع الحروف الساكنة إلى نهاية مجموعة مع مساعدة من
shift()
push()
. - تحويل مجموعة إلى سلسلة باستخدام
join()
وإضافة ay إلى نهاية السلسلة. أعده.
- تقسيم السلسلة إلى صفيف باستخدام
روابط ذات صلة
ائتمانات:
إذا وجدت هذه الصفحة مفيدة ، يمكنك أن تقول شكرا للمساهمين من خلال نسخ ولصق السطر التالي في الدردشة الرئيسية:
Thanks @Rafase282 @sabahang @aganita @Hallaathrad for your help with Algorithm: Pig Latin
ملاحظات للمساهمات:
لا تقم بإضافة حلول مشابهة لأي حلول موجودة. إذا كنت تعتقد أنها مشابهة ولكن أفضل ، فحاول دمج (أو استبدال) الحل المشابه الموجود.
- أضف شرحًا لحلك.
- تصنيف الحل في واحدة من الفئات التالية - الأساسي والمتوسط والمتقدم .
- الرجاء إضافة اسم المستخدم الخاص بك فقط إذا قمت بإضافة أي محتويات رئيسية ذات صلة . (
لا تزيل أي أسماء مستخدمين حالية )
نرى
![]()
Wiki Challenge Solution Template
كمرجع.