Minimal Hex Clock


14

ความท้าทายของคุณคือการสร้างนาฬิกาที่แสดงเวลาเป็นตัวเลขฐานสิบหกและสีพื้นหลังเป็นรหัสสีฐานสิบหกของเวลา

ข้อกำหนด: ไม่มีอินพุต ที่กึ่งกลางของเอาต์พุตของคุณคุณควรแสดงเครื่องหมายตัวเลขและเวลาปัจจุบันในรูปแบบ 24 ชั่วโมงเป็น "#hhmmss" โปรแกรมควรอัปเดตเป็นเวลาปัจจุบันอย่างน้อยทุก ๆ วินาที ข้อความจะต้องอยู่กึ่งกลางและสีขาว (หรือสีอ่อนที่โดดเด่น) พื้นหลังควรเป็นสีทั้งหมดของรหัสฐานสิบหก รหัสที่สั้นที่สุดชนะ แต่ได้รับคำตอบที่สร้างสรรค์

ตัวอย่างสด ความคิดจาก r / Internet เป็นสิ่งที่สวยงาม


ฉันชอบความคิดนี้ แต่มันจะดีกว่าถ้าเป็นการประกวดความนิยม
William Barbosa

8
@ WilliamBarbosa ฉันเชื่อว่าผลลัพธ์จะง่ายเกินไปสำหรับการประกวดความนิยมที่จะเป็นประโยชน์
qwr

คุณอาจต้องการชี้ให้เห็นว่าโพสต์ IIB เป็นโพสต์ x จาก / r / minimalism แต่เฮ้
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

btw เนื่องจากในขณะที่ 1 ฉันขอแนะนำให้เรียกใช้จากเทอร์มินัล เนื่องจากอาจเป็นการยากที่จะปิด: D (คุณจะต้องมี ctrl + c)


1
คุณสามารถลดจำนวนตัวละครของคุณโดยการรวมบรรทัดทั้งหมดในลูป while โดยใช้เครื่องหมายอัฒภาค
isaacg

@isaacg ขอบคุณฉันปรับมัน
Pinna_be

1
คุณสามารถลดจำนวนตัวละครของคุณลงได้ 9 โดยลบการโทรออกครั้งสุดท้ายupdate()เป็นการbgcolor()โทรออกupdate()(ไม่สนใจการตั้งค่าตัวติดตาม) คุณสามารถบันทึกตัวอักษรอื่นโดยใช้แทนcolor([1]*3) "snow"
cdlane

@cdlane ฉันลบการอัปเดต () ในคำตอบที่สอง (codeblock บล็อกที่สอง) ฉันไม่คิดว่ามันถูกต้องที่จะให้มันเป็นคำตอบสุดท้ายของฉันเพราะรหัสนั้นทำให้หน้าจอกะพริบแล้วและไม่ลบออกก่อนหน้า ตัวเลขทำให้มันน่าเกลียดถ้าปล่อยให้รันเป็นเวลานาน สี "" "([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แท็กนี้เป็นความงามที่บริสุทธิ์
Jacob

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


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 # จะไม่ชนะรางวัล codegolf จำนวนมากเมื่อเทียบกับภาษาอื่น ๆ ยังสนุก!

Cheating (ไม่ตรงกลางและอยู่กึ่งกลางด้วยขนาดเริ่มต้นของ. 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"));};}}

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()เกิดจากการรีเซ็ตทุกอย่างเกี่ยวกับเต่า

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.