Мінімалістичний шестигранний годинник


14

Ваше завдання - створити годинник, який відображатиме час у вигляді шістнадцяткового числа, а колір тла - шістнадцятковий кольоровий код часу.

Вимоги: немає вводу. У центрі вашого висновку ви повинні відображати знак цифри та поточний час у форматі 24 годин як "#hhmmss". Програма повинна оновлюватись до поточного часу принаймні один раз на секунду. Текст повинен бути по центру і білим (або світлим кольором, який виділяється). Фон повинен бути повністю кольором шістнадцяткового коду. Найкоротший код виграє, але рекомендуються творчі відповіді.

Живий приклад . Ідея від r / InternetIsBeautiful.


Ідея мені сподобалась, але це було б краще як конкурс популярності imo
Вільям Барбоса

8
@WilliamBarbosa Я вважаю, що результат є занадто простим, щоб конкурс на популярність був корисним.
qwr

Можливо, ви хочете зазначити, що повідомлення IIB є x-повідомлення від / r / мінімалізму. Але хе.
cjfaure

Відповіді:


1

python3 (142) або (123 із мерехтінням)

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

використання черепах, 142 байти, напевно, не буде найкоротшим, але я просто хотів знову використовувати гру з черепашками.

Цей приклад оновлює екран досить часто, тому що робить те, що запитується, але це не дуже, оскільки він продовжується і вимикається. Тоді це всього 123 байти. (не вказана якість)

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

неозорений:

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, через час 1 я рекомендую запустити його з терміналу. Оскільки це може бути досить важко закрити: D (вам знадобиться ctrl + c)


1
Ви можете зменшити кількість символів, комбінуючи всі рядки в циклі while, використовуючи крапки з комою.
isaacg

@isaacg дякую, я адаптував це.
Pinna_be

1
Ви можете зменшити кількість символів на 9, видаливши остаточний дзвінок update()як bgcolor()дзвінки update()(ігноруючи налаштування відстежувача). Ви можете зберегти інший символ, використовуючи color([1]*3)замість "snow".
cdlane

@cdlane Я видалив оновлення () у другій відповіді (другий кодовий блок), я не вважав, що це було правильним, щоб це було моєю остаточною відповіддю, оскільки цей код викликав мерехтіння екрана тоді, і оскільки він не видаляє попередній числа, що робить його потворним, якщо його дозволяють тривати довгий час. "" "колір ([1] * 3)" "" дійсно дуже вишуканий трюк!
Pinna_be

5

HTML / CSS / JavaScript 207 183 180 161 152

Тестується та працює в останніх браузерах Firefox та 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%>

Демо тут


наскільки я бачу, ваш код прекрасно працює без <html style = height: 100%> принаймні в safari / jsfiddle
Pinna_be

@Pinna_be Хороший улов. Я випробовував кілька різних способів вертикального центрування тексту, і це залишилося від іншого методу.
nderscore

2
Я знаю, що я гальмую деякі правила, роблячи цей коментар, але, чорт забираю, ця bodyмітка є чистою красою.
Яків

1

Обробка, 162 байти

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

Знімок екрана:

введіть тут опис зображення

Я не знаю, чи це суперечить правилам, але фактична площа малювання - квадрат 100х100 пікселів в центрі вікна. Чомусь, Processing не може змінити масштаб вікна до такого розміру, тому він додає сірі поля навколо області малювання. Ось ще одна версія без сірого поля, але трохи більша (198 байт) :

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
чи є нові рядки та пробіли на початку обов'язковими? Тому що ти можеш поголити деяких персонажів там.
Pinna_be

1

SmileBASIC, 65 байт

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

0

HTML + Javascript (184)

Для цього використовується =>позначення, яке наразі підтримується лише у Firefox. Тут не використовуються жодні бібліотеки.

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

З відступом:

<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
чи не повинен вивід знаходитись в центрі екрана?
Pinna_be

0

C # 357, 325 з незначним обманом

Так, C # не виграє багато призів кодогольфа проти інших мов. Все-таки весело!

Обман (не саме центр, а єдиний центр, розмір форми за замовчуванням .NET 4.5 - розмір 300x300, Mono може робити інші смішні речі):

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

Гольф:

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

Безголівки:

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

Пітон 3, 122 символи

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

Скористається можливістю черепахи Python 3 undo()очистити лише попередній текст. Не виявляє сильного мерехтіння черепахи, reset()викликаного нею, скидання всього про черепаху.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.