Um parágrafo do texto possui números e letras alfabéticas misturadas. Sua tarefa é separar os números no lado esquerdo e as letras alfabéticas no lado direito na mesma ordem de cada linha.
Regras:
- Os números são inteiros simples; portanto, sem ponto decimal e sem sinais negativos / positivos.
- Os números podem ou não ser contíguos, mas seja qual for o caso, eles devem ser empurrados para o lado esquerdo na mesma ordem.
- Os números podem ocorrer entre as palavras.
- O texto contém apenas letras e números alfabéticos ASCII, juntamente com espaços, sublinhados, vírgulas e pontos.
- Quem faz isso com o mínimo de pressionamentos de tecla (como macros do vim) ou com a menor quantidade de bytes no caso de scripts é o vencedor.
Texto de exemplo:
A word can have any number of text like 433884,
but all the numb89ers has to be moved left side
but alph6abetical va9lues has to be pas46ted on right side.
The text might con4tain chara29cters s2huffled like hlep or dfeintino or even
meaningless1 words co43mbined togeth81er.
Saída esperada:
433884A word can have any number of text like ,
89but all the numbers has to be moved left side
6946but alphabetical values has to be pasted on right side.
4292The text might contain characters shuffled like hlep or dfeintino or even
14381meaningless words combined together.
Respostas:
Retina , 14 bytes
Experimente online!
Explicação
O
introduz um estágio de classificação.%
diz à Retina para aplicar a transformação a cada linha separadamente.$
diz para ordenar as correspondências pelo resultado da substituição especificada.A regex em si é a
\d|(.)
que corresponde a um dígito ou a qualquer outra coisa capturada no grupo1
. Isso é substituído pelo$#1
qual é o número de capturas do grupo1
. Ou seja, a chave de classificação para dígitos é0
e a chave de classificação para todo o resto é1
. Como a classificação na Retina é estável, isso simplesmente move os dígitos para a esquerda e todo o resto para a direita.fonte
05AB1E,
1410 bytesCódigo:
Explicação:
Exemplo de entrada:
Saída de exemplo:
Experimente online
fonte
Python 3, 64 bytes
Três soluções equivalentes! Eu não posso escolher.
fonte
while 1:print(*sorted(input(),key=lambda x:-('/'<x<':')),sep='')
Perl, 17 bytes
Código de 16 bytes + 1 opção
Requer
-p
.Uso
Alternativamente:
Requer
-n
.Uso
fonte
Hoon ,
9283 bytes++lore
divide um cabo de várias linhas em um(list cord)
e o(trip +<)
transforma em fita.++skid
separa uma lista em dois: um lado em que a função retorna sim, um lado em que retorna não. Nossa função tenta analisar o caractere com++nud
(numérico) e verifica se ele analisa completamente, e depois juntamos as duas listas novamente em uma fita.fonte
MATL ,
1312 bytesSai com um erro (permitido por padrão), produzindo a saída correta.
Experimente online!
Explicação
fonte
V, 12 bytes
V, é uma linguagem de golfe inacabada, baseada em cordas 2D. Embora esteja inacabado, este programa funciona a partir do commit 45 , que foi publicado ontem à noite, tornando-o uma resposta competitiva. (A maioria das minhas respostas V anteriores não era competitiva.)
Observe que a nova linha à direita é necessária, embora isso ocorra devido a um erro.
Experimente online!
Explicação:
¨Ä©¨ä©/²±
expande para o vim regex:que é um não dígito
(\D)
seguido por um dígito(\d)
e troque-os.Como isso é preenchido com caracteres unicode brutos, aqui está um hexdump reversível:
fonte
Javascript ES6, 40 bytes
a=>a.replace(/\D/g,'')+a.replace(/\d/g,'')
Tentei várias outras soluções, mas não conseguiu reduzi-lo a isso.
Minha primeira tentativa foi
a=>[...a.match(/\d/g),...a.match(/\D/g)].join``
mas são 5 bytes mais longosExperimente aqui
Mostrar snippet de código
fonte
CJam,
91316 bytesNão tem
f$
...Esta versão de 13 bytes quase funciona:
fonte
PowerShell v2 +, 55 bytes
Devido à necessidade de oferecer suporte a entrada de várias linhas, precisamos encapsular nossas
-replace
declarações com um loop e-split
em novas linhas. Caso contrário, basicamente equivalente à solução JavaScript .fonte
Pitão - 11 bytes
Não gostei do meu teste de agrupamento. Aceita entrada como lista de linhas, me diga se não está ok.
Experimente online aqui .
fonte
Pyth,
1615 bytes1 byte graças a @FryAmTheEggman .
Experimente online!
Entrada de amostra:
Saída de amostra:
Como funciona
fonte
U
porque os mapas convertem automaticamente números inteiros em intervalos.Retina, 16 bytes
Classificação de bolha estável.
Entrada de amostra:
Saída de amostra:
Experimente online!
fonte
C #, 59 bytes
Uma função lambda C # simples usando regex.
Saída de amostra
fonte
C # (LINQ), 110 bytes
Não é a solução mais curta, de longe, mas achei que esse seria um bom uso do LINQ.
fonte
char.IsDigit
existia ...Fator 61
É uma abordagem ingênua.
"\n"split
divide a string no topo da pilha em linhas. Então, para aeach
linha:[ digit? ] partition
divide cada linha em somente dígitos e não somente dígitos[ write ] bi@
produz ambos enl
imprime uma nova linha.PS:
Como uma palavra 90 bytes (71 se você substituir o nome longo do fator por uma letra):
fonte
Pitão, 14 bytes
Experimente online!
Explicação:
A lógica da solução é a mesma da resposta de Lynn .
fonte
Java 8,
13012686 bytes-4 bytes convertendo Java 7 a 8 e removendo um programa não utilizado de
conversão de caracteres -40 bytes para funcionar e alterando
[^\\d]
para\\D
Explicação:
Experimente aqui.
fonte
GNU Sed, 28
A pontuação inclui +1 para a
-r
opção sed.Alterna repetidamente um caractere não numérico seguido de um caractere numérico até que não sejam feitas mais substituições.
Infelizmente, os regexes sed não têm
\d
ou\D
, portanto, esses devem ser redigidos à mão.Ideone.
fonte
Oitava,
3732 bytesfonte
Clojure, 113 bytes
Classifica os dígitos no início da linha.
fonte
Oracle SQL 11.2, 131 bytes
As linhas na sequência de entrada são separadas por '¤'. Dessa forma, não é necessário criar uma tabela para usar como entrada.
Inquerir :
Sem golfe
fonte
APL, 28 caracteres
fonte
Haskell, 60 bytes
Uso
fonte
Sed, 35 bytes
Isso faz uma cópia da linha, remove os dígitos de uma cópia e as letras da outra, antes de recombiná-las.
fonte
Bash, 42 bytes
Esteja avisado de que essa implementação recursiva bifurca um novo processo para cada linha de entrada!
fonte
Japonês v2 ,
1412 bytes-2 bytes graças a ETHproductions
Executá-lo
fonte
Julia 0,6 , 77 bytes
Função anônima pegando uma string e imprimindo a saída. Faz um loop sobre os caracteres, adicionando-os aos buffers esquerdo
l
ou direitor
até encontrar uma nova linha, depois imprime e esvazia os buffers. Muitas construções úteis em potencialsort
, como ,filter
e a indexação lógica (indexação com uma matriz de valores booleanos) não funcionam em Strings.Experimente online!
fonte
Vim, 30 pressionamentos de tecla
Grave uma pesquisa e substitua a ação que move os dígitos à esquerda dos que não são dígitos. Chame a macro recursivamente até que uma exceção seja lançada pelo padrão não encontrado (quando não houver mais dígitos à direita de nenhum outro dígito).
fonte
C (gcc) , 106 bytes
Experimente online!
fonte