Encontre a execução mais longa de true em uma lista de booleanos. Retorne a mesma lista, com todas as outras verdades falsificadas.
Entrada, saída
Uma lista; qualquer formato usual (por exemplo, uma lista delimitada como uma string).
Detalhes
Verdadeiro e falso podem ser qualquer coisa que seu idioma normalmente use para esses valores ou os números inteiros 1 e 0. Se você usar caracteres únicos, a lista poderá ser uma concatenação (por exemplo, 10001
).
Se houver um empate na corrida mais longa, mantenha todas as corridas vinculadas verdadeiras e falsifique todas as corridas mais curtas.
Exemplos
input ↦ output
1,0,1,0,1 ↦ 1,0,1,0,1
1,1,0,1,1,0,1 ↦ 1,1,0,1,1,0,0
1,1,0,1,1,1,0,1,1 ↦ 0,0,0,1,1,1,0,0,0
1,1,1 ↦ 1,1,1
0,0,1 ↦ 0,0,1
0,0 ↦ 0,0
1,1,1,0,0,0,1,1,1,1,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0 ↦ 0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0
(diretamente de https://stackoverflow.com/q/37447114 )