Znajdź najdłuższą serię prawdy na liście booleanów. Zwróć tę samą listę, a wszystkie inne prawdy sfałszowane.
Wejście wyjście
Lista; dowolny zwykły format (np. lista rozdzielana jako ciąg).
Detale
Prawda i fałsz mogą być wszystkim, czego Twój język używa do tych wartości, lub liczbami całkowitymi 1 i 0. Jeśli używasz pojedynczych znaków, lista może być konkatenacją (np 10001
.).
Jeśli istnieje remis dla najdłuższego biegu, utrzymuj wszystkie wiązania wiązania prawdziwe, i fałszuj wszystkie krótsze przebiegi.
Przykłady
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
(bezpośrednio z /programming//q/37447114 )