Đồng hồ Hex tối giản


14

Thử thách của bạn là tạo ra một chiếc đồng hồ hiển thị thời gian dưới dạng số hex và màu nền là mã màu hex của thời gian.

Yêu cầu: Không có đầu vào. Ở trung tâm đầu ra của bạn, bạn sẽ hiển thị ký hiệu số và thời gian hiện tại ở định dạng 24 giờ là "#hhmmss". Chương trình nên cập nhật đến thời điểm hiện tại ít nhất một lần mỗi giây. Văn bản phải ở giữa và màu trắng (hoặc màu sáng nổi bật). Nền nên hoàn toàn là màu của mã hex. Mã ngắn nhất chiến thắng, nhưng câu trả lời sáng tạo được khuyến khích.

Ví dụ sống . Ý tưởng từ r / InternetIsB Đẹp.


Tôi thích ý tưởng này, nhưng nó sẽ tốt hơn khi một cuộc thi nổi tiếng imo
William Barbosa

8
@WilliamBarbosa Tôi tin rằng kết quả quá đơn giản để một cuộc thi nổi tiếng trở nên hữu ích.
qwr

Bạn có thể muốn chỉ ra rằng bài đăng IIB là một bài đăng x từ / r / Minimalism. Nhưng heh.
cjfaure

Câu trả lời:


1

python3 (142) hoặc (123 với nhấp nháy)

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

sử dụng rùa, 142 byte, có thể sẽ không phải là ngắn nhất, nhưng tôi chỉ đơn giản muốn sử dụng chơi với rùa một lần nữa.

Ví dụ này cập nhật màn hình thường xuyên đủ để thực hiện những gì được yêu cầu, nhưng nó không đẹp, vì nó tiếp tục và tắt. Sau đó, nó chỉ có 123 byte. (không phải là chất lượng quy định)

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

vô dụng:

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, vì trong khi 1, tôi khuyên bạn nên chạy nó từ thiết bị đầu cuối. Vì có thể khá khó để đóng: D (bạn sẽ cần ctrl + c)


1
Bạn có thể giảm số lượng ký tự của mình bằng cách kết hợp tất cả các dòng trong vòng lặp while bằng dấu chấm phẩy.
isaacg

@isaacg cảm ơn bạn, tôi đã điều chỉnh nó.
Pinna_be

1
Bạn có thể giảm số ký tự của mình xuống 9 bằng cách xóa cuộc gọi cuối cùng update()thành bgcolor()cuộc gọi update()(bỏ qua cài đặt theo dõi). Bạn có thể lưu một nhân vật khác bằng cách sử dụng color([1]*3)thay vì "snow".
cdlane

@cdlane Tôi đã xóa cập nhật () trong câu trả lời thứ hai (codeblock thứ hai), tôi không nghĩ rằng đó là đúng khi để đó là câu trả lời cuối cùng của tôi vì mã đó đã gây ra một màn hình nhấp nháy sau đó và vì nó không xóa cái trước đó những con số làm cho nó xấu xí nếu để chạy trong một thời gian dài. màu "" "([1] * 3)" "" thực sự rất tiện lợi!
Pinna_be

5

HTML / CSS / JavaScript 207 183 180 161 152

Đã thử nghiệm và làm việc trong các trình duyệt Firefox và Chrome mới nhất.

<body id=b onload=setInterval("b.innerHTML=b.bgColor=Date().replace(/.*(..):(..):(..).*/,'#$1$2$3')",0) text=#fff style=position:fixed;top:50%;left:47%>

Demo tại đây


theo như tôi thấy, mã của bạn hoạt động hoàn hảo mà không cần <html style = height: 100%> ít nhất là trong safari / jsfiddle
Pinna_be

@Pinna_be Bắt tốt. Tôi đã thử một vài cách khác nhau để định tâm văn bản theo chiều dọc và điều đó còn sót lại từ một phương pháp khác.
nderscore

2
Tôi biết tôi đang hãm một số quy tắc bằng cách đưa ra nhận xét này, nhưng, chết tiệt bodythẻ này là vẻ đẹp thuần túy.
Jacob

1

Đang xử lý, 162 byte

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

Ảnh chụp màn hình:

nhập mô tả hình ảnh ở đây

Tôi không biết nếu nó trái với quy tắc, nhưng khu vực vẽ thực tế là hình vuông 100x100px ở giữa cửa sổ. Vì một số lý do, Xử lý không thể thu nhỏ cửa sổ xuống kích thước đó, vì vậy nó sẽ thêm các lề màu xám xung quanh khu vực vẽ. Đây là một phiên bản khác không có lề màu xám, nhưng lớn hơn một chút (198 byte) :

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
các dòng mới và không gian ở đầu bắt buộc? Bởi vì bạn có thể cạo sạch một số nhân vật ở đó.
Pinna_be

1

SmileBASIC, 65 byte

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

0

HTML + Javascript (184)

Điều này sử dụng =>ký hiệu hiện chỉ được hỗ trợ trong Firefox. Nó không sử dụng bất kỳ thư viện.

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

Với vết lõm:

<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
Không nên đầu ra ở giữa màn hình?
Pinna_be

0

C # 357, 325 với gian lận nhỏ

Phải, C # sẽ không giành được nhiều giải thưởng codegolf so với các ngôn ngữ khác. Vẫn vui!

Gian lận (không chính xác là trung tâm và chỉ trung tâm với kích thước biểu mẫu mặc định của .NET 4.5 là 300x300, Mono có thể thực hiện các hoạt động hài hước khác):

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

Chơi gôn

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

Ung dung:

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 ký tự

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

Tận dụng undo()khả năng của Python 3 rùa để xóa văn bản trước đó. Không thể hiện sự nhấp nháy dữ dội của rùa reset()gây ra bởi nó đặt lại mọi thứ về con rùa.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.