21 lines
656 B
Plaintext
21 lines
656 B
Plaintext
var words = ARGF.grep(/^[[:alpha:]]+\z/);
|
|
|
|
var dials = words.group_by {
|
|
.tr('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
|
|
'2223334445556667777888999922233344455566677778889999');
|
|
}
|
|
|
|
var textonyms = dials.grep_v { .len > 1 };
|
|
|
|
say <<-END;
|
|
There are #{words.len} words which can be represented by the digit key mapping.
|
|
They require #{dials.len} digit combinations to represent them.
|
|
#{textonyms.len} digit combinations represent Textonyms.
|
|
END
|
|
|
|
say "Top 5 in ambiguity:";
|
|
say textonyms.sort_by { |_,v| -v.len }.first(5).join("\n");
|
|
|
|
say "\nTop 5 in length:";
|
|
say textonyms.sort_by { |k,_| -k.len }.first(5).join("\n");
|