Esta é a solução mais bonita que vi até agora (de @josusanmartin), mas não é ótima (pontua 3.002)