Word squares are like really simple crossword puzzles. There are no black squares, the grid is a square, and the "down" clues are the same as the "across" clues.
So, given some list of strings, return the strings in the order they would appear (down or across) in the grid. My solution uses two functions, and thus, I have decided that character count will include the "sub ...".
So, given a list of words, construct a word square out of them. Here is an example:
The solution:division of a road: _ _ _ _ a location: _ _ _ _ in proximity to: _ _ _ _ hearing organs: _ _ _ _
L A N E A R E A N E A R E A R S |
My code is (updated, thanks to abstracts) 131 characters.#23456789_123456789_123456789_123 sub Q{my$j=pop;my@l=map$$_[$j],@_ ;for(@_){return"@$_",Q(@_,++$j)if "@{[sort@$_]}"eq"@{[sort@l]}"}()} sub S{Q map([split//],@_),$"=""}
_____________________________________________________
Jeff[japhy]Pinyan:
Perl,
regex,
and perl
hacker.
s++=END;++y(;-P)}y js++=;shajsj<++y(p-q)}?print:??;
Back to
Meditations