极简主义的十六进制时钟


14

您面临的挑战是创建一个将时间显示为十六进制数字,将背景颜色显示为时间的十六进制颜色代码的时钟。

要求:无输入。在输出的中间,您应将数字符号和当前时间以24小时格式显示为“ #hhmmss”。程序应至少每秒更新一次到当前时间。文本必须居中且为白色(或突出的浅色)。背景应该完全是十六进制代码的颜色。最短的代码胜出,但鼓励创造性的答案。

现场例子。来自r / InternetIsBeautiful的想法。


我喜欢这个主意,但是作为人气竞赛imo会更好
William Barbosa

8
@WilliamBarbosa我相信对于普及竞赛而言,结果太简单了而无用。
qwr 2014年

您可能要指出,IIB帖子是来自/ r / minimalism的x帖子。可是
cjfaure

Answers:


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

顺便说一句,由于有1个,我建议从终端运行它。由于关闭:D可能非常困难(您需要ctrl + c)


1
您可以使用分号将while循环中的所有行组合在一起,以减少字符数。
isaacg 2014年

@isaacg谢谢,我适应了它。
Pinna_be 2014年

1
您可以通过删除最终调用update()as bgcolor()调用update()(忽略跟踪器设置)来减少9个字符。您可以使用color([1]*3)代替来保存另一个字符"snow"
cdlane

@cdlane我在第二个答案(第二个代码块)中删除了update(),我认为让它作为我的最终答案是不正确的,因为那段代码当时导致屏幕闪烁,并且它没有删除前一个如果长时间运行,数字将变得很难看。“”“ color([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%>

在这里演示


据我所知,您的代码至少在safari / jsfiddle中完全没有<html style = height:100%>即可正常工作
Pinna_be 2014年

@Pinna_be好收获。我正在尝试几种垂直居中放置文本的方法,而这是另一种方法遗留下来的方法。
nderscore 2014年

2
我知道我通过发表评论来制止某些规则,但是,该死的body标签真是美。
2014年

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正方形。由于某种原因,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 2014年

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 2014年

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

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 turtle的undo()功能仅清除前面的文本。不会显示reset()由于重置所有乌龟而引起的乌龟剧烈闪烁。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.