Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re^4: Perl Golf idea

by brx (Pilgrim)
on May 01, 2012 at 20:58 UTC ( #968333=note: print w/ replies, xml ) Need Help??


in reply to Re^3: Perl Golf idea
in thread Perl Golf idea

And if you don't mind the (second) argument getting printed, another 3 chars less:
perl -nlE'sub w{[sort/./g]}$w||=w$_=pop;$w~~w&&say' ./dict.txt acert

This one is wrong (only) if the first line of 'dict.txt' contains a valid word (different from arg2).

example:

$ cat dict.txt one neo noe bad $ perl -nlE'sub w{[sort/./g]}$w||=w$_=pop;$w~~w&&say' ./dict.txt oen oen neo noe

First word is missing. Anyway, this is a very beautiful version: ++

UPDATE: with an extra newline

perl -E'@a=sort pop=~/./g;say grep@a~~[sort/./g],<>' ./dict.txt acert

UPDATE2: one char useless

perl -E'@a=sort pop=~/./g;say grep@a~~[sort//g],<>' ./dict.txt acert


Comment on Re^4: Perl Golf idea
Select or Download Code
Re^5: Perl Golf idea
by thundergnat (Deacon) on May 02, 2012 at 17:08 UTC

    Nice. Here's one that returns the correct output using a few characters less:

    perl -nE'$w//=pop;[sort$w=~/./g]~~[sort//g]&&print' ./dict.txt acert

    or, two characters less than that, but with an extra newline between each word:

    perl -nE'$w//=pop;[sort$w=~/./g]~~[sort//g]&&say' ./dict.txt acert

    UPDATE: shorter version with correct output:

    perl -nlE'$w//=pop;[sort$w=~/./g]~~[sort//g]&&say' ./dict.txt acert

    or, same length, more efficient:

    perl -nlE'($w//=[sort pop=~/./g])~~[sort//g]&&say' ./dict.txt acert

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://968333]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (8)
As of 2015-07-04 06:08 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (57 votes), past polls