Horloge hexagonale minimaliste

14

Votre défi est de créer une horloge qui affiche l'heure sous forme de nombre hexadécimal et la couleur d'arrière-plan comme code de couleur hexadécimal de l'heure.

Exigences: Aucune entrée. Au centre de votre sortie, vous devez afficher le signe numérique et l'heure actuelle au format 24 heures sous la forme "#hhmmss". Le programme doit être mis à jour à l'heure actuelle au moins une fois par seconde. Le texte doit être centré et blanc (ou une couleur claire qui ressort). L'arrière-plan doit être entièrement de la couleur du code hexadécimal. Le code le plus court gagne, mais les réponses créatives sont encouragées.

Exemple en direct . Idée de r / InternetIsBeautiful.

qwr
la source
J'ai aimé l'idée, mais ce serait mieux comme concours de popularité imo
William Barbosa
8
@WilliamBarbosa Je pense que le résultat est bien trop simple pour qu'un concours de popularité soit utile.
qwr
Vous voudrez peut-être souligner que le post IIB est un x-post de / r / minimalisme. Mais bon.
cjfaure

Réponses:

1

python3 (142) ou (123 avec scintillement)

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

utiliser des tortues, 142 octets, ne sera probablement pas le plus court, mais je voulais simplement utiliser à nouveau le jeu avec les tortues.

Cet exemple met à jour l'écran assez souvent et fait ce qui est demandé, mais ce n'est pas joli, car il s'allume et s'éteint. Il ne s'agit alors que de 123 octets. (pas une qualité spécifiée)

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

non 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

btw, à cause du moment 1, je recommanderais de l'exécuter à partir du terminal. Comme il peut être assez difficile de fermer: D (vous aurez besoin de ctrl + c)

Pinna_be
la source
1
Vous pouvez réduire le nombre de caractères en combinant toutes les lignes des boucles while à l'aide de points-virgules.
isaacg
@isaacg merci, je l'ai adapté.
Pinna_be
1
Vous pouvez réduire votre nombre de caractères de 9 en supprimant déjà l'appel final en update()tant bgcolor()qu'appels update()(en ignorant le paramètre du traceur). Vous pouvez enregistrer un autre personnage en utilisant color([1]*3)au lieu de "snow".
cdlane
@cdlane J'ai supprimé la mise à jour () dans la deuxième réponse (deuxième bloc de code), je ne pensais pas qu'il était juste de laisser cela être ma réponse finale car ce code provoquait un écran clignotant à l'époque et comme il ne supprime pas le précédent des chiffres qui le rendent moche si on le laisse courir longtemps. la couleur "" "([1] * 3)" "" est une astuce très astucieuse!
Pinna_be
5

HTML / CSS / JavaScript 207 183 180 161 152

Testé et fonctionnant dans les derniers navigateurs Firefox et 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%>

Démo ici

nderscore
la source
pour autant que je vois, votre code fonctionne parfaitement sans le <html style = height: 100%> au moins dans safari / jsfiddle
Pinna_be
@Pinna_be Bonne prise. J'essayais quelques façons différentes de centrer verticalement le texte et cela a été laissé par une autre méthode.
nderscore
2
Je sais que je freine certaines règles en faisant ce commentaire, mais, putain, cette bodybalise est pure beauté.
Jacob
1

Traitement, 162 octets

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

Capture d'écran:

entrez la description de l'image ici

Je ne sais pas si c'est contraire aux règles, mais la zone de dessin réelle est le carré 100x100px au centre de la fenêtre. Pour une raison quelconque, le traitement ne peut pas réduire la fenêtre à cette taille, il ajoute donc les marges grises autour de la zone de dessin. Voici une autre version sans les marges grises, mais légèrement plus grande (198 octets) :

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
la source
1
les nouvelles lignes et les espaces au début sont-ils obligatoires? Parce que vous pourriez raser certains personnages là-bas.
Pinna_be
1

SmileBASIC, 65 octets

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

HTML + Javascript (184)

Cela utilise la =>notation qui n'est actuellement prise en charge que par Firefox. Il n'utilise aucune bibliothèque.

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

Avec retrait:

<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
la source
1
la sortie ne devrait-elle pas être au centre de l'écran?
Pinna_be
0

C # 357, 325 avec tricherie mineure

Oui, C # ne va pas gagner de nombreux prix de codegolf contre d'autres langues. Toujours amusant!

La triche (pas exactement le centre, et seulement le centre avec la taille de formulaire par défaut de .NET 4.5 de 300x300, Mono peut faire d'autres choses amusantes):

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

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

Non 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"));
        };
    }
}
Bob
la source
0

Python 3, 122 caractères

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

Profite de la undo()capacité de la tortue Python 3 à effacer uniquement le texte précédent. Ne présente pas le scintillement intense de la tortue reset()causé par la réinitialisation de tout ce qui concerne la tortue.

cdlane
la source