Dada uma pirâmide de adição , determine se ela pode ser resolvida. Uma pirâmide de adição consiste em camadas , cada uma com um número menor que o número abaixo dela. A camada é simbolizada como . é a camada base e é a camada no topo de . O ésimo número de é indicado como . é o número mais à esquerda de , e é o número à direita de . Você pode visualizar residindo em cima dei P i P 1 P i + 1 P i j P i P i , j P i , 1 P i P i , j + 1 P i , j P i + 1 , j P i , je no meio, daí o nome " pirâmide de adição ".
- , ou seja, todo número na pirâmide é um número inteiro positivo diferente de zero.
- , ou seja, todos os números que não estão na camada base da pirâmide são a soma de os dois números abaixo dele.
- Se possui números, possui , portanto, é o número mais à direita de . Em termos mais simples, cada camada tem um número a menos que a camada abaixo dela.
Um quebra-cabeça de pirâmide de adição é uma pirâmide de adição com alguns números removidos (substituídos por ). Sua solução é uma pirâmide de adição , onde , ou seja, os números que estavam originalmente presentes no quebra-cabeça têm foi deixado inalterado. Esse quebra-cabeça pode ter mais de uma solução.
Seu trabalho é, com um quebra-cabeça de pirâmide adicional, determinar se ele tem exatamente uma solução.
Entrada
Você pode obter informações de qualquer uma das seguintes formas, mas seja consistente:
- Matriz de camadas.
- Matriz de camadas, em forma de pirâmide, usando um valor inteiro não positivo consistente como um separador entre os elementos (usados apenas uma vez por vez), bem como o preenchimento esquerdo e direito. O separador e o preenchimento devem ser os mesmos.
- Matriz de camadas com um preenchimento válido direito ou esquerdo consistente (neste caso, você deve ser consistente e não misturar o preenchimento direito e esquerdo).
Observe que um valor consistente que não seja um número inteiro estritamente positivo deve ser usado para representar um número ausente; esse valor não pode ser usado como preenchimento. Além disso, é possível concatenar as camadas (ainda é possível separá-las) e a ordem pode ser da base para o topo ou da parte superior para a base.
Resultado
Um dos dois valores distintos consistentes, em que um representa a presença de uma solução única e o outro a ausência de uma solução ou a presença de mais de uma solução.
Regras
- sempre será verdadeiro se , ou seja, a entrada é garantido que não contenha um número em cima de dois outros números que não é a soma deles se todos os três números forem conhecidos.
- , ou seja, a pirâmide conterá pelo menos um número conhecido.
- Não faça essas coisas .
- Isso é código-golfe , então a resposta mais curta vence! No entanto, não deixe que isso o desencoraje de postar uma solução apenas porque seu idioma é "muito detalhado".
Casos de teste
Uma matriz com as camadas da parte superior à base é usada para esses casos de teste, com 0
representação .
[[10], [0, 0], [0, 2, 0], [0, 0, 0, 1]] -> True
[[32], [0, 0], [0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]] -> True
[[0], [1, 1]] -> True
[[1], [0, 0]] -> False
[[10], [5, 5], [2, 3, 2], [0, 0, 0, 0]] -> False
[[5], [0, 0], [0, 0, 0]] -> False
Exemplos trabalhados
Os casos de teste são trabalhados aqui.
Solução única 1
Passo 1: .
Etapa 2: .
Passo 3: .
Passo 4: .
As etapas 5 a 6 são semelhantes a 4.
Então aqui temos nossa solução exclusiva.
Solução única 2
Etapa 1: não há uma abordagem óbvia aqui, então vamos tentar usar os valores mínimos possíveis.
Etapas 2-5: Parece que os valores mínimos resultam em uma solução, portanto, esta é a única solução e, portanto, única.
Dica: existe um teorema sobre quebra-cabeças de pirâmide de adição relacionado a esse quebra-cabeça que você pode provar se pensar bastante.
Solução única 3
Passo 1: .
Esta é uma solução obviamente única.
Sem solução 1
Sem solução 2
Solução não exclusiva
Duas soluções:
Como existem pelo menos duas soluções, não há solução única.