Minimalistische Hex Uhr


14

Ihre Herausforderung besteht darin, eine Uhr zu erstellen, die die Uhrzeit als Hex-Zahl und die Hintergrundfarbe als Hex-Farbcode der Uhrzeit anzeigt.

Anforderungen: Keine Eingabe. In der Mitte Ihrer Ausgabe sollten Sie das Zahlenzeichen und die aktuelle Uhrzeit im 24-Stunden-Format als "#hhmmss" anzeigen. Das Programm sollte mindestens einmal pro Sekunde auf die aktuelle Uhrzeit aktualisiert werden. Der Text muss zentriert und weiß sein (oder eine helle Farbe, die auffällt). Der Hintergrund sollte vollständig die Farbe des Hex-Codes haben. Kürzester Code gewinnt, kreative Antworten sind jedoch erwünscht.

Live-Beispiel . Idee von r / InternetIsBeautiful.


Ich mochte die Idee, aber es wäre besser als Beliebtheitswettbewerb imo
William Barbosa

8
@ WilliamBarbosa Ich glaube, das Ergebnis ist viel zu einfach für einen Beliebtheitswettbewerb, um nützlich zu sein.
QWR

Vielleicht möchten Sie darauf hinweisen, dass der IIB-Post ein X-Post von / r / minimalism ist. Aber heh.
cjfaure

Antworten:


1

python3 (142) oder (123 mit Flimmern)

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

mit Schildkröten, 142 Bytes, wird wahrscheinlich nicht die kürzeste, aber ich einfach wollte verwenden Spiel mit Schildkröten wieder.

In diesem Beispiel wird der Bildschirm oft genug aktualisiert und es wird ausgeführt, was gefragt wird, aber es ist nicht schön, da es ein- und ausgeschaltet wird. Dann sind es nur noch 123 Bytes. (keine spezifizierte Qualität)

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

Übrigens, wegen der while 1 würde ich empfehlen, es vom Terminal aus zu starten. Da es ziemlich schwierig sein kann zu schließen: D (du brauchst Strg + C)


1
Sie können die Anzahl der Zeichen verringern, indem Sie alle Zeilen in den while-Schleifen mit Semikolons kombinieren.
isaacg

@isaacg danke, ich habe es angepasst.
Pinna_be

1
Sie können die Anzahl der Charaktere um 9 reduzieren, indem Sie den letzten Anruf auf update()as- bgcolor()Anrufe setzen update()(Tracer-Einstellung ignorieren). Sie können ein anderes Zeichen speichern, indem Sie color([1]*3)anstelle von verwenden "snow".
cdlane

@cdlane Ich habe das Update () in der zweiten Antwort (zweiter Codeblock) entfernt. Ich hielt es nicht für richtig, dass dies meine endgültige Antwort war, da dieser Code damals einen flackernden Bildschirm verursachte und den vorherigen nicht entfernte Zahlen, die es hässlich machen, wenn man sie für längere Zeit laufen lässt. Die "" Farbe ([1] * 3) "" ist in der Tat ein sehr geschickter Trick!
Pinna_be

5

HTML / CSS / JavaScript 207 183 180 161 152

Getestet und funktioniert in den neuesten Browsern von Firefox und 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 hier


Soweit ich sehe, funktioniert Ihr Code perfekt ohne <html style = height: 100%>, zumindest in safari / jsfiddle
Pinna_be,

@ Pinna_be Guter Fang. Ich habe ein paar verschiedene Möglichkeiten ausprobiert, um den Text vertikal zu zentrieren, und das ist von einer anderen Methode übrig geblieben.
Nderscore

2
Ich weiß, ich bremse einige Regeln, indem ich diesen Kommentar mache, aber verdammt, dieser bodyTag ist pure Schönheit.
Jacob

1

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

Bildschirmfoto:

Bildbeschreibung hier eingeben

Ich weiß nicht, ob es gegen die Regeln verstößt, aber die tatsächliche Zeichenfläche ist das Quadrat 100x100px in der Mitte des Fensters. Aus irgendeinem Grund kann die Verarbeitung das Fenster nicht auf diese Größe verkleinern, sodass die grauen Ränder um den Zeichenbereich hinzugefügt werden. Hier ist eine andere Version ohne die grauen Ränder, aber etwas größer (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
sind die Zeilenumbrüche und die Leerzeichen am Anfang obligatorisch? Weil du dort einige Charaktere abschaben könntest.
Pinna_be

1

SmileBASIC, 65 Bytes

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

0

HTML + Javascript (184)

Dies verwendet die =>Notation, die derzeit nur in Firefox unterstützt wird. Es werden keine Bibliotheken verwendet.

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

Mit Einrückung:

<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
Sollte die Ausgabe nicht in der Mitte des Bildschirms sein?
Pinna_be

0

C # 357, 325 mit geringfügigem Betrug

Ja, C # wird nicht viele Codegolf-Preise gegen andere Sprachen gewinnen. Trotzdem viel Spaß!

Betrügt (nicht genau Zentrum, und nur Zentrum mit .NET 4.5-Standardformulargröße von 300x300 können Mono tun andere lustige Sachen):

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

Golf gespielt:

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 Zeichen

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

Nutzt die undo()Fähigkeit von Python 3 Turtle , nur den vorherigen Text zu löschen. Zeigt nicht das intensive Flackern der Schildkröte, das dadurch reset()verursacht wird, dass alles an der Schildkröte zurückgesetzt wird.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.