Geração de régua ASCII
O desafio é gerar uma régua de contagem de caracteres ASCII no seguinte formato:
O comprimento da régua deve ser escalável para qualquer múltiplo de 10.
A régua deve estar na horizontal.
Digamos, para simplificar, que a régua deve funcionar até a marca 1000, todos os números alinhados à esquerda, um espaço após o número final .
Solicitar uma régua com comprimento zero deve imprimir NaR
Os números negativos devem imprimir uma régua invertida (-90, -80, -70, ...) com números alinhados à direita, exatamente no mesmo formato que o acima, caso contrário
E apenas imprimir no console é bom
Pronto, jogo, golfe!
Como o programa sabe quanto tempo faz a régua? É fornecido como um número no STDIN?
Sim, como sempre, eu acho!
A régua precisa ser horizontal ou vertical? se for horizontal, podemos assumir um máximo de 80 caracteres ou enviaremos isso para um arquivo para evitar o agrupamento? ou precisamos redimensionar o console / terminal ao escrever no stdout?
Um dos principais pontos do code-golf é que o problema deve ser 100% especificado sem ambiguidade (consulte as perguntas frequentes ). Há pouco espaço para criatividade na saída real, porque a criatividade está no próprio código. No futuro, por favor, tente pensar em todos esses casos possíveis antes de postar a pergunta, mas desde que você é novo, estamos ajudando você :)
Você poderia editar o desafio para incluir regras especificadas nos comentários?
Suporta especificação inteira
editar: melhor expressão do gerador.
O suporte a números negativos alinhados à direita adiciona uma quantidade surpreendente de código.
Não vou vencer as linguagens dinâmicas hoje, mas enfim ...
Tomei a liberdade de trocar os caracteres ASCII reais com caracteres de desenho de caixa unicode mais bonitos.
A régua parece muito, muito boa.
Python 2.7, 342 266 260 caracteres
retorna uma tupla de cada sequência de linhas , que você pode imprimir ou salvar em um arquivo (eu prefiro o último por comprimentos maiores que 70, pois o console apenas fará com que pareça bagunçado com o envolvimento)
Assume yser uma string (raw_input () n python ou sys.argv [1] se você desejar chamar via cmd) um número inteiro (por exemplo, com input () em 2.x ou int (input ()) em 3.x )
Eu fiz isso uma função para ser mais flexível
editar: reduzido para 266 caracteres. não retorna mais uma tupla, mas uma sequência. Agora pega um número inteiro em vez de uma sequência como argumento
edit2: reduzido para 260 caracteres, função de linha única
nota: lida com números negativos, mas não justifica corretamente (eu realmente não acho que a justificação seja muito importante de qualquer maneira
Ou apenas use um console sem quebra de linha (por exemplo, Terminator ).
— deixou de girar no sentido anti-
@leftaroundabout Eu não tinha certeza se isso existia #
Independentemente disso, a necessidade de instalar uma plataforma separada apenas para fazer um inútil seemspretty governante, onde, como a criação de um valor de retorno que qualquer um poderia usar (gravação para um arquivo, etc) é mais universal
@ Blazer, seu shell não possui pipes e redirecionamentos?
PowerShell , 256 253 233 225 222 bytes
Python, 291 241 caracteres
Uma abordagem bastante simples. Tenho certeza que pode ser melhorado bastante.
Tentei seguir as orientações nos comentários, mas não apoio números negativos (era uma piada, espero).
Este é um programa, imprime a régua na saída padrão. Se sua tela for grande o suficiente, ela deverá suportar réguas muito longas.
Você pode golfe mais algumas personagens fora deste I raspado 12 caracteres aqui
Obrigado @GordonBailey, mas já existe um vencedor de qualquer maneira, que é mais curto que o meu código e suporta a especificação completa.
Isso é programado usando o console do Windows, portanto, acabei de escolher um tamanho máximo de régua que é 70; ele trava para algo maior. Os números negativos (até -70) e 0 são tratados corretamente.
(não suporta números negativos alinhados à direita)
Eu acho que meu truque favorito era gerar strings muito mais longas do que o necessário e depois truncá-las, por exemplo:
Eu só gostaria que houvesse uma opção de formatação de string mais concisa para alinhamento à esquerda (a menos que exista uma que eu simplesmente não conheça)
Perl 5.14, 198 224 caracteres
Provavelmente pode ser reduzido ainda mais, mas aqui está uma primeira segunda tentativa (com quebras de linha inseridas para facilitar a leitura):
EDIT: Editado para morrer com "NaR" quando a entrada é 0e para suportar faixa negativa.
EDIT2: Não tive a chance de trabalhar mais nisso e só agora notei a regra alinhada à direita para números negativos, que meu código não suporta, por isso acho que outra solução deve ser marcada como a resposta, se o prazo foi atingido.
@ Louism: Minha resposta não está em conformidade com todas as regras. Outra resposta deve ser escolhida, se possível.