Eu tenho uma lista de dígitos decimais:
4, 4, 4, 7, 7, 9, 9, 9, 9, 2, 2, 2, 4, 4
A lista de dígitos decimais é conhecida como itens. Podemos formar "pedaços" desses itens agrupando números idênticos e adjacentes. Desejo atribuir a cada bloco um número único, iniciando em 1 e aumentando em 1 na ordem em que os blocos aparecem na lista original. Portanto, a saída para o exemplo fornecido ficaria assim:
1, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5
Formato de entrada
Uma lista de dígitos. (0-9) Você pode usar os idiomas internos para ler esta lista da maneira que desejar. Codificação: ASCII
Formato de saída
Uma série de números decimais, separados por um delimitador. Seu programa sempre deve usar o mesmo delimitador. O delimitador deve ter mais de 0 bits. Codificação: ASCII
Aplicam-se brechas padrão.
fonte
You may use your language built-ins to read this list however you want.
. Isso significa que precisamos incluir uma string para listar o conversor em nossa submissão? E são nós permissão para saída como uma lista?Respostas:
Python 3.8 (pré-lançamento) , 41 bytes
Experimente online!
Elogie a morsa mágica
:=
das expressões de atribuição.Python 2 , 42 bytes
Experimente online!
fonte
id
porque tem 2 bytes de comprimento ...id
Python 2 , 44 bytes
Experimente online!
fonte
APL (dzaima / APL) , SBCS de 7 bytes
Função de prefixo tácito anônimo. Imprime com espaço separado.
Experimente online!
2≠/
desigualdade em pares1,
anexar 1+\
soma acumuladafonte
Geléia ,
65 bytesExperimente online!
Salvo um byte graças a UnrelatedString !
Entradas e saídas como array (com colchetes de abertura / fechamento)
Como funciona
fonte
Wolfram Language (Mathematica) , 29 bytes
Experimente online!
fonte
05AB1E , 5 bytes
Experimente online!
fonte
¥Ā
também pode serüÊ
.Haskell , 40 bytes
Experimente online!
fonte
Perl 6 , 21 bytes
Experimente online!
Bloco de código anônimo que pega uma lista e retorna uma lista. Isso funciona comparando se cada par de elementos adjacentes não é igual, do que obtendo a soma acumulada da lista.
fonte
05AB1E , 4 bytes
Experimente online!
fonte
ƶ
... +1ηεγg
R , 33 bytes
Experimente online!
Usa o mesmo método de soma acumulada que Luis Mendo e outros.
fonte
MATL , 8 bytes
Experimente online!
Explicação:
fonte
Gelatina , 4 bytes
Experimente online!
Quão?
fonte
Oitava / MATLAB, 25 bytes
Experimente online!
fonte
Haskell ,
4643 bytesExperimente online!
Função pointfree anônima que pega uma lista e retorna uma lista
fonte
J , 12 bytes
Experimente online!
Semelhante à resposta do Adám no APL
fonte
Perl 5 , 27 bytes
Experimente online!
A opção de linha de comando
-p
faz com que o perl leia a linha de entrada de STDIN na "variável padrão"$_
. Em seguida, a pesquisa substitui todos os dígitos$_
pelo contador$i
. E$i
é aumentado para cada dígito diferente do dígito anterior, que também está no primeiro dígito, portanto o contador inicia em1
. O dígito anterior é armazenado em$p
.fonte
Pitão ,
1311 bytesExperimente online!
-2 bytes graças ao Sr. Xcoder
fonte
hMsM._+0nVt
para -2 bytes.rQ8
é o mesmo quer8
e.n
pode sers
de -2 bemQ
Scala , 75 bytes
Experimente online!
Se a entrada e a saída tiverem de ser separadas por vírgula, a sequência (e não a lista) será 102 bytes.
fonte
Gelatina , 5 bytes
Experimente online!
Inicialmente, eu tinha como objetivo um 4-byter (o mesmo programa, mas sem o
Ż
), mas logo percebi que um 1 tinha que ser anexado todas as vezes devido a uma supervisão ... Mesmo que haja outro 5-byter em Jelly, eu vou Na verdade, mantenha isso porque ele usa um método diferente.fonte
JavaScript (ES6), 30 bytes
Recebe a entrada como uma matriz de números inteiros.
Experimente online!
Comentado
fonte
PHP , 52 bytes
Experimente online!
Entrada via linha de comando, saída para
STDOUT
.Thx para @ Night2 para o traquina
'0' == 0
correção de comparação !fonte
Julia 1.0 , 56 bytes
Experimente online!
fonte
Japt v2.0a0, 9 bytes
Tente
fonte
Adicionar ++ , 23 bytes
Experimente online!
Como funciona
fonte
Japonês ,
87 bytesTente
fonte
Retina 0.8.2 , 34 bytes
Experimente online! Explicação:
Combine cada número por vez.
Comece olhando para trás o maior número possível de correspondências. (As próximas entradas serão na ordem da direita para a esquerda, pois é assim que o lookbehind funciona.)
Pule os separadores.
Tente corresponder ao mesmo número da última vez, mas, na sua falta, basta corresponder a qualquer número, mas lembre-se de que tivemos que corresponder a um novo número.
Verifique se o número inteiro é correspondido.
Conte o número de novos números.
fonte
Stax , 10 bytes
Execute e depure
A saída usa o espaço como um delimitador. A entrada segue as especificações precisas usando vírgulas como separadores e agora incluindo chaves.
fonte
C (gcc) ,
6261 bytesEsta é uma das poucas entradas que fiz quando um programa completo é mais curto que um envio de função!
Na primeira passagem, não me importo com o valor anterior, por isso confio no fato de que
argv
é um ponteiro para algum lugar e é extremamente improvável que esteja entre [0..9]!Experimente online!
fonte
Scala , 114 bytes
Experimente online!
fonte
C (gcc) , 62 bytes
Experimente online!
Uma função que leva a lista e seu comprimento como argumentos.
C (gcc) , 60 bytes
Experimente online!
Saídas em unário, delimitado por0
sfonte