您的挑战是创建一个时钟,该时钟将时间显示为十六进制数字,而背景色则显示时间的十六进制颜色代码。
要求:无输入。在输出的中心,您应该以"#hhmmss“的形式以24小时格式显示数字符号和当前时间。程序应该至少每秒钟更新一次当前时间。文本必须居中和白色(或浅色突出)。背景应该完全是十六进制代码的颜色。最短的代码获胜,但鼓励创造性的答案。
实例化。从R/Internetis美妙的想法。
发布于 2014-06-21 00:48:25
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);
}发布于 2014-06-20 22:31:17
这使用了目前只支持火狐的=>表示法。它不使用任何库。
<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)
'>发布于 2014-06-21 09:15:54
是的,C#不可能赢得很多针对其他语言的合作伙伴奖。尽管如此,有趣!
作弊(不完全是中间,只有.NET 4.5's默认表格大小为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"));
};
}
}https://codegolf.stackexchange.com/questions/32134
复制相似问题