freeCodeCamp/guide/russian/certifications/javascript-algorithms-and-d.../intermediate-algorithm-scri.../pig-latin/index.md

12 KiB
Raw Blame History

title localeTitle
Pig Latin Pig Latin

:triangular_flag_on_post: Не забудьте использовать Read-Search-Ask если вы застряли. Попробуйте подключить программу :busts_in_silhouette: и напишите свой собственный код :pencil:

:checkered_flag: Проблема Объяснение:

Вам нужно создать программу, которая будет транслироваться с английского на Pig Latin. Pig Latin берет первый согласный (или согласный кластер) английского слова, переводит его в конец слова и суффиксы «ay». Если слово начинается с гласного, вы просто добавляете «путь» до конца. Это может быть не очевидно, но вам нужно удалить все согласные до первой гласной, если слово не начинается с гласного.

Связанные ссылки

:speech_balloon: Подсказка: 1

Возможно, вы захотите использовать регулярные выражения. Это позволит легко конвертировать слова.

попытаться решить проблему сейчас

:speech_balloon: Подсказка: 2

Если первый символ является гласным, тогда возьмите это слово и добавьте «путь» в конец. В противном случае приходит сложная часть, возьмите согласный (и) перед первой гласной и переместите ее до конца и добавьте «ay». Это может сбивать с толку, но это не только первый согласный, но все они до первого гласного.

попытаться решить проблему сейчас

:speech_balloon: Подсказка: 3

Вам нужно будет использовать все, что вы знаете о строковых манипуляциях, чтобы получить последнюю часть. Однако это можно сделать только с помощью substr .

попытаться решить проблему сейчас

Осторожно, спойлеры!

предупреждающий знак

Решение впереди!

:beginner: Решение базового кода:

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: Код запуска

Код Объяснение:

  • Сделайте пустую строку, чтобы удерживать латинское слово Pig.
  • Назначьте соответствующее регулярное выражение переменной.
  • Если первый символ является гласным, просто добавьте путь к концу строки и верните его.
  • Если первый символ не является гласным:
    • Найдите количество согласных перед первым гласным с помощью indexOf() , match() и регулярного выражения.
    • Запустите Pig Latin string с первой гласной до конца.
    • Добавьте буквы перед первым гласным до конца строки.
    • substr() для обработки строк.
    • Добавьте ay в конец строки и верните ее.

Связанные ссылки

:sunflower: Решение промежуточного кода:

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: Код запуска

Код Объяснение:

  • Это декларативный, а также рекурсивный подход к этой проблеме.
  • check() - это функция, которая проверяет, чтобы первая буква строки находилась в массиве гласных, ['a','i','u','e','o'] .
  • В случае согласных, check() вызывает себя на следующих символах, пока не найдет первый гласный.
  • Он вернет индекс того, что он считает последним согласным, т. Е. Шмидсвилл будет 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: Код запуска

Код Объяснение:

  • isConsonant() используется, чтобы проверить, является ли символ согласным.
  • Если первый символ является гласным, добавьте путь к концу строки и верните его.
  • Если первый символ не является гласным:
    • Разделите строку на массив с помощью split() .
    • Нажимайте все согласные до конца массива с помощью shift() и push() .
    • Преобразуйте массив в строку с помощью join() и добавьте ay в конец строки. Верни это.

Связанные ссылки

:trophy: Кредиты:

Если вы нашли эту страницу полезной, вы можете сказать спасибо вкладчикам, скопировав и вставив следующую строку в основной чат:

Thanks @Rafase282 @sabahang @aganita @Hallaathrad for your help with Algorithm: Pig Latin

:clipboard: ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:

  • :warning: НЕ добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это похоже, но лучше , попробуйте объединить (или заменить) существующее подобное решение.
  • Добавьте объяснение своего решения.
  • Классифицируйте решение в одной из следующих категорий - Basic , Intermediate и Advanced . :traffic_light:
  • Пожалуйста, добавьте свое имя пользователя, только если вы добавили соответствующее основное содержимое . ( :warning: НЕ удаляйте существующие имена пользователей )

Видеть :point_right: Wiki Challenge Solution Template для Wiki Challenge Solution Template для справки.