Alguém tem empilhado às pressas os presentes de Natal, e é uma bagunça:
========================
| |
========================
=============
| |
| |
| |
| |
| |
| |
=============
=======
| |
| |
| |
=======
===================
| |
| |
| |
===================
=================
| |
| |
| |
| |
=================
=======
| |
| |
=======
Sério, como esse top apresenta equilíbrio. Provavelmente é um martelo. Para impedir que essa torre de presentes desmorone, você deve reordenar os presentes para que eles fiquem bem empilhados:
=======
| |
| |
=======
=======
| |
| |
| |
=======
=============
| |
| |
| |
| |
| |
| |
=============
=================
| |
| |
| |
| |
=================
===================
| |
| |
| |
===================
========================
| |
========================
As regras
- Cada presente consiste em uma parte superior e inferior dos
=
caracteres e uma ou mais linhas do meio, consistindo em duas|
separadas por espaços. A largura do presente é a mesma em todas as suas linhas. - Não há linhas vazias.
- Presentes consecutivos se sobrepõem em pelo menos uma coluna.
- Os presentes devem ser empilhados em ordem decrescente de largura. Em caso de empate, o presente mais alto deve ficar abaixo do presente mais plano.
- Os presentes devem estar centralizados no presente abaixo. Se o presente não puder ser colocado exatamente no centro (porque a diferença nas larguras é ímpar), você poderá escolher uma posição com meio caractere fora do centro.
- Você pode ou não presumir que a entrada tenha uma nova linha à direita, mas indique sua suposição.
- Sua solução não precisa funcionar para uma entrada vazia, mas deve poder manipular um único presente.
- Você pode escrever um programa ou função, que recebe entrada via STDIN ou argumento de função e retorna o resultado ou o imprime em STDOUT.
- Isso é código de golfe, então a resposta mais curta (em bytes) vence.