Graças à comunidade do PPCG, o Papai Noel conseguiu classificar seus presentes na ordem correta para se mudar para o cais de transporte. Infelizmente, os sinais do cais de transporte estão quebrados para que ele não saiba onde colocar todos os presentes! Os presentes são todos agrupados e não por faixas, o que Papai Noel admite que teria sido uma idéia melhor.
Agora, considerando os presentes na ordem classificada, determine todas as configurações possíveis de alcance mínimo que resultariam no presente na ordem correta. Ou seja, encontre todas as configurações de alcance mínimo, para que a classificação dos presentes de acordo com o algoritmo do Desafio nº 5 não mude a ordem.
Desafio
Uma configuração de intervalo mínima é uma lista de intervalos, de modo que cada intervalo seja o menor possível. Ou seja, se um intervalo for designado para cobrir um subconjunto específico de presentes, o mínimo e o máximo do intervalo deverão ser os mesmos do subconjunto. Em outras palavras, encolher qualquer faixa da capa deixaria de ser uma capa.
O desafio é encontrar todas as configurações possíveis de alcance mínimo que se aplicariam aos tamanhos atuais. Vamos dar um exemplo:[3, 1, 2, 5, 4, 7, 6]
Existe um caso trivial, que consiste em variar toda a configuração atual. Nesse caso, [[1, 7]]
seria uma solução.
Para exemplos com elementos exclusivos, outro caso trivial seria [[3], [1], [2], [5], [4], [7], [6]]
(porque os intervalos não precisam ser pedidos).
Neste exemplo, também vemos isso [[1, 3], [4, 7]]
e [[1, 3], [4, 5], [6, 7]]
funcionaria, assim como [[1, 3], [5], [4], [6, 7]]
e [[1, 3], [4, 5], [7], [6]]
.
A resposta final para [3, 1, 2, 5, 4, 7, 6]
seria [[[3], [1], [2], [5], [4], [7], [6]], [[3], [1], [2], [5], [4], [6, 7]], [[3], [1], [2], [4, 5], [7], [6]], [[3], [1], [2], [4, 5], [6, 7]], [[3], [1], [2], [4, 7]], [[3], [1, 2], [5], [4], [7], [6]], [[3], [1, 2], [5], [4], [6, 7]], [[3], [1, 2], [4, 5], [7], [6]], [[3], [1, 2], [4, 5], [6, 7]], [[3], [1, 2], [4, 7]], [[1, 3], [5], [4], [7], [6]], [[1, 3], [5], [4], [6, 7]], [[1, 3], [4, 5], [7], [6]], [[1, 3], [4, 5], [6, 7]], [[1, 3], [4, 7]], [[1, 5], [7], [6]], [[1, 5], [6, 7]], [[1, 7]]]
.
Especificações de formatação
A entrada será fornecida como uma lista plana de números inteiros positivos dentro do intervalo razoável de números suportados do seu idioma, em qualquer formato razoável. A entrada pode conter elementos duplicados. A saída deve ser fornecida como uma lista 3D de números inteiros positivos em qualquer formato razoável.
Cada gama na sua saída (que é na segunda camada) pode ser representado tanto como [min, max]
, [num]
se for uma gama de valor único, ou como toda a própria gama, mas o formato de saída deve ser consistente. Especifique se deseja usar um formato de saída razoável ligeiramente diferente.
Valores duplicados devem ser cobertos por um único intervalo na saída; isto é, não há dois intervalos na saída que possam ter sobreposição.
Sua solução pode retornar os intervalos em qualquer ordem e isso não precisa ser determinístico.
Regras
- As brechas padrão se aplicam
- Isso é código-golfe, então a resposta mais curta em bytes vence
- Nenhuma resposta será aceita
Caso de teste para uma lista com elementos duplicados:
2 3 2 4 -> [[[2, 3], [4]], [[2, 4]]]
Implementação de referência
O cabeçalho é o link.
Nota: Eu me inspirei para esta série de desafios da Advent Of Code . Não tenho afiliação com este site
Você pode ver uma lista de todos os desafios da série consultando a seção 'Vinculado' do primeiro desafio aqui .
Feliz golfe!