Cree un reloj binario BCD en ASCII. Como está implícito, mostrará el tiempo en seis columnas de puntos:
(fuente: Wikimedia Commons )
Cada columna es un dígito codificado en binario, que lee horas, minutos y segundos de izquierda a derecha. Las horas se dan en formato de 24 horas.
El tiempo de visualización se lee desde la línea de comandos o desde la entrada estándar (lo que mejor se ajuste). Si está vacío, se debe utilizar la hora actual.
El tamaño de salida está un poco limitado aquí y solo podemos ajustar dos líneas de texto. Por lo tanto, debe colocar los puntos en solo dos líneas. Los personajes .
, :
y '
son útiles aquí.
Entrada
El tiempo de visualización en formato ISO-8601, es decir, HH:MM:SS
sin segundos fraccionarios. Formato obligatorio de 24 horas. La entrada puede estar vacía, en cuyo caso se utilizará la hora actual.
Salida
Dos líneas con representan el reloj binario BCD como en la imagen de arriba. Cada línea tiene exactamente seis caracteres de longitud y los únicos caracteres permitidos son espacio, punto, dos puntos y apóstrofe.
Ganador
El código más corto por conteo de bytes gana. En un empate, la solución obtuvo las primeras victorias.
Entrada de muestra 1
(vacío)
Salida de muestra 1
.
''. ::
Entrada de muestra 2
17:59:20
Salida de muestra 2
..'
.:..'
Entrada de muestra 3
01:08:01
Salida de muestra 3
'
. .
Rubí,
107 103 99 9490 caracteresTenga en cuenta que la entrada no debe contener un salto de línea, por lo que para probar la solución use algo como
echo -n "01:08:01" | ruby1.9 bcd.rb
.Para probar el comportamiento predeterminado, ejecútelo
ruby1.9 bcd.rb
e ingrese^D
(es decir, un EOF literal).fuente
Time.now.to_s[11,8]
.Windows PowerShell, 81
Como no creé una implementación al escribir la tarea, también me siento elegible para jugar golf desde el principio :-)
Historia:
[Math]::Floor
es muuuuy largo. Odio eso.:
para la primera línea.58
lugar de:
qué auto-conversiones también a entero - ya no es necesario encerrar$_
entre comillas :-)-join
ya no son necesarios.fuente
Ruby - 124 caracteres
fuente
C#
236 caracteres
Legible:
fuente
- 48
cuando lo estás haciendo% 4
, como48 % 4 == 0
c/4-12
es más corta que(c-48)/4
... :)Golfscript (+ Ruby), 63
Todavía un principiante con Golfscript. No me pegues
fuente
""
coacciones a false para que pueda eliminarlas,\
.Perl (84)
fuente
"\n$&"
a$/.$&
- truco común de Perl-golf :)Python 3, 136 caracteres
fuente
wc -c
. Buen trabajo aunque. +1Python -
201172 caracteresfuente
t=raw_input().replace(':','')
/if not t:t=strftime('%H%M%S')
- te ahorra 5 caracteres :)Lua -
163160 caracteresfuente
VBA (Excel),
150148132 bytesUsando Ventana Inmediata y Celda
[A1]
como entrada.fuente
If
declaración a la[..]
notación, y usando un espacio que no se rompa en lugar de un espacio regular en la declaración dividida (Alt + 255), y luego usando la suma de cadenas en lugar de la concatenación de cadenas. Debería verse comoa=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
, donde el primer personaje en la declaración dividida es el espacio sin interrupcionessplit
función. Aprendí cosas nuevas otra vez XD Nice! ¡Y gracias! : DScala, 222:
fuente
VimScript, 143 caracteres
fuente