Às vezes, quando estou realmente entediado, gosto de pegar a soma de uma matriz de números inteiros não negativos. Eu apenas tomo a soma de matrizes de comprimentos que são potências de dois. Infelizmente, muitas vezes eu cometo erros. Felizmente, acompanho meu trabalho conforme passo a seguir:
Eu adiciono pares de números adjacentes até sobrar apenas um. Por exemplo:
6 + 18 + 9 + 6 + 6 + 3 + 8 + 10
= 24 + 15 + 9 + 18
= 39 + 27
= 66
Seu trabalho é determinar se cometi um erro em algum lugar. Você pode passar a entrada para sua função ou ler a partir da entrada padrão. A saída pode ser impressa ou retornada.
Entrada: Uma matriz / lista / etc. de números inteiros não negativos e, possivelmente, também o comprimento dessa matriz, se o seu idioma exigir. Essa matriz será todos os números lidos da esquerda para a direita e de cima para baixo. Por exemplo, a matriz acima se tornaria:
[[6, 18, 9, 6, 6, 3, 8, 10], [24, 15, 9, 18], [39, 27], [66]]
ou
[6, 18, 9, 6, 6, 3, 8, 10, 24, 15, 9, 18, 39, 27, 66]
se você preferir.
Saída: um único booleano representando se um erro foi cometido ou não. O booleano pode ser representado usando qualquer mapeamento, desde que todas as entradas em que um erro seja cometido retornem / imprimam um resultado idêntico e todas as entradas que não contenham erros retornem / imprimam um resultado idêntico. Isso deve ser óbvio, mas essas duas saídas não podem ser as mesmas.
Alguns exemplos de somatórios corretos:
6
5+6
=11
3 + 2 + 4 + 5
= 5 + 9
= 14
[0, 1, 2, 3, 1, 5, 6]
[[1, 2, 4, 8], [3, 12], [15]]
Alguns exemplos de soma incorreta:
5+4
=8
4 + 4 + 4 + 4
= 9 + 7
= 16
[[1, 2, 3, 4], [7, 3], [10]]
[3, 4, 5, 6, 7, 8, 9]
Lembre-se de que eu posso cometer erros e ainda assim obter a resposta certa. Se eu cometer algum erro, isso nunca resultará em um número extra ou um número ausente na matriz final, apenas um número errado.
As brechas padrão são proibidas. A resposta mais curta em cada idioma é um vencedor. A resposta mais antiga vencerá em caso de empate. Eu tenho o direito de decidir qual é a "mesma linguagem", mas direi de antemão que um ponto não pode ser conquistado no Python 2 e no Python 3.
[0,1,2,3,1,5,6]
é inválido porque "Entrada: uma matriz / lista / etc. De números inteiros positivos".