Inspirado pela má sorte de digitar um número de dígitos sem usar uma matriz , mas achei que ele produzia um código de golfe melhor do que a questão SO.
Dado um número inteiro positivo, classifique os dígitos nesse número inteiro.
Menor pontuação ganha!
- Comece com 0 pontos.
- Adicione um ponto por caractere.
- Adicione 20 pontos para cada matriz que você usa.
- Adicione 10 pontos para cada seqüência de caracteres múltiplos no seu código. (Exceto a entrada inicial, desde que seja convertida em um número inteiro sem nenhuma outra operação feita.)
- Adicione 32 pontos se o número máximo de dígitos que seu programa puder manipular for limitado pelo programa (em oposição à máquina).
- Subtraia 10 pontos se o seu código puder alterar a direção da classificação dada outro argumento (o que você quiser, mas por exemplo 0 para classificação decrescente e 1 para ascendente).
Cada idioma é diferente, mas a idéia é evitar qualquer tipo de invasão de dígitos iteráveis.
Exemplo:
Entrada : 52146729
Saída : 97654221 ou 12245679
Notas:
- Use qualquer recurso interno de classificação que sua linguagem de programação ofereça, mas se esse recurso envolver seqüências de caracteres ou matrizes, tome a penalidade!
- Você pode escrever a solução como uma função que pega um número inteiro diretamente ou como um programa que pega um argumento do argv, um arquivo ou fluxo e o converte em um número inteiro. Contanto que você o converta em um número inteiro imediatamente e descarte a entrada char * original sem executar nenhuma operação adicional, nenhuma penalidade será aplicada.
- As penalidades se aplicam não apenas aos literais de cadeia de caracteres no texto do programa, mas a qualquer parte do recurso do programa que indiscutivelmente insira ou produza uma cadeia ou iterável. Por exemplo, o JavaScript
String.prototype.split
tem pelo menos uma string como input (this
) e uma Matriz como saída, então +30 para usá-lo. - Eu tentei fazer essas regras guiarem o princípio do design do algoritmo, não a E / S inicial / final (daí a nota 2). Eu não acho que a penalidade deva ser aplicada
int(input())
mesmo queinput
a assinatura diga que retorna uma string, desde que essa expressão seja o ponto de entrada inicial do programa. Da mesma forma, se a saída final do programa éprint(x)
ex
deve ser uma sequência, a penalidade não se aplica à operação de conversão de sequência da última vala. Tudo o que foi dito, eu nunca disse explicitamente que esse tinha que ser um programa ou de onde a E / S tinha que vir ou ir. Uma função que recebeint
e retorna umint
serviria e não sofreria com essas ambiguidades.
" "
como uma cadeia de caracteres múltiplos ? Um único caractere não seria considerado como "multi" ...