Anteriormente , defini o processo de esmagar uma matriz
Em uma paixonite, lemos a matriz da esquerda para a direita. Se em um ponto encontramos dois elementos iguais seguidos, removemos o primeiro e duplicamos o segundo.
Por exemplo, aqui está o processo de esmagar a seguinte matriz
[5,2,2,4]
^
[5,2,2,4]
^
[5,2,2,4]
^
[5,4,4]
^
[5,4,4]
^
[5,8]
^
Observe que o mesmo elemento pode ser recolhido várias vezes. No exemplo 2,2,4foi recolhido 8em uma única passagem.
Agora, esmagar matrizes é fácil, o difícil é esmagá-las. Sua tarefa é pegar uma matriz de números inteiros positivos como entrada e gerar a maior matriz que pode formar a entrada quando pressionada repetidamente. Por exemplo, a matriz [4]é formada por esmagamento, [2,2]que por sua vez é formado por esmagamento [1,1,1,1]. Como não podemos ter valores não inteiros, [1,1,1,1]não podemos mais ser esmagados e, portanto, é a nossa resposta.
Você nunca receberá um 0em sua matriz de entrada porque essas matrizes podem ser expandidas indefinidamente. Você também nunca receberá um caso com dois do mesmo número ímpar um ao lado do outro; esses casos não podem ser o resultado de uma trituração.
Isso é código-golfe, então as respostas serão pontuadas com o tamanho da fonte medido em bytes, com menos bytes sendo melhores.
Antes de começar a responder, quero apenas dizer que esse desafio é significativamente mais difícil do que parece. Verifique sua intuição à medida que avança e verifique se sua resposta passa em todos os casos de teste.
Casos de teste
[] -> []
[5] -> [5]
[6] -> [3,3]
[8] -> [1,1,1,1,1,1,1,1]
[4,8] -> [1,1,1,1,1,1,1,1,1,1,2]
[2,8] -> [1, 1, 1, 1, 2, 1, 1, 1, 1]
[4,4] -> [1,1,1,1,1,1,1,1]
[1,>1,1,1,1,1,1,1,1,1,2], [2,>1,1,1,1,1,1,1,1,2], [2,1,>1,1,1,1,1,1,1,2], [2,2,>1,1,1,1,1,1,2], [2,2,1,>1,1,1,1,1,2], [2,2,2,>1,1,1,1,2], [2,2,2,1,>1,1,1,2], [2,2,2,2,>1,1,2], [2,2,2,2,1,>1,2], [2,2,2,2,2,>2], [2,2,2,2,4>], segunda passagem: [2,>2,2,2,4], [4,>2,2,4], [4,2,>2,4], [4,4,>4], [4,8>]. Espero que isso esclareça. Se você deseja que algum código veja a pergunta anterior, tem respostas que implementam uma função de esmagamento.
[4, 4]deve ser removido, pois nunca podemos obter esse array após uma sequência de alongamento => esmagamento, pois isso terminará com[8]
[1,1,1,1,1,1,1,1,1,1,2]produzir em[4, 8]vez de[8, 4]? deve ser isso[1,>1,1,1,1,1,1,1,1,1,2],[2,1,>1,1,1,1,1,1,1,2],[2,>2,1,1,1,1,1,1,2],[4,1,>1,1,1,1,1,2],[4,2,1,>1,1,1,2],[4,2,>2,1,1,2],[4,>4,1,1,2],[8,1,>1,2],[8,2,>2],[8,4]?