Crie um relógio binário BCD em ASCII. Como está implícito, deve exibir o tempo em seis colunas de pontos:
(fonte: Wikimedia Commons )
Cada coluna é um dígito com código binário, que lê horas, minutos e segundos da esquerda para a direita. As horas são fornecidas no formato de 24 horas.
O tempo para exibição é lido na linha de comando ou no stdin (o que couber melhor). Se vazio, a hora atual deve ser usada.
O tamanho da saída é um pouco restrito aqui e só podemos ajustar duas linhas de texto. Portanto, você deve colocar os pontos em apenas duas linhas. Os personagens .
, :
e '
são úteis aqui.
Entrada
O tempo para exibição no formato ISO-8601, ou seja, HH:MM:SS
sem segundos fracionários. Formato obrigatório de 24 horas. A entrada pode estar vazia e, nesse caso, a hora atual será usada.
Resultado
Duas linhas com representam o relógio binário BCD como na imagem acima. Cada linha tem exatamente seis caracteres e os únicos caracteres permitidos são espaço, ponto, dois pontos e apóstrofo.
Vencedora
O código mais curto pela contagem de bytes vence. Em um empate, a solução registrou as primeiras vitórias.
Entrada de amostra 1
(esvaziar)
Saída de amostra 1
.
''. ::
Entrada de amostra 2
17:59:20
Saída de amostra 2
..'
.:..'
Entrada de amostra 3
01:08:01
Saída de amostra 3
'
. .
Rubi,
107 103 99 9490 caracteresObserve que a entrada não deve conter uma quebra de linha; portanto, para testar a solução, use algo parecido
echo -n "01:08:01" | ruby1.9 bcd.rb
.Para testar o comportamento padrão, execute-o com
ruby1.9 bcd.rb
e digite^D
(ou seja, um EOF literal).fonte
Time.now.to_s[11,8]
.Windows PowerShell, 81
Como não criei uma implementação ao escrever a tarefa, também me sinto elegível a jogar desde o início :-)
História:
[Math]::Floor
é muito longo. Eu odeio isso.:
da primeira linha.58
vez de:
quais transmissões automáticas para números inteiros também - não há mais necessidade de colocar$_
aspas :-)-join
não são mais necessários.fonte
Ruby - 124 caracteres
fonte
C #
236 caracteres
Legível:
fonte
- 48
quando você está fazendo% 4
, como48 % 4 == 0
c/4-12
é menor do que(c-48)/4
... :)Script de golfe (+ Ruby), 63
Ainda iniciante no Golfscript. Não me bata.
fonte
""
coagidos a falsos para que você possa removê-lo,\
.Perl (84)
fonte
"\n$&"
para$/.$&
- trick-golf Perl comum :)Python 3, 136 caracteres
fonte
wc -c
. Bom trabalho, tho. +1Python -
201172 caracteresfonte
t=raw_input().replace(':','')
/if not t:t=strftime('%H%M%S')
- poupa 5 caracteres :)Lua -
163160 caracteresfonte
VBA (Excel),
150148132 bytesUsando Janela Imediata e Célula
[A1]
como entrada.fonte
If
instrução para a[..]
notação e usando um espaço sem quebra em vez de um espaço regular na instrução de divisão (Alt + 255) e, em seguida, usando a adição de strings em vez da concatenação de strings. Deve ser semelhantea=Format([IF(A1,A1,NOW())],"hhmmss"):b=Split(" . ' :"):For c=1To Len(a):d=Mid(a,c,1):e=e+b(d\4):f=f+b(d Mod 4):Next:?e:?f
, onde o primeiro caractere na declaração de divisão é o espaço não separávelsplit
função. Aprendi coisas novas novamente XD Nice! E obrigado! : DScala, 222:
fonte
VimScript, 143 caracteres
fonte