O desafio é gerar uma régua de contagem de caracteres ASCII no seguinte formato:
+-------------------------------------------------------------------------+
|| | | | | | | | | | | | | | | |
|0 10 20 30 40 50 60 70 |
| |
+-------------------------------------------------------------------------+
O comprimento da régua deve ser escalável para qualquer múltiplo de 10.
Regras:
- 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!
Respostas:
Python - 227
232Suporta especificação inteira
editar: melhor expressão do gerador.
O suporte a números negativos alinhados à direita adiciona uma quantidade surpreendente de código.
Saídas de amostra:
-30 30
-30 -30
100 150
-1000 -950
fonte
Não vou vencer as linguagens dinâmicas hoje, mas enfim ...
Haskell, 341
Tomei a liberdade de trocar os caracteres ASCII reais com caracteres de desenho de caixa unicode mais bonitos.
fonte
Python 2.7,
342 266260 caracteresretorna uma
tupla de cadasequência delinhas, 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
y
seruma 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
fonte
PowerShell ,
256253233225222 bytesExperimente online!
Menos golfe:
fonte
Python,
291241 caracteresUma 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.
fonte
C ++, 392
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.
fonte
Python - 208
(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)
fonte
Perl 5.14,
198224 caracteresProvavelmente pode ser reduzido ainda mais, mas aqui está uma
primeirasegunda tentativa (com quebras de linha inseridas para facilitar a leitura):EDIT: Editado para morrer com "NaR" quando a entrada é
0
e 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.
fonte