12 KiB
title | localeTitle |
---|---|
Pig Latin | Pig Latin |
Не забудьте использовать Read-Search-Ask
если вы застряли. Попробуйте подключить программу и напишите свой собственный код
Проблема Объяснение:
Вам нужно создать программу, которая будет транслироваться с английского на Pig Latin. Pig Latin берет первый согласный (или согласный кластер) английского слова, переводит его в конец слова и суффиксы «ay». Если слово начинается с гласного, вы просто добавляете «путь» до конца. Это может быть не очевидно, но вам нужно удалить все согласные до первой гласной, если слово не начинается с гласного.
Связанные ссылки
Подсказка: 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");
Код Объяснение:
- Сделайте пустую строку, чтобы удерживать латинское слово Pig.
- Назначьте соответствующее регулярное выражение переменной.
- Если первый символ является гласным, просто добавьте путь к концу строки и верните его.
- Если первый символ не является гласным:
- Найдите количество согласных перед первым гласным с помощью
indexOf()
,match()
и регулярного выражения. - Запустите Pig Latin string с первой гласной до конца.
- Добавьте буквы перед первым гласным до конца строки.
substr()
для обработки строк.- Добавьте ay в конец строки и верните ее.
- Найдите количество согласных перед первым гласным с помощью
Связанные ссылки
- Ресурсы JS Regex
- 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()
вызывает себя на следующих символах, пока не найдет первый гласный. - Он вернет индекс того, что он считает последним согласным, т. Е. Шмидсвилл будет 3.
- Затем буквы до этого индекса будут удалены из строки и сцепляются либо тот же куском удаляемой строки или ш соответственно, а затем Ау независимо.
Связанные ссылки
Расширенное решение для кода:
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
ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:
- НЕ добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это похоже, но лучше , попробуйте объединить (или заменить) существующее подобное решение.
- Добавьте объяснение своего решения.
- Классифицируйте решение в одной из следующих категорий - Basic , Intermediate и Advanced .
- Пожалуйста, добавьте свое имя пользователя, только если вы добавили соответствующее основное содержимое . ( НЕ удаляйте существующие имена пользователей )
Видеть
Wiki Challenge Solution Template
дляWiki Challenge Solution Template
для справки.