Anagrams: Difference between revisions

Content added Content deleted
(Add Jsish, move a Javascript subheading)
Line 3,490: Line 3,490:
[ 'evil', 'levi', 'live', 'veil', 'vile' ]</pre>
[ 'evil', 'levi', 'live', 'veil', 'vile' ]</pre>


==Alternative Using Reduce==
===Alternative Using Reduce===
<lang javascript>var fs = require('fs');
<lang javascript>var fs = require('fs');
var dictionary = fs.readFileSync('unixdict.txt', 'UTF-8').split('\n');
var dictionary = fs.readFileSync('unixdict.txt', 'UTF-8').split('\n');
Line 3,537: Line 3,537:
["evil","levi","live","veil","vile"]
["evil","levi","live","veil","vile"]
</lang>
</lang>

=={{header|Jsish}}==
From Javascript, nodejs entry.
<lang javascript>/* Anagrams, in Jsish */
var datafile = 'unixdict.txt';
if (console.args[0] == '-more' && Interp.conf('maxArrayList') > 500000)
datafile = '/usr/share/dict/words';

var words = File.read(datafile).split('\n');
puts(words.length, 'words');
var i, item, max = 0, anagrams = {};
for (i = 0; i < words.length; i += 1) {
var key = words[i].split('').sort().join('');
if (!anagrams.hasOwnProperty(key)) {
anagrams[key] = [];
}
var count = anagrams[key].push(words[i]);
max = Math.max(count, max);
}

// display all arrays that match the maximum length
for (item in anagrams) {
if (anagrams.hasOwnProperty(item)) {
if (anagrams[item].length === max) {
puts(anagrams[item].join(' '));
}
}
}

/*
=!EXPECTSTART!=
25108 words
abel able bale bela elba
caret carte cater crate trace
angel angle galen glean lange
alger glare lager large regal
elan lane lean lena neal
evil levi live veil vile
=!EXPECTEND!=
*/</lang>

{{out}}
<pre>prompt$ jsish -u anagrams.jsi
[PASS] anagrams.jsi</pre>

To update the script to pass with a site local words file, just '''jsish -u -update true anagrams.jsi'''.


=={{header|Julia}}==
=={{header|Julia}}==