Orologio esagonale minimalista


14

La tua sfida è quella di creare un orologio che mostri l'ora come numero esadecimale e il colore di sfondo come codice esadecimale del tempo.

Requisiti: nessun input. Al centro dell'output dovresti visualizzare il segno numerico e l'ora corrente nel formato 24 ore come "#hhmmss". Il programma dovrebbe aggiornarsi all'ora corrente almeno una volta al secondo. Il testo deve essere centrato e bianco (o di un colore chiaro che risalta). Lo sfondo dovrebbe essere interamente del colore del codice esadecimale. Il codice più corto vince, ma le risposte creative sono incoraggiate.

Esempio dal vivo . Idea da r / InternetIsBeautiful.


Mi è piaciuta l'idea, ma sarebbe meglio come contest di popolarità imo
William Barbosa,

8
@WilliamBarbosa Credo che il risultato sia troppo semplice per essere utile un concorso di popolarità.
qwr

Si consiglia di sottolineare che il post IIB è un post x di / r / minimalismo. Ma heh.
cjfaure,

Risposte:


1

python3 (142) o (123 con sfarfallio)

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()

l'utilizzo di tartarughe, 142 byte, probabilmente non sarà il più breve, ma volevo semplicemente usarlo di nuovo il gioco con le tartarughe.

Questo esempio aggiorna lo schermo abbastanza spesso en fa quello che viene chiesto, ma non è carino, come si accende e si spegne. Quindi sono solo 123 byte. (non una qualità specificata)

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

ungolfed:

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

a proposito, a causa del tempo 1, consiglierei di eseguirlo dal terminale. Poiché può essere abbastanza difficile chiudere: D (avrai bisogno di ctrl + c)


1
Puoi ridurre il conteggio dei personaggi combinando tutte le linee nei cicli while usando i punti e virgola.
Isaacg,

@isaacg grazie, l'ho adattato.
Pinna_be,

1
Puoi ridurre il numero di personaggi di 9 rimuovendo la chiamata finale update()come già bgcolor()chiamata update()(ignorando l'impostazione del tracciante). Puoi salvare un altro personaggio usando color([1]*3)invece di "snow".
cdlane,

@cdlane Ho rimosso l'aggiornamento () nella seconda risposta (secondo blocco di codice), non pensavo fosse giusto lasciare che fosse la mia risposta finale poiché quel codice causava uno schermo tremolante all'epoca e poiché non rimuoveva la precedente numeri che lo rendono brutto se lasciato correre per molto tempo. il "" "colore ([1] * 3)" "" è davvero un trucco molto elegante!
Pinna_be,

5

HTML / CSS / JavaScript 207 183 180 161 152

Testato e funzionante con gli ultimi browser Firefox e 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 qui


per quanto vedo, il tuo codice funziona perfettamente senza <html style = height: 100%> almeno in safari / jsfiddle
Pinna_be,

@Pinna_be Buona cattura. Stavo provando alcuni modi diversi di centrare verticalmente il testo e quello era rimasto da un altro metodo.
nderscore,

2
So che sto frenando alcune regole facendo questo commento, ma, maledizione, questo bodytag è pura bellezza.
Jacob,

1

Elaborazione, 162 byte

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);
}

Immagine dello schermo:

inserisci qui la descrizione dell'immagine

Non so se sia contro le regole, ma l'area di disegno effettiva è il quadrato 100x100px al centro della finestra. Per qualche motivo, Elaborazione non può ridimensionare la finestra a quella dimensione, quindi aggiunge i margini grigi intorno all'area di disegno. Ecco un'altra versione senza i margini grigi, ma leggermente più grande (198 byte) :

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
le newline e gli spazi all'inizio sono obbligatori? Perché potresti radere alcuni personaggi laggiù.
Pinna_be,

1

SmileBASIC, 65 byte

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

0

HTML + Javascript (184)

Questo utilizza la =>notazione che è attualmente supportata solo in Firefox. Non utilizza alcuna libreria.

<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 rientro:

<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
l'output non dovrebbe essere al centro dello schermo?
Pinna_be,

0

C # 357, 325 con imbrogli minori

Sì, C # non vincerà molti premi codegolf contro altre lingue. Comunque divertente!

Cheating (non esattamente al centro, e solo al centro con la dimensione predefinita del modulo .NET 4.5 di 300x300, Mono può fare altre cose divertenti):

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"));};}}

golfed:

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"));};}}

Ungolfed:

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 caratteri

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

Sfrutta la undo()capacità della tartaruga di Python 3 di cancellare solo il testo precedente. Non mostra lo sfarfallio intenso della tartaruga reset()causato dal suo ripristino di tutto ciò che riguarda la tartaruga.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.