75 lines
1.7 KiB
JavaScript
75 lines
1.7 KiB
JavaScript
#!/usr/bin/env js
|
|
|
|
function main() {
|
|
var wordList = read('unixdict.txt').split(/\s+/);
|
|
var anagrams = findAnagrams(wordList);
|
|
var derangedAnagrams = findDerangedAnagrams(anagrams);
|
|
var longestPair = findLongestDerangedPair(derangedAnagrams);
|
|
print(longestPair.join(' '));
|
|
|
|
}
|
|
|
|
function findLongestDerangedPair(danas) {
|
|
var longestLen = danas[0][0].length;
|
|
var longestPair = danas[0];
|
|
for (var i in danas) {
|
|
if (danas[i][0].length > longestLen) {
|
|
longestLen = danas[i][0].length;
|
|
longestPair = danas[i];
|
|
}
|
|
}
|
|
return longestPair;
|
|
}
|
|
|
|
function findDerangedAnagrams(anagrams) {
|
|
var deranged = [];
|
|
|
|
function isDeranged(w1, w2) {
|
|
for (var c = 0; c < w1.length; c++) {
|
|
if (w1[c] == w2[c]) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function findDeranged(anas) {
|
|
for (var a = 0; a < anas.length; a++) {
|
|
for (var b = a + 1; b < anas.length; b++) {
|
|
if (isDeranged(anas[a], anas[b])) {
|
|
deranged.push([anas[a], anas[b]]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
for (var a in anagrams) {
|
|
var anas = anagrams[a];
|
|
findDeranged(anas);
|
|
}
|
|
|
|
return deranged;
|
|
}
|
|
|
|
function findAnagrams(wordList) {
|
|
var anagrams = {};
|
|
|
|
for (var wordNum in wordList) {
|
|
var word = wordList[wordNum];
|
|
var key = word.split('').sort().join('');
|
|
if (!(key in anagrams)) {
|
|
anagrams[key] = [];
|
|
}
|
|
anagrams[key].push(word);
|
|
}
|
|
|
|
for (var a in anagrams) {
|
|
if (anagrams[a].length < 2) {
|
|
delete(anagrams[a]);
|
|
}
|
|
}
|
|
|
|
return anagrams;
|
|
}
|
|
|
|
main();
|