Last letter-first letter: Difference between revisions

(Undo revision 281199 by Hari10599 (talk))
Line 2,206:
simisear registeel landorus seaking girafarig
gabite emolga audino
</pre>
 
=={{header|JavaScript}}==
<lang javascript>const removeFromList = (list, word) => list.filter(n => n !== word);
 
const searchNames = (list, letter, result) => {
const words = list.filter(e => e[0] === letter);
if (!words.length) { return result }
return words.map(word => {
const nextList = removeFromList(list, word);
const nextLetter = word[word.length - 1];
return searchNames(nextList, nextLetter, [...result, word])
});
};
 
const findPaths = () => {
const names = ["audino", "bagon", "baltoy", "banette",
"bidoof", "braviary", "bronzor", "carracosta", "charmeleon",
"cresselia", "croagunk", "darmanitan", "deino", "emboar",
"emolga", "exeggcute", "gabite", "girafarig", "gulpin",
"haxorus", "heatmor", "heatran", "ivysaur", "jellicent",
"jumpluff", "kangaskhan", "kricketune", "landorus", "ledyba",
"loudred", "lumineon", "lunatone", "machamp", "magnezone",
"mamoswine", "nosepass", "petilil", "pidgeotto", "pikachu",
"pinsir", "poliwrath", "poochyena", "porygon2", "porygonz",
"registeel", "relicanth", "remoraid", "rufflet", "sableye",
"scolipede", "scrafty", "seaking", "sealeo", "silcoon",
"simisear", "snivy", "snorlax", "spoink", "starly", "tirtouga",
"trapinch", "treecko", "tyrogue", "vigoroth", "vulpix",
"wailord", "wartortle", "whismur", "wingull", "yamask"];
 
let maxNum = 0;
let maxPaths = [];
 
const parseResult = e => {
if (typeof e[0] === 'object') {
e.forEach(el => parseResult(el))
} else {
if (e.length > maxNum) {
maxNum = e.length;
maxPaths = [e];
} else if (e.length === maxNum) {
maxPaths.push(e);
}
}
};
 
names.forEach(name => {
const list = removeFromList(names, name);
const letter = name[name.length - 1];
const result = searchNames(list, letter, [name]);
parseResult(result);
});
 
console.log('Max Path:', maxNum);
console.log('Matching Paths:', maxPaths.length);
console.log('Example Path:', maxPaths[0]);
};
 
findPaths();
</lang>
 
<pre>
Max Path: 23
Matching Paths: 1248
Example Path: [
'machamp',
'petilil',
'landorus',
'scrafty',
'yamask',
'kricketune',
'emboar',
'registeel',
'loudred',
'darmanitan',
'nosepass',
'simisear',
'relicanth',
'heatmor',
'rufflet',
'trapinch',
'haxorus',
'seaking',
'girafarig',
'gabite',
'exeggcute',
'emolga',
'audino' ]
</pre>
 
Anonymous user