Minimalist Onaltılı Saat


14

Zorluk, zamanı onaltılık sayı ve arka plan rengini zamanın onaltılık renk kodu olarak gösteren bir saat oluşturmaktır.

Gereksinimler: Girdi yok. Çıktınızın ortasında sayı işaretini ve geçerli saati 24 saat biçiminde "#hhmmss" olarak görüntülemeniz gerekir. Programın en az saniyede bir kez geçerli saate güncellenmesi gerekir. Metin ortalanmış ve beyaz olmalıdır (veya belirgin bir açık renk). Arka plan tamamen onaltılı kodun rengi olmalıdır. En kısa kod kazanır, ancak yaratıcı yanıtlar teşvik edilir.

Canlı örnek . R / InternetIsBeautiful dan bir fikir.


Fikri sevdim, ama popülerlik yarışması imo olarak daha iyi olurdu
William Barbosa

8
@WilliamBarbosa Sonuçların popülerlik yarışmasının yararlı olamayacak kadar basit olduğuna inanıyorum.
qwr

IIB yazısının / r / minimalizm'den x-yazısı olduğuna dikkat etmek isteyebilirsiniz. Ama heh.
cjfaure

Yanıtlar:


1

python3 (142) veya (titreyen 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()

kaplumbağalar kullanarak, 142 bayt, muhtemelen en kısa olmayacak, ama sadece kaplumbağalarla oyunu tekrar kullanmak istedim .

Bu örnek, sorulan şeyi yapması için ekranı yeterince sık günceller, ancak açık ve kapalı olduğu için hoş değildir. O zaman sadece 123 bayt. (belirtilen bir kalite değil)

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, süre 1 nedeniyle, terminalden çalıştırmanızı tavsiye ederim. Kapatmak oldukça zor olabileceğinden: D (ctrl + c'ye ihtiyacınız olacak)


1
Süre döngülerindeki tüm satırları noktalı virgül kullanarak birleştirerek karakter sayınızı azaltabilirsiniz.
isaacg

@isaacg teşekkür ederim, uyarladım.
Pinna_be

1
Son çağrıları çağrı update()olarak kaldırarak (izleyici ayarını yoksayarak) karakter sayınızı 9 azaltabilirsiniz . Sen kullanarak başka bir karakter kaydedebilirsiniz yerine . bgcolor()update()color([1]*3)"snow"
cdlane

@cdlane Ben ikinci cevap (ikinci kod bloğu) update () kaldırıldı, o kod o zaman titrek bir ekrana neden olduğu ve bu önceki önceki kaldırmaz gibi son cevabım izin doğru olduğunu düşünmüyordu uzun süre koşarsanız çirkin hale getirir. "" "renk ([1] * 3)" "" gerçekten çok şık bir numara!
Pinna_be

5

HTML / CSS / JavaScript 207 183 180 161 152

En yeni Firefox ve Chrome tarayıcılarında test edildi ve çalışıyor.

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

Burada Demo


en azından safari / jsfiddle içinde: bildiğim kadarıyla gördüğünüz gibi, kodunuz mükemmel <% 100 html style = yükseklik> olmadan çalışır
Pinna_be

@Pinna_be İyi yakaladın. Metni dikey olarak ortalamanın birkaç farklı yolunu deniyordum ve bu başka bir yöntemden kaldı.
nderscore

2
Bu yorumu yaparak bazı kuralları frenlediğimi biliyorum, ama lanet olsun bu bodyetiket saf güzellik.
Jacob

1

İşleme, 162 bayt

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

Ekran görüntüsü:

resim açıklamasını buraya girin

Kurallara aykırı olup olmadığını bilmiyorum, ama gerçek çizim alanı pencerenin ortasındaki 100x100 piksel kare. Nedense, İşleme pencereyi bu boyuta ölçekleyemez, bu nedenle çizim alanının etrafına gri kenar boşlukları ekler. İşte gri kenar boşlukları olmayan, ancak biraz daha büyük (198 bayt) başka bir sürüm :

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
yeni satırlar ve başlangıçtaki boşluklar zorunlu mudur? Çünkü orada bazı karakterleri tıraş edebilirsin.
Pinna_be

1

SmileBASIC, 65 bayt

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

0

HTML + Javascript (184)

Bu =>, şu anda yalnızca Firefox'ta desteklenen gösterimi kullanır . Herhangi bir kütüphane kullanmaz.

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

Girinti ile:

<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
çıktı ekranın ortasında olmamalı mı?
Pinna_be

0

C # 357, 325 küçük hile ile

Evet, C # diğer dillere karşı pek çok codegolf ödülü kazanmayacak. Hala eğlenceli!

Hile ( tam olarak merkezi değil ve yalnızca .NET 4.5'in varsayılan form boyutu 300x300 olan Mono, diğer komik şeyler yapabilir):

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 karakter

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

Python 3 kaplumbağasının undo()sadece önceki metni temizleme özelliğinden yararlanır. Kaplumbağa ile ilgili her şeyireset() sıfırlaması nedeniyle kaplumbağanın yoğun titremesini göstermez .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.