#!/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