http://www.perlmonks.org?node_id=83987


in reply to (Golf) mobile phone numbers -> words

Here's my entry at 113, note that all we pass is the wordlist and the key to search for:
sub num{ $k=shift;for(@_){chomp;$n=lc;$n=~y/abcdefghijklmnopqrstuvwxyz/22233344 +455566677778889999/;push@{$h{$n}},$_;$h{$k} }
Update: I believe that I can add 5 (score:118) and get all possibilities.
sub num{ #23456789_123456789_123456789_123456789_123456789_123456789_123456789_ +123456789_123456789_123456789_123456789_12345678 $k=shift;for(@_){$n=$_;chomp;lc;y/abcdefghijklmnopqrstuvwxyz/222333444 +55566677778889/;push@{$h{$k}},$n if$k=~$_}$h{$k} }
Update #2: Now down to 107 with all possibilities, now returns an array instead of ref to array
sub num{ $k=shift;for(@_){chomp;lc;$n=$_;y/abcdefghijklmnopqrstuvwxyz/222333444 +55566677778889/;push@h,$n if$k=~$_}@h }
Returns a reference to all single words found.
ie: pass it 7825 and /usr/dict/words and it will return pub,puck,qua,rub,sub,suck etc.. (not including single letters).