Dada uma sequência de caracteres alfanuméricos não classificados, por exemplo ,
ABC321STPpJqZZr0
produz uma lista separada por "," de intervalos de caracteres, classificados pelo valor ASCII, ignorando maiúsculas e minúsculas e removendo duplicatas ( ou seja, produzindo apenas caracteres numéricos e maiúsculos), por exemplo
0-3, A-C, J, P-T, Z
Regras
- A duração do seu programa é sua pontuação base, como de costume.
- Você deve inicializar (código fixo) o exemplo acima em seu programa, mas pode descontar o comprimento desse exemplo do seu comprimento, por exemplo , para
char* s="ABC321STPpJqZZr0";
você descontar 16 caracteres, os outros 11 caracteres contando o comprimento do programa.
Bônus (+50 de recompensa)
- Como esse foi um problema real encontrado por meu colega de trabalho hoje, precisando ser escrito no Tcl 8.0.5 (uma versão antiga, sem muitos dos mais recentes recursos de Tcl), atribuirei 50 pontos a quem escrever o Tcl 8.0 mais curto .5 solução, se houver pelo menos 2 envios válidos no Tcl 8.0.5.
", "
para incluir o espaço, mas podemos deixar sua edição e deixar esse comentário servir como indicação.Respostas:
Ruby, 87-16 = 71
EDIT: Foi necessário adicionar alguns caracteres para que os intervalos de dois caracteres sejam exibidos corretamente. Também usando em
?[
vez de?Z
para corrigir um erro com intervalos que terminam em Z.Você pode ver o Ideone sendo executado aqui .
fonte
gsub(/[]/i)
é menor quetr(''.upcase)
2 caracteres. Além disso,scan(/.+/)
->split
salva 5 e, em$><<
vez deputs
outro.Julia, 131
Não é suportado pelo Ideone.com e provavelmente será esmagado de qualquer maneira.
fonte
C #, 221 bytes
fonte
C, 193
fonte
GolfScript
575452Experimente aqui .
O código coloca em maiúscula tudo:
Em seguida, obtém caracteres únicos e o salva em uma variável:
Em seguida, obtemos os caracteres cujos predecessores diretos não estão na string (para que eles sejam a parte inicial de um intervalo):
Da mesma forma, obtemos os fins dos intervalos com
x..{)}%&-
.Agora, na verdade, forme os intervalos concatenando as listas, classificando e dividindo em grupos de 2:
O resto é apenas formatação, usando
*
como junção de string.fonte
.95>{32-}{}if
->.95>32*-
salva 5 caracteres.Q, 94
fonte
Python 2.x, 304 - 16 = 288
Isso certamente pode ser ainda mais jogado, todos os comentários são bem-vindos!
fonte
Rebol (218 - 16 = 202)
Versão não minificada:
fonte
q [116 caracteres]
Uso
ResultadoExiste um escopo de salvar caracteres, vou tentar outro método e publicá-lo.
fonte
Tcl 8.0.5, 344 (360 bytes)
Tcl 8.0.5, 340 (356 bytes)
Mexer com o
rename
comando rendeu alguns truques divertidos! Eu os documentei em outro segmento .Tcl 8.0.5, 332 (348 bytes) [Instável - depende de $ PATH]
Os nossos agradecimentos a @JohannesKuhn pelo truque interativo .
fonte
while
portime
construções. codegolf.stackexchange.com/a/126236/29325