Mostrar un reloj digital
(Veo que hay muchos desafíos de reloj, he intentado leerlos todos, estoy bastante seguro de que esto es único)
Escribir un código que actualiza continuamente un reloj digital mostrado en el formato h:m:s
en que h
, m
y s
puede ocupar 1 o 2 caracteres cada una. Las restricciones en términos simples como @BlueEyedBeast lo expresaron, básicamente quiero que reemplace el tiempo que se muestra.
- No se permiten líneas nuevas.
- Se permiten espacios finales
- No se permiten otros caracteres finales
- No se deben perder segundos (57 -> 59 no está permitido)
- Los números que comienzan con "0" están permitidos, siempre que no ocupen más de 2 caracteres.
- El código no debe aceptar ninguna entrada.
- Si su idioma no puede obtener la hora actual sin entrada, puede usarla para ingresar hasta 8 bytes de una manera permitida de manera estándar
- La salida debe ser stdout
- ¡Esto es codegolf, por lo que gana la respuesta más corta!
Ejemplo
Estoy trabajando en un idioma llamado *> <> (estrella de mar) porque programas como este no son posibles en> <> (solo espera el archivo de E / S). Aquí hay un programa de reloj digital que funciona (sin golf). Este programa está escrito en *> <> :
s":"m":"hnonon" "ooo88888888888ooooooooooo1S
Nota: Todo es idéntico a> <> en esto excepto, s = segundo, m = minuto, h = hora, S = dormir (100ms * x)
Esto produce:
14:44:31
Actualización cada 100 ms hasta que finalice.
Ejemplos no permitidos
Lo siguiente no está permitido:
1:
14:44:3114:44:32
2:
14:44:31 14:44:32
3:
14:44:31
14:44:32
El tiempo debe permanecer en la primera línea que se emitió sin caracteres finales visibles. Sin embargo, se permitiría borrar la terminal, ya que todavía no tendría caracteres finales.
Respuestas:
Pyke, 6 bytes
Pruébalo aquí!
Creo que esto es valido. Reemplace el carácter de espacio con retorno de carro para salida válida (no funciona en línea)
fuente
HTML + JS (ES6), 8 + 60 = 68 bytes
Probado en cromo.
-1 byte (@ETHProductions): utilice el formato de hora francés en lugar de
.toTimeString().slice(0,8)
HTML + JS (ES6), 8 + 62 = 70 bytes
Esto funcionará en Firefox.
-3 bytes (@ETHProductions): utilice el formato de hora francés en lugar de
.toTimeString().slice(0,8)
fuente
new Date().toLocaleTimeString`fr`
(1 byte en Chrome one with...TimeString('fr')
)Python 2, 50 bytes
(Python 2.1+ para
ctime
sin argumento)time.ctime()
produce una cadena formateada, a partir de la cual hh: mm: ss se puede dividir usando[11:19]
(permanece en la misma ubicación, independientemente de la fecha y la hora).print
Al devolver el carro'\r'
antes del texto y hacer que el texto sea el primer elemento de una tupla,,
suprime efectivamente el final implícito'\n'
y sobrescribe la salida escrita anteriormente.while 1
bucles para siempre.fuente
,
al final para suprimir la nueva línea; de lo contrario, en Python 2.7.12 obtengo nuevas líneas.Mathematica,
48413728 bytesLa salida será una
TimeObject
, refrescante continuamente.Se ve como esto:
Versiones alternativas
48 bytes:
53 bytes:
fuente
Dynamic@{DateString@TimeObject[], Clock[]}[[1]]
Pause
.Dynamic@{Now,Clock[]}[[1]]
tiene 26 bytes y muestra un objeto de fecha y hora.Dynamic@{DateString@"Time",Clock[]}[[1]]
es de 40 bytes y solo genera hh: mm: ssVeo que se ha eliminado el requisito de una entrada de IU sin señal para detener el programa. Entonces ahora podemos hacer:
Bash + coreutils, 28
yes
emite continuamente la cadena "ahora", una vez por línea, en una tubería.date -f-
lee interpreta cada "ahora" como la hora actual, luego emite en el formato requerido. La cadena de formato incluye la secuencia de escape ANSI para borrar la pantalla.date
hace emitir una nueva línea después de la fecha - No estoy seguro de si esto descalifica, ya que la pantalla se borra cada vez que de todos modos.Si descalifica, podemos usar
tr
en su lugar:Bash + coreutils, 31
Respuestas anteriores:
Golpe + X, 32
Lamentablemente, esto solo puede actualizarse cada segundo. Si eso descalifica, entonces podemos hacer esto en su lugar:
Bash + coreutils, 43
fuente
date +$'\e[2J'%T;$0
date +$'\e[2J'%T;exec $0
por 24 bytes ...QBIC , 6 bytes
Borra constantemente la pantalla e imprime la hora del sistema en el formato
22:03:41
.fuente
Clojure,
150136141 bytesV3: 141 bytes :(
+5 bytes para corregir un error. Dado que los tiempos no están rellenados con ceros, el reloj puede "encogerse" y expandirse cuando cambia la hora. Estaba "manchado" cuando se redujo porque ya no se borraba el último dígito. Se solucionó agregando algunos espacios al final para garantizar que todo se sobrescribiera.
V2: 136 bytes
-14 bytes cambiando a usar
SimpleDateFormat
para formatear la fecha. Sigue siendo enorme.V1: 150 bytes
Me di cuenta de que probablemente estoy usando la peor forma posible para obtener la fecha. Definitivamente hay margen de mejora aquí.
Sin golf:
fuente
Bash + reloj, 19 bytes
watch no es parte de coreutils , pero está disponible en casi todas las distribuciones de Linux.
Golfed
Pruébalo en línea!
fuente
WinDbg, 73 bytes
Actualiza continuamente una línea con la hora actual hasta que el usuario presiona Ctrl + Break.
Cómo funciona:
Salida de muestra (bueno, ya tienes la idea):
fuente
PHP, 28 bytes
La
date
función imprime todo literalmente que no reconoce.\r
es el retorno de carro, establece el cursor en la primera columna.Corre con
-r
.fuente
MATL , 11 bytes
Bucle infinito que borra la pantalla e imprime la hora en el formato especificado.
¡Puedes probarlo en MATL Online! . Este compilador es experimental; si no funciona, actualice la página y presione "Ejecutar" nuevamente.
fuente
C #, 82 bytes
Método anónimo que sobrescribe constantemente 8 caracteres con nueva salida. Se puede acortar 1 byte si se modifica para aceptar un parámetro ficticio (
z=>...
).Programa completo:
fuente
System
? Algunas personas lo hacen y otras no: /C #, 65 bytes
Funciona sobrescribiendo la misma línea dentro de un bucle sin fin
fuente
SmileBASIC 3.3.2, 38 bytes
UTF-16 apesta :(
De todos modos, esto imprime repetidamente la hora local en HH: MM: SS con un espacio después, sin nueva línea después. Sin embargo, no se actualiza cada segundo, solo se imprime repetidamente para siempre.
fuente
@L?TIME$
y agregar una línea después (para un total de 3 líneas) que leaLOCATE 0, 0
hace el truco (¿SmileBASIC admite retorno de carro?).len(""" YOUR CODE HERE """)
, luego simplemente haga * 2 para UTF-16.C,
1341168980767573 bytesfuente
time.h
. Esto elimina el tipo time_t, por lo que necesita hacer n un int en su lugar. Esto se puede hacer declarándolo fuera de main (liken;main...
), lo que elimina la necesidad deint
. También puede deshacerse de lachar
con el mismo truco:b[9];main...
. Ambos son de tipo int ahora, pero es lo suficientemente flexible.strftime...
y elb[9]
e imprimí esto:printf("\r%d:%d:%d",(n/3600)%60-29,(n/60)%60,n%60);
no estoy seguro de si los padres son necesarios o no. También puede eliminar un conjunto de{}
comillas entre comillas para que seafor(;;)a,b,c;
(n/60)%60
, ¿seriamente?n
como parámetro demain
, digamos enmain(n)
lugar den;main()
Powershell, 39 bytes
Porque no me gusta usar cls en Powershell. De la publicación de briantist @ /codegolf//a/102450/63383
fuente
Pascal, 61 bytes
Pascal gratis tiene buenas rutinas de tiempo en la unidad SysUtils. Sin golf:
fuente
C 65 (anterior 64) bytes
Garantizado para trabajar en máquinas Linux. :)
@Marco ¡Gracias!
fuente
Vim, 26 bytes
Esto crea una macro recursiva (por ejemplo, un bucle eterno) que elimina todo el texto en la línea actual y lo reemplaza con la hora actual.
fuente
Pyth - 28 bytes
Un poco largo, porque pyth no tiene strftime.
fuente
Groovy, 45 personajes
fuente
Jalea , 8 bytes
Pruébalo en línea!
El retorno de carro no funciona en línea, y no puedo hacer que el intérprete funcione, por lo que no se ha probado, pero funciona como se esperaba cuando uso caracteres imprimibles en lugar del CR.
fuente
ForceLang, 123 bytes
datetime.toTimeString
está respaldado en la implementación de referencia por JavaDateFormat.getTimeInstance()
, que depende de la configuración regional, por lo que puede establecer la configuración regional predeterminada del sistema en una que utilice 24 horas.fuente
PowerShell,
30282420 bytesCambié la región de mi computadora a Alemania en base al comentario de raznagul para ahorrar 4 bytes. :)
Versión anterior que funciona en todas las configuraciones regionales.
fuente
tcl, 69 bytes
Pruébalo aquí!
fuente
Lote, 36 bytes
Donde
␈
representa el carácter ASCII BS (código 8).fuente
Raqueta, 71 bytes
Donde el
↵
es en realidad un CR (hex0d
). Volcado hexadecimal del programa para mayor aclaración (byte de aviso en la posición hex4d
)Utiliza SRFI / 19 incluido con la distribución Racket.
(current-date)
Obtiene la fecha y hora local actual. Eldate->string
formato~3
es el formato ISO-8601 hora-minuto-segundo.(let l () ... (l))
en un bucle infinito idiomático.(require srfi/19)
carga elsrfi/19
módulofuente
C, 156 bytes
fuente
TI-Basic, 40 bytes
(En TI-BASIC, muchos caracteres son tokens de 2 bytes, y los dos puntos al comienzo de una línea tienen 0 bytes adicionales)
fuente
R, 41 bytes
Tiene un espacio final (debido a que
cat
el separador predeterminado es un espacio).Debido a la frecuencia de actualización de la R GUI, ejecutar esto en la GUI ocasionalmente omitirá algunos segundos, pero si lo guarda en un archivo y lo ejecuta en la línea de comando, se mostrará correctamente cada segundo.
Se ejecutará para siempre hasta que el usuario interrumpa.
fuente