Minimalistyczny zegar sześciokątny

14

Wyzwanie polega na utworzeniu zegara wyświetlającego czas jako liczbę szesnastkową, a kolor tła jako kod koloru szesnastkowego czasu.

Wymagania: Brak danych wejściowych. Pośrodku wyjścia powinieneś wyświetlić znak liczbowy i aktualny czas w formacie 24-godzinnym jako „#hhmmss”. Program powinien aktualizować się do aktualnego czasu przynajmniej raz na sekundę. Tekst musi być wyśrodkowany i biały (lub jasny kolor, który się wyróżnia). Tło powinno być całkowicie w kolorze kodu szesnastkowego. Najkrótszy kod wygrywa, ale zachęca się do kreatywnych odpowiedzi.

Przykład na żywo . Pomysł z r / InternetIsBeautiful.

qwr
źródło
Podobał mi się ten pomysł, ale byłby lepszy jako konkurs popularności imo
William Barbosa,
8
@WilliamBarbosa Uważam, że wynik jest zbyt prosty, aby konkurs popularności był przydatny.
qwr
Możesz wskazać, że post IIB jest postem x z / r / minimalizm. Ale heh.
cjfaure

Odpowiedzi:

1

python3 (142) lub (123 z migotaniem)

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

użycie żółwi, 142 bajtów, prawdopodobnie nie będzie najkrótsze, ale po prostu chciałem ponownie użyć gry z żółwiami.

Ten przykład aktualizuje ekran wystarczająco często i robi to, o co jest poproszony, ale nie jest ładny, ponieważ włącza się i wyłącza. Zatem jest to tylko 123 bajty. (nieokreślona jakość)

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

bez golfa:

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

btw, z powodu czasu 1, zalecałbym uruchomienie go z terminala. Ponieważ zamknięcie może być dość trudne: D (potrzebujesz kombinacji klawiszy Ctrl + C)

Pinna_be
źródło
1
Możesz zmniejszyć liczbę postaci, łącząc wszystkie linie w pętli while za pomocą średników.
isaacg
@isaacg dziękuję, dostosowałem to.
Pinna_be
1
Możesz zmniejszyć liczbę postaci o 9, usuwając już ostatnie wezwanie update()jako bgcolor()wywołania update()(ignorując ustawienie znacznika). Możesz zapisać inną postać, używając color([1]*3)zamiast "snow".
cdlane
@cdlane Usunąłem aktualizację () w drugiej odpowiedzi (drugi blok kodu), nie sądziłem, że to słuszne, aby była to moja ostateczna odpowiedź, ponieważ kod ten spowodował migotanie ekranu i ponieważ nie usuwa poprzedniej liczby sprawiają, że jest brzydki, jeśli pozwala na długi czas. kolor „” „([1] * 3)” „” jest naprawdę sprytną sztuczką!
Pinna_be
5

HTML / CSS / JavaScript 207 183 180 161 152

Testowane i działające w najnowszych przeglądarkach Firefox i 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 tutaj

nderscore
źródło
o ile widzę, twój kod doskonale działa bez <styl HTML = wysokość: 100%> przynajmniej w safari / jsfiddle
Pinna_be
@ Pinna_be Dobry połów. Próbowałem kilku różnych sposobów wyśrodkowania tekstu w pionie i zostało to z innej metody.
nderscore
2
Wiem, że ograniczam niektóre reguły, robiąc ten komentarz, ale cholera, ten bodytag to czysta uroda.
Jacob
1

Przetwarzanie, 162 bajty

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

Zrzut ekranu:

wprowadź opis zdjęcia tutaj

Nie wiem, czy jest to niezgodne z regułami, ale faktyczny obszar rysowania to kwadrat o wymiarach 100 x 100 pikseli na środku okna. Z jakiegoś powodu Przetwarzanie nie może przeskalować okna do tego rozmiaru, więc dodaje szare marginesy wokół obszaru rysowania. Oto kolejna wersja bez szarych marginesów, ale nieco większa (198 bajtów) :

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);
}
segfaultd
źródło
1
czy znaki nowego wiersza i spacje na początku są obowiązkowe? Ponieważ możesz tam ogolić niektóre postacie.
Pinna_be
1

SmileBASIC, 65 bajtów

T$=TIME$T$[2]="
LOCATE 21,14T$[4]"
GCLS VAL("&H"+T$)?"#";T$EXEC.
12Me21
źródło
0

HTML + JavaScript (184)

Korzysta z =>zapisu, który jest obecnie obsługiwany tylko w przeglądarce Firefox. Nie korzysta z żadnych bibliotek.

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

Z wcięciem:

<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)
'>
marinus
źródło
1
czy wyjście nie powinno znajdować się na środku ekranu?
Pinna_be
0

C # 357, 325 z niewielkim oszustwem

Tak, C # nie wygra wielu nagród codegolf w stosunku do innych języków. Wciąż fajna zabawa!

Oszukiwanie ( niezupełnie na środku i tylko w środku z domyślnym formatem .NET 4.5 wynoszącym 300 x 300, Mono może robić inne śmieszne rzeczy):

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

Gra w golfa:

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

Nie golfowany:

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"));
        };
    }
}
Kok
źródło
0

Python 3, 122 znaki

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

Wykorzystuje undo()zdolność żółwia Python 3 do wyczyszczenia tylko poprzedniego tekstu. Nie wykazuje intensywnego migotania żółwia reset()spowodowanego resetowaniem wszystkiego w żółwiu.

cdlane
źródło