ミニマリスト六角時計


14

あなたの課題は、時刻を16進数で表示し、背景色を時刻の16進カラーコードとして表示する時計を作成することです。

要件:入力なし。出力の中央に、#記号と現在の時刻を24時間形式で「#hhmmss」として表示する必要があります。プログラムは、少なくとも1秒に1回は現在の時刻に更新する必要があります。テキストは中央に配置され、白(または目立つ明るい色)でなければなりません。背景は完全に16進コードの色でなければなりません。最短のコードが優先されますが、創造的な答えが推奨されます。

ライブ例。r / InternetIsBeautifulからのアイデア。


私はこのアイデアが好きでしたが、人気コンテストimo
William Barbosa 14年

8
@WilliamBarbosaその結果は、人気コンテストが役に立つほど単純すぎると思います。
QWR

IIBの投稿は/ r / minimalismのx投稿であることを指摘してください。でもね。
cjfaure 14年

回答:


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

ところで、while 1のため、ターミナルから実行することをお勧めします。閉じるのは非常に難しいので、:D(ctrl + cが必要です)


1
whileループ内のすべての行をセミコロンを使用して結合することにより、文字数を減らすことができます。
isaacg 14年

@isaacgありがとう、私はそれを改作しました。
Pinna_be 14年

1
update()as bgcolor()呼び出しへの最後の呼び出しを削除することでupdate()(トレーサー設定を無視して)、文字数を9減らすことができます。のcolor([1]*3)代わりにを使用して、別のキャラクターを保存できます"snow"
cdlane

@cdlane私は2番目の答え(2番目のコードブロック)で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%>

デモはこちら


これまで私が見るようにと、あなたのコードが完全に<htmlのスタイル=高さ:100%>なしで動作サファリ/ jsfiddle、少なくとも
Pinna_be

@Pinna_be良いキャッチ。私はテキストを垂直方向に中央揃えするいくつかの異なる方法を試していましたが、それは別の方法で残されました。
nderscore 14年

2
私はこのコメントをすることでいくつかのルールを壊していますが、このbodyタグは純粋な美しさです。
ジェイコブ14年

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

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

0

C#357、325、軽度の不正行為

はい、C#は他の言語に対して多くのcodegolf賞を獲得するつもりはありません。それでも、楽しい!

不正行為(正確には中央ではなく、.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()リセットすることによって引き起こされる、カメの激しいちらつきは見られません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.