Não temos desafios suficientes (semi-) fáceis para iniciantes. Mais e mais dos mais fáceis já estão em uso. Então, tentei inventar algo que pode ser possível para iniciantes, mas isso não é uma duplicata.
Entrada:
Uma única sequência separada com a nova linha do sistema operacional (ou seja \r\n
)
ou uma matriz com várias seqüências.
Saída - As escadas :
Remova todos os símbolos não alfabéticos e não numéricos. Então, tudo o que resta é [A-Za-z0-9]
. E então 'construa uma escada'; basicamente ordenando-os em comprimento, com o menor no topo e o mais largo na parte inferior.
Regras do desafio:
- Quando duas cordas têm o mesmo comprimento, as mesclamos como uma grande (a ordem não importa, portanto pode ser do primeiro ao último ou do último ao primeiro, conforme o que você preferir).
- A regra acima pode ser empilhada quando as seqüências mescladas tiverem o mesmo comprimento novamente (consulte o caso de teste 2).
Regras gerais:
- A entrada é STDIN e contém apenas caracteres ASCII. E a saída é STDOUT.
- O caso da saída deve ser o mesmo da entrada.
Cada envio deve ser um programa completo capaz de compilar e executar, não apenas um método / função.EDIT: Eu sou bastante novo, então talvez seja realmente melhor usar o padrão a partir de agora, mesmo que eu prefira um programa completo. Desculpe por todos que já publicaram um programa completo. Sinta-se à vontade para editar e tentarei não alterar a publicação no meio do desafio na próxima vez.- Isso é código-golfe , então a resposta mais curta em bytes vence. Eu provavelmente aceito a resposta mais curta daqui a um ano.
Não permita que as respostas do code-golf desencorajem você a publicar idiomas não codegolfistas como o C # e similares! Tente encontrar a resposta mais curta para qualquer linguagem de programação. - Sinta-se livre para usar idiomas mais novos que esta pergunta.
Casos de teste:
Entrada 1:
This is a sample text,
that you will have to use to build stairs.
The wood may be of excellent quality,
or pretty crappy almost falling apart and filled with termites.
Bla bla bla - some more text
Ok, that will do
Saída 1:
Okthatwilldo
Thisisasampletext
Blablablasomemoretext
Thewoodmaybeofexcellentquality
thatyouwillhavetousetobuildstairs
orprettycrappyalmostfallingapartandfilledwithtermites
Entrada 2:
A
small
one
that
contains
equal
length
strings
for
the
special
rule
Saída 2:
A Or alternatively: A
length length
oneforthe theforone
smallequal equalsmall
stringsspecial specialstrings
thatrulecontains containsrulethat
Etapas explicadas em 2:
Primeira ordem no comprimento:
A
one
for
the
that
rule
small
equal
length
strings
special
contains
Primeira mesclagem:
A
oneforthe
thatrule
smallequal
length
stringsspecial
contains
Segunda ordem no comprimento:
A
length
thatrule
contains
oneforthe
smallequal
stringsspecial
Segunda mesclagem:
A
length
thatrulecontains
oneforthe
smallequal
stringsspecial
Terceira ordem no comprimento:
A
length
oneforthe
smallequal
stringsspecial
thatrulecontains
Entrada 3:
Test,
test.
This
is
a
test.
Saída 3:
a Or alternatively: a
is is
TesttestThistest testThistestTest
Entrada 4:
a
bc
d!
123
Saída 4:
123 Or alternatively: 123
adbc dabc
contains
não deveria estar na saída 2. Ele é mesclado comthatrule
Respostas:
Casca , 11 bytes
Experimente online!
Husk é mais jovem que esse desafio (que não faz diferença oficialmente, mas ainda assim).
Explicação
fonte
mf□
, você deve ficar com ciúmes. Quando "agrupar por comprimento" éġL
, você deve se surpreender.Python 3, 264 bytes
Eu não sou bom em código de golfe, então estou confiante de que essa não será a melhor resposta para Python 3. Isso usa recursão e um ditado ordenado com todas as palavras para cada comprimento.
Recebe a entrada do stdin como uma lista, por exemplo, teste-a com esta lista:
Saída:
fonte
filter(str.isalnum, l)
em vez da"".join
parteRetina,
6963 bytesExperimente online!
fonte
[^\w¶]|_
. Embora eu ainda não tenha certeza de que é o ideal.Oracle SQL 11.2, 346 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
[\W_]
0-9
por\d
. Talvez as regras regex sejam diferentes no sql do que no python / php / javascript? (js ainda é um caso especial por causa de visões traseiras)Haskell, 129 bytes
Aceita e imprime uma matriz de seqüências de caracteres. Se o resultado puder ser retornado da função (ao contrário de impresso em stdout), você poderá omitir
print.
e salvar 6 bytes.Como funciona (observe, eu uso
x
o parâmetro de entrada que, obviamente, não aparece na versão sem ponto acima):fonte
Python 3,
184180 bytesUma função que recebe entrada, por argumento, como uma lista de seqüências de caracteres e imprime o resultado em STDOUT. A execução gera um erro (devido ao uso do operador + antes da instrução print), mas não antes da impressão ter sido impressa.
Como funciona
Experimente no Ideone
fonte
J , 48 bytes
Experimente online!
destroçado
explicação
(#~e.&AlphaNum_j_)&.>
remover não alfano(#&> ,&.>//. ])
combinar itens do mesmo comprimento^:_
continue combinando até que pare de mudar(/: #&>)
classificar por comprimentofonte
Javascript
198188186179 bytesEste é o meu segundo programa javascript mais antigo
Provavelmente pode ser jogado ainda mais
fonte
t
variável?.split()
você pode usar[y]()
Perl 5 , 112 bytes
Experimente online!
fonte
Geléia , 17 bytes
Experimente online!
Não sei por
Ẏf¥€ØWṖ¤L€ĠịµÐLY
que não funciona ...Explicação:
fonte
Pitão, 22 bytes
Experimente aqui.
Explicação:
fonte
Pitão, 39 bytes
Voltar ao golfe!
Existe o programa:
Teste aqui!
Explicações
fonte
R
e emL
vez dem
Java 8, 268 bytes
Um lambda vazio aceitando um mutável
List<String>
(ou seja, implementaadd
eremove
; por exemploArrayList
). A saída é impressa com saída padrão, delimitada por nova linha, com uma nova linha à direita. Transmitir paraConsumer<List<String>>
.Experimente Online
Isso acabou sendo muito mais longo do que eu esperava. Como Kevin observou, é mais complicado do que parece à primeira vista.
Lambda ungolfed
Primeiro, reduzo a entrada para letras e números. Depois, processo as entradas em grupos por comprimento. Anexo itens ao primeiro da lista até que o próximo tamanho seja atingido, removendo-os à medida que avanço. Se apenas o primeiro elemento foi usado, essa será a única sequência desse comprimento, portanto será impressa. Caso contrário, a cadeia associada será adicionada à lista para outra iteração. Classifico a lista pelo tamanho de cada iteração antes do uso.
Comecei com uma solução adorável que usava uma fila de prioridade para acompanhar as seqüências intermediárias. Infelizmente,
java.util.PriorityQueue<String>
é bastante longo (e o uso do tipo bruto era mais longo), portanto, teve que ir.fonte
Japt v2.0a1
-h
, 11 bytesEntrada e saída como matrizes de strings.
Tente
fonte
[a-zA-Z0-9]
vez de[a-zA-Z]
).JavaScript, 119 bytes
Eu sinto que isso deve ser muito mais curto ...
Inclui 2 novas linhas principais na saída.
Experimente online
fonte
g
para 118Perl 6 , 85 bytes
Experimente online!
Entradas e saídas como listas de strings.
fonte
Pitão, 21 bytes
Entrada é uma lista de cadeias. Experimente online aqui ou verifique todos os casos de teste aqui .
fonte
05AB1E , 16 bytes
Entrada como uma lista de strings.
Experimente online ou verifique todos os casos de teste .
Poderia ter 14 bytes com
εžKÃ}Δé.γg}J}»
ifΔ
também funcionaria com uma lista de strings.Explicação:
fonte
Powershell, Windows 10, 63 bytes
Então insira ...
e código ...
Que abrange entrada / saída 1, trabalhando em 2 e 3 ...
fonte