mirror of
https://github.com/10h30/odin-javascript-exercises.git
synced 2026-07-13 19:56:05 +09:00
Updated file paths
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
const pigLatin = function (string) {
|
||||
return string
|
||||
.split(" ")
|
||||
.map((word) => {
|
||||
const index = firstVowelIndex(word);
|
||||
const beginning = word.slice(0, index);
|
||||
const ending = word.slice(index);
|
||||
return `${ending}${beginning}ay`;
|
||||
})
|
||||
.join(" ");
|
||||
};
|
||||
|
||||
const firstVowelIndex = function (string) {
|
||||
const vowels = string.match(/[aeiou]/g);
|
||||
if (vowels[0] == "u" && string[string.indexOf(vowels[0]) - 1] == "q") {
|
||||
return string.indexOf(vowels[1]);
|
||||
}
|
||||
return string.indexOf(vowels[0]);
|
||||
};
|
||||
|
||||
module.exports = pigLatin;
|
||||
@@ -0,0 +1,56 @@
|
||||
const pigLatin = require('./pigLatin-solution');
|
||||
|
||||
// Topics
|
||||
|
||||
// * modules
|
||||
// * strings
|
||||
|
||||
// Pig Latin
|
||||
|
||||
// Pig Latin is a made-up children's language that's intended to be confusing. test obeys a few simple rules (below) but when test's spoken quickly test's really difficult for non-children (and non-native speakers) to understand.
|
||||
|
||||
// Rule 1: If a word begins with a vowel sound, add an "ay" sound to the end of the word.
|
||||
|
||||
// Rule 2: If a word begins with a consonant sound, move test to the end of the word, and then add an "ay" sound to the end of the word.
|
||||
|
||||
// (There are a few more rules for edge cases, and there are regional variants too, but that should be enough to understand the tests.)
|
||||
|
||||
// See https://en.wikipedia.org/wiki/Pig_Latin for more details.
|
||||
|
||||
describe('translate', () => {
|
||||
test('translates a word beginning with a vowel', () => {
|
||||
expect(pigLatin('apple')).toBe('appleay');
|
||||
});
|
||||
|
||||
test.skip('translates a word beginning with a consonant', () => {
|
||||
expect(pigLatin('banana')).toBe('ananabay');
|
||||
});
|
||||
|
||||
test.skip('translates a word beginning with two consonants', () => {
|
||||
expect(pigLatin('cherry')).toBe('errychay');
|
||||
});
|
||||
|
||||
test.skip('translates two words', () => {
|
||||
expect(pigLatin('eat pie')).toBe('eatay iepay');
|
||||
});
|
||||
|
||||
test.skip('translates a word beginning with three consonants', () => {
|
||||
expect(pigLatin('three')).toBe('eethray');
|
||||
});
|
||||
|
||||
test.skip('counts "sch" as a single phoneme', () => {
|
||||
expect(pigLatin('school')).toBe('oolschay');
|
||||
});
|
||||
|
||||
test.skip('counts "qu" as a single phoneme', () => {
|
||||
expect(pigLatin('quiet')).toBe('ietquay');
|
||||
});
|
||||
|
||||
test.skip('counts "qu" as a consonant even when its preceded by a consonant', () => {
|
||||
expect(pigLatin('square')).toBe('aresquay');
|
||||
});
|
||||
|
||||
test.skip('translates many words', () => {
|
||||
expect(pigLatin('the quick brown fox')).toBe('ethay ickquay ownbray oxfay');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user