Reloj hexagonal minimalista


14

Su desafío es crear un reloj que muestre la hora como un número hexadecimal y el color de fondo como el código de color hexadecimal de la hora.

Requisitos: sin entrada. En el centro de su salida, debe mostrar el signo de número y la hora actual en formato de 24 horas como "#hhmmss". El programa debe actualizarse a la hora actual al menos una vez por segundo. El texto debe ser centrado y blanco (o un color claro que se destaque). El fondo debe ser completamente del color del código hexadecimal. El código más corto gana, pero se recomiendan respuestas creativas.

Ejemplo en vivo . Idea de r / InternetIsBeautiful.


Me gustó la idea, pero sería mejor como un concurso de popularidad de la OMI
William Barbosa

8
@WilliamBarbosa Creo que el resultado es demasiado simple para que un concurso de popularidad sea útil.
qwr

Es posible que desee señalar que la publicación IIB es una publicación x de / r / minimalism. Pero je.
cjfaure

Respuestas:


1

python3 (142) o (123 con parpadeo)

import time;from turtle import*;tracer(0)
while 1:reset();ht();color([1]*3);a=time.strftime("#%H%M%S");write(a,0,"center");bgcolor(a);update()

el uso de las tortugas, 142 bytes, probablemente no será la más corta, pero simplemente quería utilizar el juego con las tortugas de nuevo.

Este ejemplo actualiza la pantalla con la frecuencia suficiente para hacer lo que se le pide, pero no es bonito, ya que se enciende y se apaga. Entonces es solo 123 bytes. (no una calidad especificada)

import time;from turtle import*
while 1:reset();ht();color([1]*3);a=time.strftime("#%H%M%S");write(a,0,"center");bgcolor(a)

sin golf:

import time
from turtle import*
tracer(0)                           #1 not every change should be propagated immediatly
while 1:
    reset()                         #2 remove previous drawing
    ht()                            #3 hide the turtle
    color([1]*3)                   #4 set color to snow, which is white for as far I can see
    a=time.strftime("#%H%M%S")      #5 generate the color from time
    write(a,0,"center")             #6 print time
    bgcolor(a)                      #7 change bgcolor
    update()                        #8 propagate changes

por cierto, debido al while 1, recomendaría ejecutarlo desde la terminal. Como puede ser bastante difícil de cerrar: D (necesitará ctrl + c)


1
Puede reducir su recuento de caracteres combinando todas las líneas en los bucles while con punto y coma.
isaacg

@isaacg gracias, lo adapté.
Pinna_be

1
Puede reducir su recuento de caracteres en 9 eliminando la llamada final update()como bgcolor()llamadas update()(ignorando la configuración del trazador) ya. Puedes guardar otro personaje usando en color([1]*3)lugar de "snow".
cdlane

@cdlane Eliminé la actualización () en la segunda respuesta (segundo bloque de código), no pensé que fuera correcto dejar que esa fuera mi respuesta final ya que ese código causó una pantalla parpadeante en ese entonces y como no elimina la anterior números que lo hacen feo si lo dejas correr por mucho tiempo. el "" "color ([1] * 3)" "" es un truco muy ingenioso.
Pinna_be

5

HTML / CSS / JavaScript 207 183 180 161 152

Probado y funcionando en los últimos navegadores Firefox y Chrome.

<body id=b onload=setInterval("b.innerHTML=b.bgColor=Date().replace(/.*(..):(..):(..).*/,'#$1$2$3')",0) text=#fff style=position:fixed;top:50%;left:47%>

Demo aquí


por lo que veo, su código funciona perfectamente sin el <html style = height: 100%> al menos en safari / jsfiddle
Pinna_be

@Pinna_be Buena captura. Estaba probando algunas formas diferentes de centrar verticalmente el texto y eso quedó de otro método.
nderscore

2
Sé que estoy rompiendo algunas reglas al hacer este comentario, pero, maldita sea, esta bodyetiqueta es pura belleza.
Jacob

1

Procesamiento, 162 bytes

void draw()
{
 int h=hour(),m=minute(),s=second();
 background(color(h,m,s));
 textAlign(CENTER);
 text("#"+(h<10?"0"+h:h)+(m<10?"0"+m:m)+(s<10?"0"+s:s),50,50);
}

Captura de pantalla:

ingrese la descripción de la imagen aquí

No sé si va en contra de las reglas, pero el área de dibujo real es el cuadrado de 100x100px en el centro de la ventana. Por alguna razón, el procesamiento no puede reducir la ventana a ese tamaño, por lo que agrega los márgenes grises alrededor del área de dibujo. Aquí hay otra versión sin los márgenes grises, pero un poco más grande (198 bytes) :

void setup()
{
 size(200,200);
}

void draw()
{
 int h=hour(),m=minute(),s=second();
 background(color(h,m,s));
 textAlign(CENTER);
 text("#"+(h<10?"0"+h:h)+(m<10?"0"+m:m)+(s<10?"0"+s:s),100,100);
}

1
¿son obligatorias las líneas nuevas y los espacios al principio? Porque podrías afeitar a algunos personajes de allí.
Pinna_be

1

SmileBASIC, 65 bytes

T$=TIME$T$[2]="
LOCATE 21,14T$[4]"
GCLS VAL("&H"+T$)?"#";T$EXEC.

0

HTML + Javascript (184)

Utiliza la =>notación que actualmente solo es compatible con Firefox. No usa ninguna biblioteca.

<body text=white onload='(b=document.body).bgColor=b.innerHTML="#"+[(d=new Date()).getHours(),d.getMinutes(),d.getSeconds()].map(x=>("00"+x).slice(-2)).join("");setTimeout(b.onload)'>

Con sangría:

<body 
 text=white 
 onload='
       (b=document.body).bgColor = 
       b.innerHTML = 
             "#"+[ (d=new Date()).getHours(),
                    d.getMinutes(),
                    d.getSeconds()].map(
                        x=>("00"+x).slice(-2)
                    ).join("");
       setTimeout(b.onload)
'>

1
¿No debería la salida estar en el centro de la pantalla?
Pinna_be

0

C # 357, 325 con trampa menor

Sí, C # no va a ganar muchos premios codegolf contra otros idiomas. Aún así, divertido!

Hacer trampa (no exactamente centrado, y solo centrado con el tamaño de formulario predeterminado de .NET 4.5 de 300x300, Mono puede hacer otras cosas divertidas):

using System.Windows.Forms;using System.Drawing;class P:Form{static void Main(){new P().ShowDialog();}public P(){var l=new Label(){Top=125,Left=120,ForeColor=Color.White};Controls.Add(l);new Timer(){Enabled=true,Interval=1}.Tick+=(s,e)=>{BackColor=ColorTranslator.FromHtml(l.Text=System.DateTime.Now.ToString("#HHmmss"));};}}

Golfizado:

using System.Windows.Forms;using System.Drawing;class P:Form{static void Main(){new P().ShowDialog();}public P(){var l=new Label(){Dock=(DockStyle)5,TextAlign=(ContentAlignment)32,ForeColor=Color.White};Controls.Add(l);new Timer(){Enabled=true,Interval=1}.Tick+=(s,e)=>{BackColor=ColorTranslator.FromHtml(l.Text=System.DateTime.Now.ToString("#HHmmss"));};}}

Sin golf:

using System.Windows.Forms;
using System.Drawing;

class P : Form
{
    static void Main()
    {
        new P().ShowDialog();
    }

    public P()
    {
        var l = new Label() { Dock = (DockStyle)5, TextAlign = (ContentAlignment)32, ForeColor = Color.White };
        Controls.Add(l);
        new Timer() { Enabled = true, Interval = 1 }.Tick += (s, e) =>
        {
            BackColor = ColorTranslator.FromHtml(l.Text = System.DateTime.Now.ToString("#HHmmss"));
        };
    }
}

0

Python 3, 122 caracteres

from turtle import*
import time
color(1,1,1)
ht()
while 1:_=time.strftime("#%H%M%S");bgcolor(_);write(_,0,"center");undo()

Aprovecha la undo()capacidad de la tortuga Python 3 para borrar solo el texto anterior. No exhibe el intenso parpadeo de la tortuga reset()causado por restablecer todo sobre la tortuga.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.