Tengo una lista de dígitos decimales:
4, 4, 4, 7, 7, 9, 9, 9, 9, 2, 2, 2, 4, 4
La lista de dígitos decimales se conoce como elementos. Podemos formar "fragmentos" a partir de estos elementos agrupando números idénticos y adyacentes. Quiero asignar a cada fragmento un número único, comenzando desde 1, y aumentando en 1 en el orden en que aparecen los fragmentos en la lista original. Entonces, la salida para el ejemplo dado se vería así:
1, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5
Formato de entrada
Una lista de dígitos. (0-9) Puede usar sus idiomas incorporados para leer esta lista como quiera. Codificación: ASCII
Formato de salida
Una serie de números decimales, separados por un delimitador. Su programa siempre debe usar el mismo delimitador. El delimitador debe ser más largo que 0 bits. Codificación: ASCII
Se aplican lagunas estándar.
fuente
You may use your language built-ins to read this list however you want.
. ¿Eso significa que debemos incluir un convertidor de cadena a lista en nuestro envío? ¿Y se nos permite salir como una lista?Respuestas:
Python 3.8 (prelanzamiento) , 41 bytes
Pruébalo en línea!
Alabado sea la morsa mágica
:=
de las expresiones de asignación.Python 2 , 42 bytes
Pruébalo en línea!
fuente
id
porque tiene 2 bytes de largo ...id
Python 2 , 44 bytes
Pruébalo en línea!
fuente
APL (dzaima / APL) , SBCS de 7 bytes
Función de prefijo tácito anónimo. Imprime separados por espacios.
Pruébalo en línea!
2≠/
desigualdad por pares1,
anteponer 1+\
suma acumulativafuente
Jalea ,
65 bytesPruébalo en línea!
¡Guardado un byte gracias a UnrelatedString !
Entradas y salidas como matriz (con paréntesis de apertura / cierre)
Cómo funciona
fuente
Wolfram Language (Mathematica) , 29 bytes
Pruébalo en línea!
fuente
05AB1E , 5 bytes
Pruébalo en línea!
fuente
¥Ā
también podría serüÊ
.Haskell , 40 bytes
Pruébalo en línea!
fuente
Perl 6 , 21 bytes
Pruébalo en línea!
Bloque de código anónimo que toma una lista y devuelve una lista. Esto funciona al comparar si cada par de elementos adyacentes no son iguales, que tomar la suma acumulativa de la lista.
fuente
05AB1E , 4 bytes
Pruébalo en línea!
fuente
ƶ
... +1ηεγg
R , 33 bytes
Pruébalo en línea!
Utiliza el mismo método de suma acumulativa que Luis Mendo y otros.
fuente
MATL , 8 bytes
Pruébalo en línea!
Explicación:
fuente
Jalea , 4 bytes
Pruébalo en línea!
¿Cómo?
fuente
Octava / MATLAB, 25 bytes
Pruébalo en línea!
fuente
Haskell ,
4643 bytesPruébalo en línea!
Función anónima sin puntos que toma una lista y devuelve una lista
fuente
J , 12 bytes
Pruébalo en línea!
Similar a la respuesta APL de Adám
fuente
Perl 5 , 27 bytes
Pruébalo en línea!
La opción de línea de comando
-p
hace que Perl lea la línea de entrada de STDIN en la "variable predeterminada"$_
. Luego, la búsqueda reemplaza todos los dígitos$_
con el contador$i
. Y$i
se incrementa para cada dígito que es diferente del dígito anterior, que también está en el primer dígito, por lo que el contador comienza en1
. El dígito anterior se almacena en$p
.fuente
Pyth ,
1311 bytesPruébalo en línea!
-2 bytes gracias al Sr. Xcoder
fuente
hMsM._+0nVt
para -2 bytes.rQ8
es lo mismor8
y.n
puede sers
para -2 tambiénQ
Scala , 75 bytes
Pruébalo en línea!
Si la entrada y la salida deben estar separadas por comas String (y no List) entonces 102 bytes.
fuente
Jalea , 5 bytes
Pruébalo en línea!
Inicialmente apunté a un 4-byter (el mismo programa pero sin el
Ż
) pero luego me di cuenta rápidamente de que un 1 tenía que ser antepuesto cada vez debido a un descuido ... A pesar de que hay otro 5-byter en Jelly, voy a En realidad, guarde esto porque utiliza un método diferente.fuente
JavaScript (ES6), 30 bytes
Toma datos como una matriz de enteros.
Pruébalo en línea!
Comentado
fuente
PHP , 52 bytes
Pruébalo en línea!
Entrada a través de línea de comando, salida a
STDOUT
.Gracias a @ Night2 por la molesta corrección de errores de
'0' == 0
comparación.fuente
Julia 1.0 , 56 bytes
Pruébalo en línea!
fuente
Japt v2.0a0, 9 bytes
Intentalo
fuente
Agregar ++ , 23 bytes
Pruébalo en línea!
Cómo funciona
fuente
Japt ,
87 bytesIntentalo
fuente
Retina 0.8.2 , 34 bytes
Pruébalo en línea! Explicación:
Empareja cada número por turno.
Comienza a mirar hacia atrás en busca de la mayor cantidad de partidos posible. (Las siguientes entradas estarán en orden de derecha a izquierda, ya que así es como funciona mirar atrás).
Salta los separadores.
Intente hacer coincidir el mismo número que la última vez, pero si no lo hace, simplemente haga coincidir cualquier número, pero recuerde que teníamos que hacer coincidir un nuevo número.
Asegúrese de que el número entero coincida.
Cuenta el número de nuevos números.
fuente
Stax , 10 bytes
Ejecutar y depurarlo
La salida usa el espacio como delimitador. La entrada sigue las especificaciones precisas usando comas como separadores, y ahora encierra llaves.
fuente
C (gcc) ,
6261 bytes¡Esta es una de las pocas entradas que he hecho donde un programa completo es más corto que una presentación de función!
En la primera pasada, no me importa el valor anterior, ¡así que puedo confiar en el hecho de que
argv
es un puntero a algún lugar y es extremadamente improbable que esté entre [0..9]!Pruébalo en línea!
fuente
Scala , 114 bytes
Pruébalo en línea!
fuente
C (gcc) , 62 bytes
Pruébalo en línea!
Una función que toma la lista y su longitud como argumentos.
C (gcc) , 60 bytes
Pruébalo en línea!
Salidas en unario, delimitadas por0
sfuente