Los números unarios generalmente solo representan enteros no negativos, pero podemos extenderlos para representar todos los enteros de la siguiente manera:
- Un entero positivo N se representa como N
1
's:5 -> 11111
- Un entero negativo -N se representa como
0
seguido por N1
's:-5 -> 011111
- Cero se representa como
0
Entonces podemos representar una lista de estos números sin ambigüedades si usamos 0
como separador:
3,-2,0,1
111,011,0,1
111 0 011 0 0 0 1
11100110001
Su tarea: tomar una cadena que represente dicha lista de números unarios con signo y traducirla en una lista de números decimales.
Detalles
Puede suponer que la entrada es una lista completa de números unarios con signo. En particular, su programa no tendrá que manejar 1) entrada vacía o 2) entrada que termina con un separador.
Puede suponer que la magnitud de cada número no excederá 127. Para los idiomas con tamaños máximos de cadenas o listas, puede suponer que la entrada y la salida encajarán en las estructuras de datos de su idioma, pero su algoritmo debería funcionar teóricamente para una lista de cualquier tamaño.
Su programa o función puede realizar E / S de cualquiera de las formas estándar . La entrada puede ser una cadena o una lista de caracteres, cadenas de un solo carácter, enteros o booleanos. Puede usar cualquiera de los dos caracteres para representar 1
y 0
; si no usa 1
y 0
, especifique qué caracteres está usando.
La salida debe ser números decimales en cualquier formato de lista razonable (en particular, debe haber algún tipo de separador entre números). Los números negativos deben indicarse con un signo menos, aunque si su idioma tiene un formato diferente para enteros negativos, también lo aceptaré. Cero puede representarse en la salida como 0
o -0
.
Casos de prueba
1 -> 1
0 -> 0 (or -0, and similarly for the other test cases)
011 -> -2
1101 -> 2,1
1100 -> 2,0
11001 -> 2,-1
110001 -> 2,0,1
11100110001 -> 3,-2,0,1
00000001 -> 0,0,0,-1
01111011111111001111111111111110111111111111111100111111111111111111111110111111111111111111111111111111111111111111 -> -4,8,-15,16,-23,42
01111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 -> -127
0
) y el prefijo de signo negativo ( 0
) son iguales, aunque todavía no es ambiguo, ya que no puede tener signos negativos en el medio de un número (¿es 182--693-1
un número? No, y tampoco lo es 1111011000101111
exactamente por la misma razón).
'0's
, no es técnicamente unario. Buen desafío sin embargo!