Wejście:
Niepusta lista / wektor, w którym każdy element zawiera wartość / znak wskazujący, czy policzysz w górę, czy w dół . Użyję 1i -1, ale możesz wybrać, co chcesz. Można użyć tylko dwie wartości, nie można używać 1,2,3...i -1,-2,-3...na górę i dół odpowiednio.
Wyzwanie:
Będziesz korzystać z numerów w geometrycznym serii 1, 2, 4, 8, 16, 32 ... . Za każdym razem, gdy zaczniesz liczyć w górę lub w dół, będziesz liczyć co 1 , potem 2 , potem 4 itd. Jeśli zmienisz i zaczniesz liczyć w drugą stronę, odejmiesz 1 , następnie 2 , a następnie 4 i tak dalej. Dane wyjściowe będą liczbą, którą otrzymasz na końcu.
Przykłady:
W poniższym przykładzie pierwszy wiersz to dane wejściowe, drugi wiersz to liczby, które liczysz w górę / w dół, trzeci wiersz to suma skumulowana, a ostatni to wynik.
Przykład 1:
1 1 1 1 1 1 1 1 1 1
1 2 4 8 16 32 64 128 256 512
1 3 7 15 31 63 127 255 511 1023
1023
Przykład 2:
1 1 1 1 1 1 -1 -1 -1 -1 1 1 1
1 2 4 8 16 32 -1 -2 -4 -8 1 2 4
1 3 7 15 31 63 62 60 56 48 49 51 55
55
Jak widać, pierwsza 1lub -1„resetuje” liczoną przez nas wartość, a kolejne sekwencje 1lub -1oznaczają podwojenie wartości.
Przykład 3:
-1 -1 1 1 -1 -1 -1
-1 -2 1 2 -1 -2 -4
-1 -3 -2 0 -1 -3 -7
-7
Niektóre dodatkowe przypadki testowe uwzględniające niektóre potencjalne przypadki narożne.
Dane wejściowe znajdują się w pierwszym wierszu. Wyjście jest na drugim.
1
1
-------
-1
-1
-------
-1 1 -1 1 -1 1 -1 1 -1 1 -1 1
0
To jest golf golfowy, więc wygrywa najkrótsze zgłoszenie w każdym języku.
®ì2Ãx, abyxì2zapisać dwa bajty.