Entrada:
Uma lista de números inteiros (que nunca conterão zero)
Resultado:
Uma lista do mesmo tamanho com contagens baseadas no seguinte:
- Se o item atual for negativo: verifique todos os itens anteriores a esse item e conte quantas vezes os dígitos ocorreram nesses outros números
- Se o item atual for positivo: verifique todos os itens após esse item e conte quantas vezes o dígito ocorreu nesses outros números
Há uma reviravolta: se o tamanho da lista for uniforme, contamos todos os números apenas uma vez (mesmo que corresponda a vários dígitos) e, se o tamanho for ímpar, contamos todos os dígitos dos números de cada dígito do item atual (duplicado dígitos são contados várias vezes).
Vamos dar alguns exemplos para esclarecer um pouco isso:
Exemplo com lista par:
Input: [4, 10, 42, -10, -942, 8374, 728, -200]
Output: [3, 2, 4, 1, 2, 1, 1, 5 ]
O tamanho da lista é par ; portanto, contamos apenas cada número uma vez.
4: É positivo, então estamos ansiosos. Existem três números dígitos contendo o4(42,-942,8374). Então começamos com a3.10: É positivo, então estamos ansiosos. Existem dois números que contêm o dígito1e / ou0(-10,-200). Então a segunda saída é2.42: Mais uma vez positivo, tão para a frente. Existem quatro números contendo quer o dígito4e / ou2(-942,8374,728,-200). Então a terceira saída é4.-10: Desta vez é negativo, então olhamos para trás. Existe apenas um número que contém o dígito1e / ou0(ignoramos o sinal de menos) (10). Então a quarta saída é1.- etc.
Exemplo com lista ímpar:
Input: [382, -82, -8, 381, 228, 28, 100, -28, -2]
Output: [13, 2, 2, 4, 8, 3, 0, 11, 6 ]
O tamanho da lista é ímpar , por isso contamos todos os dígitos.
382: É positivo, então estamos ansiosos. Há um3nos outros números (381), seis8nos outros números (-82, -8, 381, 228, 28, -28) e seis2nos outros números (-82, 228, 28, -28, 2). Então começamos com a13.-82: É negativo, então para trás. Há um3no outro número (382) e um8no outro número (382). Então a segunda saída é2.- ...
228: É positivo, tão para a frente. Existem três2's nos outros números (28,-28,-2), e outras três2' s, e duas8's nos outros números (28,-28). Então essa saída é8.- etc.
Regras do desafio:
- Você pode assumir que a entrada nunca conterá
0como item, pois não é positiva nem negativa. - Você pode assumir que a lista de entrada sempre conterá pelo menos dois itens.
- A E / S é flexível. A entrada / saída pode ser uma matriz / lista de números inteiros, sequência delimitada, matriz de dígitos / caracteres, etc.
- Se o primeiro número da lista for um número negativo ou o último número da lista for um número positivo, será 0 na lista resultante.
- Com listas ímpares, os números que contêm o mesmo dígito várias vezes são contados várias vezes, como
228no exemplo ímpar acima, resultando em8(3 + 3 + 2) em vez de5(3 + 2).
Regras gerais:
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação. - As regras padrão se aplicam à sua resposta, para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados e programas completos do tipo retorno. Sua chamada.
- As brechas padrão são proibidas.
- Se possível, adicione um link com um teste para o seu código.
- Além disso, adicione uma explicação, se necessário.
Casos de teste:
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 ]
δ¢, nunca vi vetor duplo usado bem, bom.