- #!/usr/bin/env perl
- # what is a schwartzian transform?
- # http://en.wikipedia.org/wiki/Schwartzian_transform
- use feature qw{ say } ;
- # notice how all of these are not in any order?
- my @tedx_feeds = qw{
- tedx
- tedxboston
- tedxindianapolis
- tedxiu
- tedxpurdueu
- tedxlafayette
- tedxohiostateu
- tedxpsu
- tedxuiowa
- } ;
- # we'll read this backwards.
- my @sorted =
- map { $_->[0] }
- # ... and then we just use the words, jettisoning
- # the lengths and creating the final array.
- sort { $a->[1] <=> $b->[1] }
- # ... which we sort numerically by the length
- map { [ $_ , length $_ ] }
- # ... becomes an array of arrays, being all
- # the words and their lengths, starting
- # with [ 'tedx' , 4 ] ...
- @tedx_feeds ; # the array in unsorted order ...
- # Start here and go up <-----------------<<<<<
- say join "\n" , @sorted ;
- # output looks like:
- # tedx
- # tedxiu
- # tedxpsu
- # tedxuiowa
- # tedxboston
- # tedxpurdueu
- # tedxlafayette
- # tedxohiostateu
- # tedxindianapolis
It took me quite a long time to get the Transform, and the use of map
and grep
. But they aren't hard. Once you get them, you'll use them everywhere. Maybe too much....
No comments:
Post a Comment