Escreva um programa que pega uma string e gera todos os caracteres em ordem alfabética. Os espaços e símbolos podem ser ignorados ou excluídos, mas as letras maiúsculas e minúsculas devem permanecer no mesmo caso.
Entrada de amostra:
Johnny walked the dog to the park.
Saída de amostra
aaddeeeghhhJklnnoooprtttwy
Regras:
• Qualquer língua
• O código mais curto vence.
Spaces and symbols can be ignored or deleted
, isso significa que deve ser ignorado; ou a saída é, .aaddeeeff
permitida?k
s na saída?Respostas:
MathGolf , 2 bytes
Experimente online!
Saída de exemplo
Removendo caracteres não alfabéticos
Para remover todos os caracteres não alfabéticos, esta solução funciona:
É o mesmo que o código acima, seguido por uma filtragem em que cada caractere é dobrado primeiro e depois comparado sua própria capitalização. Por exemplo, a cadeia de caracteres
"a"
é convertida"aa"
e, em seguida, capitalizada para"Aa"
, o que não é igual a"aa"
. Da mesma forma, a sequência"B"
é convertida"BB"
e maiúscula em"Bb"
, o que não é igual a"BB"
. No entanto,"."
é convertido".."
e inalterado quando em maiúscula, para que seja filtrado.Explicação
Eu realmente preciso de mais manipulação de strings no MathGolf ... No momento, não há nem mesmo um operador para converter em letras minúsculas / maiúsculas. A única coisa que eu poderia usar era o operador de capitalização, que funciona como um operador em maiúsculas para cadeias de comprimento 1. Essa solução também classifica caracteres não alfabéticos, mas esses podem ser ignorados. Os caracteres alfabéticos preservam suas letras maiúsculas e minúsculas e são exibidos na ordem correta.
fonte
GolfScript, 24/6 caracteres
Exemplo:
Se a entrada for restrita a ascii imprimível, o código poderá ser reduzido por três caracteres usando
{95&.64>\91<&},
como filtro.Pode ser testado aqui .
A versão pode ser ignorada é ainda mais curta (6 caracteres):
e produz saída
fonte
{}$
{}$
seria equivalente a$
.Utilitários principais GNU - 25 caracteres (29 símbolos descartados)
Exemplo (do GNU bash 3):
Da pergunta:
Eu escolhi deixá-los dentro! Para reter apenas caracteres alfabéticos, substitua
fold -1
comgrep -o \\w
a +4 caracteres.Graças à Firefly para recomendar
grep -o
maissed
, e Wumpus parafold -1
. ;-)fonte
-f
(dobrar)sort
para ignorar maiúsculas e minúsculas.C, 121
Isso é bastante longo comparado a outras entradas, mas não depende de nenhuma classificação interna ou das funções do ToLower:
Versão mais legível:
Esta é uma implementação de classificação por inserção com uma comparação sem distinção entre maiúsculas e minúsculas entre elementos (usando a
|32
operação bit a bit). Isso ocorre porque na codificação ASCII letras maiúsculas e minúsculas diferem apenas pelos 2 5 bits.fonte
Ruby - 33 Chars
fonte
*""
vez de.join
.p
, mas isso é questionável, então useputs
. Além disso,$<
é um atalho para ARGF$><<
vez deputs
pois o espaço de separação pode ser removido.PowerShell: 39
Resultado
C #: 100
Resultado
fonte
ToCharArray
;String
implementaIEnumerable<char>
sal
, acho que você não pode usar isso. Mas, você pode se livrar da atribuição de variável com"$([string[]][char[]](Read-Host)|sort)"
.APL 16
fonte
Perl6: 26 caracteres
Classifica a saída em maiúscula primeiro e, em seguida, em minúscula, exclui símbolos / espaço em branco
Se espaços em branco / símbolos na saída também puderem ser ignorados, são apenas 21 caracteres.
Isso classifica sem distinção entre maiúsculas e minúsculas, mantém símbolos (26 caracteres)
fonte
Perl 34
Agora recebe entrada de
STDIN
.Perl 18
Se a saída incluindo maiúsculas e símbolos incluídos for aceitável:
fonte
Haskell, 88
(38 sem importações da lib padrão)
fonte
k (
109)Lê a partir de stdin
Exemplo
fonte
C #: 83
Atualização: 65
Executável no LinQPad
fonte
Python 3: 45
fonte
J, 12 caracteres
Ignora qualquer caractere não alfa.
fonte
f=.
ou você quer que eu adicione o1!:1[1
?1!:1[1
eecho
agradarecho
?Javascript - 74
Infelizmente, devido à maneira como o JS classifica os caracteres, não podemos usar a função de classificação padrão:
Na verdade, isso pode ser reduzido para:
fonte
F # (
6856)Estou aprendendo F #, então tenho certeza que isso pode ser mais curto:
Resultado:
fonte
PHP, 50 bytes
não remove não letras, recebe informações do STDIN; corra com
-R
.fonte
R, 48 caracteres
Exemplo de uso:
fonte
q / k4 (3? 5? 8?)
se for suficiente inserir o código e a entrada diretamente no REPL, é apenas
asc
:o
`s#
é pouco de notação q que indica que a corda está em ordem de classificação (pode ser binário procurou, etc.). se for necessário, isso custa dois caracteres, perfazendo cinco:se você quiser que ele seja fornecido no stdin, é hora de mudar para o k4 (e nos livramos dele de
`s#
graça), e é uma solução de oito caracteres:aquele, btw, funcionará como um arquivo de código exatamente como está (ainda com oito caracteres, pois q é bom por não ter a nova linha final em um arquivo de código). normalmente, haveria problemas com um banner de boas-vindas e com o REPL aberto, mas se você passar a entrada como herestring, tudo isso desaparecerá:
não tenho certeza de onde vem essa nova linha extra na saída ....
fonte
Geléia, 3 bytes
Minha primeira solução Jelly neste site! Obrigado a @LeakyNun e @ErikTheOutgolfer por me ensinarem como usar Jelly e @Dennis para fazê-lo! : D
Explicação
Como alternativa,
ŒuÞ
faz exatamente a mesma coisa, exceto convertendo para maiúsculas.fonte
Powrshell, 36 bytes
Script de teste:
Resultado:
fonte
05AB1E , 3 bytes
Experimente online .
Explicação:
fonte
Java 10, 72 bytes (como função lambda)
Experimente online.
Mas já que é um desafio antigo afirmar o programa completo:
Java 10, 126 bytes (como programa completo)
Experimente online.
Explicação:
fonte