Минималистские шестнадцатеричные часы


14

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

Требования: нет ввода. В центре вашего вывода вы должны отобразить знак числа и текущее время в 24-часовом формате как «#hhmmss». Программа должна обновляться до текущего времени хотя бы раз в секунду. Текст должен быть в центре и белый (или светлый цвет, который выделяется). Фон должен быть полностью цветом шестнадцатеричного кода. Самый короткий код выигрывает, но творческие ответы приветствуются.

Живой пример . Идея от r / InternetIsBeautiful.


Мне понравилась идея, но это было бы лучше, как конкурс популярности Imo
Уильям Барбоза

8
@WilliamBarbosa Я считаю, что результат слишком прост, чтобы конкурс на популярность не был полезным.
Qwr

Вы можете указать, что пост IIB - это пост x / минимализма. Но хе.
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)

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

Кстати, из-за времени 1, я бы рекомендовал запустить его из терминала. Как это может быть довольно трудно закрыть: D (вам понадобится Ctrl + C)


1
Вы можете уменьшить количество символов, комбинируя все строки в циклах while, используя точки с запятой.
Исаак

@isaacg спасибо, я адаптировал это.
Pinna_be

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

@cdlane Я удалил update () во втором ответе (второй кодовый блок), я не думал, что было бы правильным, чтобы это было моим окончательным ответом, поскольку этот код вызывал мерцающий экран в то время, и поскольку он не удаляет предыдущий числа, делающие это уродливым, если позволяют бежать в течение длительного времени. цвет "" "([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);
}

Скриншот:

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

Я не знаю, противоречит ли это правилам, но фактическая область рисования - это квадрат 100x100px в центре окна. По какой-то причине, обработка не может уменьшить окно до этого размера, поэтому она добавляет серые поля вокруг области рисования. Вот еще одна версия без серых полей, но немного больше (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"));};}}

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 символа

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.