fundo
Esta é uma continuação do meu desafio anterior , em que a tarefa era calcular a forma de uma escultura obtida pela queda de ímãs em uma pilha enorme.
Boas notícias: o artista excêntrico gostou do seu trabalho e tem outro projeto para você. Ele ainda trabalha com esculturas magnéticas, mas decidiu expandir seu estúdio de arte - para o espaço ! Seu método atual é lançar um único ímã em forma de cubo na órbita e disparar outros ímãs para criar um enorme satélite magnético.
Entrada
Sua entrada é uma lista finita de 0
s e1
s, fornecida no formato de lista nativa do seu idioma ou em uma string. É interpretado como um "modelo" de uma obra de arte e é processado da esquerda para a direita, da seguinte maneira.
Você começa com um único ímã flutuando em alguma coordenada inteira do plano 2D e continua adicionando mais ímãs conforme as diretivas. A diretiva 0
gira a escultura inteira 90 graus no sentido anti-horário. No caso da diretiva 1
, o artista encontra a coluna mais à esquerda da escultura e lança um novo ímã por baixo. O novo ímã adere ao ímã mais baixo existente na coluna e se torna parte da escultura. Observe que o ímã não adere a outros ímãs na coluna vizinha, ao contrário do desafio anterior; sua velocidade agora é astronômica!
Resultado
O artista quer saber se a escultura completa caberá em sua garagem (como ele será retirado da órbita ainda não está claro). Assim, sua saída é a largura e a altura da escultura, ordenadas de menor para maior. Eles podem ser fornecidos como uma lista de dois elementos, um par ou como uma sequência separada por vírgula.
Exemplo
Considere a sequência de entrada
[1,0,1,1,0,1,0,0,1,1]
Para processá-lo, começamos com um ímã flutuando no espaço:
#
A primeira diretiva é 1
, então filmamos um novo ímã a partir de baixo:
#
#
A próxima diretiva é 0
, então giramos a escultura:
##
As próximas duas diretrizes são 1,1
, o que significa que atiraremos dois ímãs na coluna mais à esquerda:
##
#
#
Em seguida, giramos novamente e disparamos uma vez, conforme indicado por 0,1
:
#
###
#
Finalmente, giramos duas vezes e filmamos duas vezes:
#
###
# #
#
A escultura resultante tem largura 3
e altura 4
, então produzimos [3,4]
.
Regras
Você pode atribuir uma função ou um programa completo. A menor contagem de bytes vence e as brechas padrão não são permitidas.
Casos de teste
[1,0,1] -> [2,2]
[1,0,1,1,0,1,0,0,1,1] -> [3,4]
[1,1,0,1,1,0,1,0,1,1] -> [4,5]
[1,1,0,1,1,0,1,0,1,1,0] -> [4,5]
[1,0,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1] -> [3,3]
[0,1,0,1,1,1,1,0,0,1,0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,1,0,0,0,0,1,0,1,0,1,1,0,0,1,1] -> [5,7]
[1,0,1,1,1,1,0,1,0,0,0,0,1,1,1,0,1,1,0,1,0,1,0,0,0,0,0,0,1,1,0,1,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,0,0,1,1,0,0,1,1,0,1,0,0,1,1,0,1,1,0,0,1,0,1,0,0,1,0,1,1,1,0,1,1,0,0,1,0,1,1,0,0,0,1,0,1,1,0,0,1,0,1,1,0] -> [11,12]
[1,1,0,1,1,0,1,0,1,1,0]
voltar[5,4]
e não[4,5]
? A escultura é girada no final.