Escreva um programa que analise a saída uptime
e gere uma barra de progresso anatomicamente sugestiva (como mostrado) com um comprimento igual ao tempo de atividade atual em dias:
$ uptime
23:01 up 34 days, 7:30, 5 users, load averages: 0.23 0.27 0.24
$ uptime|<command>
8==================================D
(34 dias = 34 sinais de igual)
A resposta mais curta vence.
Respostas:
Ruby, 39
Não é necessária nenhuma entrada (por descasque):
Ou de stdin (40 caracteres):
fonte
gets=~/up (\d*)/;puts "8#{?=*$1.to_i}D"
'gets=~/up (\d*)/;puts "8#{"="*$1.to_i}D"'.length=="gets=~/up (\d*)/;puts '8'+'='*$1.to_i+'D'".length
#trueBash, 71 caracteres
Eu não sou muito para expor meus
genuptimes na internet, então eu estou desenhando uma cerca em seu lugar. É a mesma contagem de caracteres. Pense em redefinirp
entre as chamadas.Pure bash, 71 caracteres, incluindo
uptime
.Bem, bem, bem ... o meu é maior que o seu.
fonte
Perl -
2624 caracteresFuncionou assim:
edit : Não citado o final 'D' - obrigado JB
fonte
Haskell, 88 caracteres
Como costuma ser o caso, Haskell não oferece a capacidade de golfe mais extrema de outras línguas, mas permite uma expressão elegante das estruturas matemáticas subjacentes ao problema. Com base no trabalho seminal nesse campo, pretendo introduzir uma implementação Haskell do operador de aproximação Holkins-Krahulik . Resumidamente, o operador ignora ambas as entradas e retorna uma função de impressão de falo parametrizada pelo comprimento do eixo.
fonte
Perl, 17 caracteres
Agora com dizer:
Rendimentos
foi:
Rendimentos
(Eu não posso "dizer", infelizmente)
fonte
57 caracteres
fonte
35 caracteres
assim,
Editar : era
Editar 2 : comentário de JB (use em
\
vez de''
)fonte
Windows PowerShell, 28
Finalmente
produz a saída correta, por isso deve ser capaz de lidar com
uptime
a saída. Porém, não posso testar, já que o GNUWin32 inclui um problemauptime
que tenta ler de um arquivo inexistente (Nota para pessoas que portam ferramentas Unix: Não tente assumir que o Windows é um Unix e segue os mesmos princípios ou convenções; (nenhum arquivo contém o tempo de inicialização no Windows).fonte
Lisp comum, 84 caracteres
Isso leva a string de tempo de atividade como entrada. Parece que deveria haver um mapeamento de solução mais curto # 'sobre uma lista, mas, se sim, não consigo.
fonte
GolfScript (24 caracteres)
Haskell (73 caracteres)
C (131 caracteres)
fonte
' '/3=~8\'='*'D'
PHP, 62 caracteres
Nenhuma entrada é necessária, ela se destaca.
fonte
Python (42)
Nota: Python 3 usado para reduzir a contagem total de caracteres.
fonte
Python, 65 bytes
teste:
fonte
PHP, 61
fonte
Lisp comum, 57 caracteres
(excluindo implementação / shebang específico do SO)
Com base em uma tentativa de satisfazer o desejo da resposta do Dr. Pain de uma maneira mais curta de escrever um personagem repetido. Este pode ser usado em um pipeline, como mostrado na pergunta.
(A string de formato especifica para justificar à direita a string vazia (entre
~<
e~>
), em um campo de largura especificado por um argumento, preenchido usando o=
caractere.)fonte
K, 35
.
fonte
Bash 67 chars
invocação para a letra da tarefa:
Muito mais curto
apenas 54 caracteres:
com esta variação:
invocação, não 100% de acordo com as regras:
saída nos dois momentos:
Truques não diários:
lê 06: 29: 53 = t, up = u, 16 = d descanso ... = w
sem w, tudo até o fim seria colocado em $ d.
O expand é normalmente usado para converter uma guia em uma quantidade de espaços em branco e usa um parâmetro se você não gostar de 8.
Agarrar o terceiro parâmetro com $ 3 in
echo -e '\t'|expand -t $3|sed 's/ /=/g'
é ainda mais curto, mas precisa de uma invocação, não se ajustando às palavras das regras.fonte
bash / zenity 38 versão curta, 68 versão mais longa
A versão curta termina após $ d, quanto mais tempo levamos em conta que sabemos um valor máximo e gostamos de receber um texto útil:
fonte
Gema , 24 caracteres
Exemplo de execução:
fonte
AutoHotkey , 39 bytes
Sem entrada. O resultado é enviado para a janela ativa.
O interno
A_TickCount
é o número de milissegundos desde que o computador foi reiniciado.fonte