C:\test>perl -ple$_=join'',sort/./g;y///cs test-strings
+/034589BDFHKMNUXabcfghjlnqstuwxyz
/1234589ACEGIKLMNPQRSTbdefhjklnopqstux
/013589ABCIMNRTVYbcdefghjkloqtuwxy
/03589BEFKLMNOPQTabcfghlmqrtuvwx
+/1345689ACGKMNOQWbdghlmnoqrtuwx
/234589ABDEFGHIMNORTabdfhilnqtuwxyz
+/01345789ACEIMNPQTZabcefghlmqtuwx
/234589ACGILMNOQUbehlmoqrstuwxyz
C:\test>\Perl510\bin\perl5.10.0.exe -nE"@;{/./g}=();%;=!say%;" test-st
+rings
/aNKjyugtsBHcDqbzUwFxMh0fnX39+8l45
S/TNKd2Eju1ktesqbIGxQhMCfLAn3P98lp4Ro5
/TNdYjyu1kgteBcqbIwxVhM0CfA398lR5o
/aTNKEugtvBcqbwFrxQhM0LfO3Pm98l5
/NKdu1gtWqbGwrxQhMCA6nO3m9+8l45o
/TaNdE2yutBHDqbIGzFwxhMfiAnO398l4R5
/TaN7EZu1gtecqbIwxQMh0CfA3Pm9+8l45
/N2yutesqbIGzUwrxQMhCLAO3m98l45o
-
-
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
| [reply] [d/l] |
| [reply] |
That is too nice, but you will have to explain how it works.
CountZero A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James
| [reply] |
-nE'@;{/./g}=();%;=!say%;'
/./g is in list context, so it's a shorthand for /(.)/g and will hence return a list of all characters (without the newline).
@;{...} is a slice of the hash %;. @;{/./g} = () sets all values in the slice to undef. The keys are the characters of the line.
say %; prints the hash; as key-value pairs. Since the values are undefined, the values are printed as empty strings. So, in effect, it prints all the characters of the line, without duplicates.
%;=!say%;
say will return true, so its negation will be the empty string. So it'll make %; have one element: the empty string as key, and the undefined value as value. This will be printed for the next line, but since they are both printed as empty strings, you won't actually see it.
| [reply] [d/l] [select] |
Thanks! The fact that you can call a variable ';' threw me off.
CountZero A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James
| [reply] |