Wejście:
Lista liczb całkowitych (które nigdy nie będą zawierać zera)
Wynik:
Lista tego samego rozmiaru z liczbą opartą na następujących elementach:
- Jeśli bieżący element jest ujemny: Spójrz na wszystkie elementy przed tym elementem i policz, ile razy cyfry wystąpiły w tych innych liczbach
- Jeśli zamiast tego bieżący element jest dodatni: spójrz na wszystkie elementy po tym elemencie i policz, ile razy cyfra wystąpiła w tych innych liczbach
Jest jeden zwrot: jeśli wielkość listy jest parzysta, liczymy każdą liczbę tylko raz (nawet jeśli pasuje do wielu cyfr), a jeśli wielkość jest nieparzysta, liczymy każdą cyfrę liczb dla każdej cyfry bieżącego elementu (powielona cyfry są liczone wiele razy).
Podajmy kilka przykładów, aby to trochę wyjaśnić:
Przykład z listą parzystą:
Input: [4, 10, 42, -10, -942, 8374, 728, -200]
Output: [3, 2, 4, 1, 2, 1, 1, 5 ]
Rozmiar listy jest parzysty , więc każdą liczbę liczymy tylko raz.
4: Jest pozytywny, więc czekamy z niecierpliwością. Istnieją trzy numery zawierające cyfrę4(42,-942,8374). Więc zaczynamy od3.10: Jest pozytywny, więc czekamy z niecierpliwością. Istnieją dwie liczby zawierające cyfrę1i / lub0(-10,-200). Więc drugie wyjście to2.42: Znowu pozytywne, więc naprzód. Istnieją cztery numery zawierające albo cyfrę4i / lub2(-942,8374,728,-200). Tak więc trzeci wynik to4.-10: Tym razem jest to negatywne, więc patrzymy wstecz. Jest tylko jedna liczba zawierająca cyfrę1i / lub0(ignorujemy znak minus) (10). Więc czwarte wyjście to1.- itp.
Przykład z nieparzystą listą:
Input: [382, -82, -8, 381, 228, 28, 100, -28, -2]
Output: [13, 2, 2, 4, 8, 3, 0, 11, 6 ]
Rozmiar listy jest nieparzysty , dlatego liczymy każdą cyfrę.
382: Jest pozytywny, więc czekamy z niecierpliwością. Jest jedna3w pozostałych liczbach (381), sześć8w pozostałych liczbach (-82, -8, 381, 228, 28, -28), a sześć2w pozostałych liczbach (-82, 228, 28, -28, 2). Więc zaczynamy od13.-82: Jest negatywny, więc do tyłu. Jest jeden3pod drugim numerem (382) i jeden8pod drugim numerem (382). Więc drugie wyjście to2.- ...
228: To pozytywne, więc naprzód. Istnieją trzy2„sw innych numerów (28,-28,-2), a kolejne trzy2” s, a dwa8„s w innych liczb (28,-28). Więc ten wynik to8.- itp.
Zasady konkursu:
- Możesz założyć, że dane wejściowe nigdy nie będą zawierać
0jako element, ponieważ nie są ani dodatnie, ani ujemne. - Możesz założyć, że lista wejściowa zawsze będzie zawierać co najmniej dwa elementy.
- I / O jest elastyczny. Dane wejściowe / wyjściowe mogą być tablicą / listą liczb całkowitych, ciągiem rozdzielanym, matrycą cyfr / znaków itp.
- Jeśli pierwsza liczba na liście jest liczbą ujemną lub ostatnia liczba na liście jest liczbą dodatnią, będzie to 0 na wynikowej liście.
- W przypadku list nieparzystych liczby zawierające tę samą cyfrę wiele razy są liczone wiele razy, podobnie jak
228w powyższym nieparzystym przykładzie, w którym8zamiast (3 + 3 + 2) zamiast5(3 + 2).
Główne zasady:
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Nie pozwól, aby języki kod-golfowe zniechęcały Cię do publikowania odpowiedzi w językach niekodujących golfa. Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania. - Do odpowiedzi mają zastosowanie standardowe reguły , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami i zwracanymi typami, pełnych programów. Twoja decyzja.
- Domyślne luki są zabronione.
- Jeśli to możliwe, dodaj link z testem swojego kodu.
- W razie potrzeby dodaj również wyjaśnienie.
Przypadki testowe:
Input: [4, 10, 42, -10, -942, 8374, 728, -200]
Output: [3, 2, 4, 1, 2, 1, 1, 5 ]
Input: [382, -82, -8, 381, 228, 28, 100, -28, -2]
Output: [13, 2, 2, 4, 8, 3, 0, 11, 6 ]
Input: [10, -11, 12, -13, 14, -15, 16, -17, 18, -19]
Output: [9, 1, 7, 3, 5, 5, 3, 7, 1, 9 ]
Input: [10, -11, 12, -13, 14, -15, 16, -17, 18, -19, 20]
Output: [11, 2, 8, 4, 5, 6, 3, 8, 1, 10, 0 ]
Input: [88, 492, -938, 2747, 828, 84710, -29, -90, -37791]
Output: [8, 9, 3, 9, 3, 4, 5, 4, 12 ]
Input: [-1, 11, 11, 1]
Output: [0, 2, 1, 0]
Input: [1, 11, 11, -1]
Output: [3, 2, 1, 3 ]
Input: [-1, 11, 1]
Output: [0, 2, 0]
Input: [1, 11, -1]
Output: [3, 2, 3 ]
δ¢, nigdy nie widziałem dobrze używanego podwójnego wektora, ładny.