Anne work

by nickkell

JavaScript

var anneWork = function (initialTerm) {
    //initialise array to hold variations
    var variations = [],
        alphabet = function () {
            return _.map(_.range('a'.charCodeAt(0), 'z'.charCodeAt(0)), function (c) {
                return String.fromCharCode(c);
            });
        },
        vowels = ['a', 'e', 'i', 'o', 'u'],
        consonants = _.difference(alphabet(), vowels);
    //for each vowel
    for (var i = 0; i < vowels.length; i++) {
        //"o"
        var currentVowel = vowels[i];
        //"oo"
        var pairOfCurrentVowel = currentVowel + currentVowel;

        for (var characterInInitialTerm = 0; characterInInitialTerm < initialTerm.length; characterInInitialTerm++) {
            //initialTerm = "bool";
            //"o"
            var currentCharacter = initialTerm[characterInInitialTerm];
            //"o"
            var nextCharacter = initialTerm[characterInInitialTerm + 1];
            //"oo"
            var currentAndNext = currentCharacter + nextCharacter;

            if (currentAndNext === pairOfCurrentVowel) {
                var possibleConsonant = initialTerm[characterInInitialTerm + 2];
                var possibleNextConsonant = initialTerm[characterInInitialTerm + 3];

                if (possibleConsonant === possibleNextConsonant && _.contains(consonants, possibleConsonant)) {
                    var additionalTermVariationDoubleConsonant = initialTerm.slice(characterInInitialTerm + 3, 1);
                    variations.push(additionalTermVariationDoubleConsonant);
                } else {
                    var additionalTermVariationSingleConsonant = initialTerm.slice(characterInInitialTerm + 2 + 1, 0);
                    variations.push(additionalTermVariationSingleConsonant);
                }
            }
        }
    }
    
    return variations;
};
console.log(anneWork('bool'));

//for each character in initialTerm, if that character and the next is equal to the current vowel pair, get the...