Entrada:
Una lista de enteros (que nunca contendrá un cero)
Salida:
Una lista del mismo tamaño con recuentos basada en lo siguiente:
- Si el elemento actual es negativo: mire todos los elementos antes de este elemento y cuente cuántas veces ocurrieron los dígitos en esos otros números
- Si el elemento actual es positivo en su lugar: mire todos los elementos después de este elemento y cuente cuántas veces se produjo el dígito en esos otros números
Hay un giro: si el tamaño de la lista es par, solo contamos cada número una vez (incluso si coincide con varios dígitos), y si el tamaño es impar, contamos cada dígito de los números para cada dígito del elemento actual (duplicado los dígitos se cuentan varias veces).
Veamos algunos ejemplos para aclarar esto un poco:
Ejemplo con lista par:
Input: [4, 10, 42, -10, -942, 8374, 728, -200]
Output: [3, 2, 4, 1, 2, 1, 1, 5 ]
El tamaño de la lista es par , por lo que solo contamos cada número una vez.
4: Es positivo, así que esperamos. Hay tres números que contienen el dígito4(42,-942,8374). Entonces comenzamos con a3.10: Es positivo, así que esperamos. Hay dos números que contienen el dígito1y / o0(-10,-200). Entonces la segunda salida es2.42: De nuevo positivo, muy adelante. Hay cuatro números que contienen o bien el dígito4y / o2(-942,8374,728,-200). Entonces la tercera salida es4.-10: Esta vez es negativo, así que miramos hacia atrás. Solo hay un número que contiene el dígito1y / o0(ignoramos el signo menos) (10). Entonces la cuarta salida es1.- etc.
Ejemplo con lista impar:
Input: [382, -82, -8, 381, 228, 28, 100, -28, -2]
Output: [13, 2, 2, 4, 8, 3, 0, 11, 6 ]
El tamaño de la lista es impar , por lo que contamos cada dígito.
382: Es positivo, así que esperamos. Hay uno3en los otros números (381), seis8en los otros números (-82, -8, 381, 228, 28, -28) y seis2en los otros números (-82, 228, 28, -28, 2). Entonces comenzamos con a13.-82: Es negativo, así que al revés. Hay uno3en el otro número (382) y uno8en el otro número (382). Entonces la segunda salida es2.- ...
228: Es positivo, muy adelante. Hay tres2que está en los otros números (28,-28,-2), y otros tres2's, y dos8que está en los otros números (28,-28). Entonces esta salida es8.- etc.
Reglas de desafío:
- Puede suponer que la entrada nunca contendrá
0como elemento, ya que no es ni positiva ni negativa. - Puede suponer que la lista de entrada siempre contendrá al menos dos elementos.
- I / O es flexible. La entrada / salida puede ser una matriz / lista de enteros, una cadena delimitada, una matriz de dígitos / caracteres, etc.
- Si el primer número en la lista es un número negativo, o el último número en la lista es un número positivo, será 0 en la lista resultante.
- Con listas impares, los números que contienen el mismo dígito varias veces se cuentan varias veces, como
228en el ejemplo impar anterior que da como resultado8(3 + 3 + 2) en lugar de5(3 + 2).
Reglas generales:
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
No permita que los lenguajes de code-golf lo desanimen a publicar respuestas con lenguajes que no sean codegolf. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación. - Se aplican reglas estándar para su respuesta, por lo que puede usar STDIN / STDOUT, funciones / método con los parámetros adecuados y programas completos de tipo retorno. Tu llamada.
- Las lagunas predeterminadas están prohibidas.
- Si es posible, agregue un enlace con una prueba para su código.
- Además, agregue una explicación si es necesario.
Casos de prueba:
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 visto el doble vector usado bien, bonito.Python 2 ,
149148121116111107 bytesPruébalo en línea!
fuente
Java (JDK 10) , 204 bytes
Pruébalo en línea!
Créditos
fuente
[1,11,-1]Debería volver[3,2,3]. Es una lista extraña, por lo que todos los dígitos cuentan. Primero1: mirar hacia adelante, tres1s en total:11,-1. Segundo11: mira hacia adelante para cada dígito: uno1+ uno1. Tercero-1: Mire hacia atrás, tres1s en total:-1,11. (Con las listas impares usted debe buscar en cada dígito, incluso el mismo Voy a aclarar esto en el desafío, pero el ejemplo extraña con el número.228Aclara esto un poco.),ty cambiandoi+(a[i]>0?1:-1)ai+(t=a[i]>0?1:-1), y luego simplemente utilizoj+=ten lugar dej+=a[i]>0?1:-1.Perl 6 ,
10085 bytesPruébalo en línea!
Utiliza el operador de multiplicación holgado ⊍.
fuente
Perl 5
-n, 92 bytesPruébalo en línea!
fuente
JavaScript (Node.js) ,
164,158,140139 bytesPruébalo en línea!
fuente
Ruby , 126 bytes
Pruébalo en línea!
fuente
Jalea ,
4342 bytesPruébalo en línea!
fuente