Tak jsem zvolil Haskell, akorát jsem použil Data.Vector, kde není v knihovně "transpose" (ani jsem netušil, že to v Prelude je), a že otočení je "reverse . transpose" mě nenapdlo...

Nojo, premature optimization, možná kdybych viděl transpose, tak mě to napadne...(a možná ne).
IMO tohle je vyloženě úloha na to, jestli v tom člověk to otočení vidí nebo ne. A kdo nezačal programovat, ale vzal si nejdřív papír, tak to tam našel... a "ideální" kód vypadá přesně tak, jak to je v tom haskellu (nebo ekvivalent v NumPy), akorát kolem toho eventuálně bude knihovna, která pořeší ty view.
Otázka je, jestli se to dá nacvičit. Řekl bych, že ano. Je to stejné, jako když řešíte různé matematické prostocviky nebo vymýšlíte matematické důkazy. Když jich pár stovek horkotěžko dáte dohromady (projdete si spoustu slepých uliček) a pak různá elegantní řešení, tak při nových úlohách najednou vidíte, kam se kouknout, jestli tam nevede jednodušší cesta..
Programování je jen spousty triků, a když jich budete pár znát, tak je snadno budete umět použít...