2017年はもうすぐ!


17

チャレンジ

課題は簡単です。

入力を行わず、次のメッセージを出力します。

 _     __    __
  |   |  | |   |
  |_  |__| |   | 

2016年12月31日のUTC午前0時前後の時間数に等しい回数。

たとえば、19:01 UTC dec 31stの場合、出力する必要があります。

 _     __    __
  |   |  | |   |
  |_  |__| |   | 
 _     __    __
  |   |  | |   |
  |_  |__| |   | 
 _     __    __
  |   |  | |   |
  |_  |__| |   | 
 _     __    __
  |   |  | |   |
  |_  |__| |   | 
 _     __    __
  |   |  | |   |
  |_  |__| |   | 

UTC 12月31日23:24の場合、出力する必要があります。

 _     __    __
  |   |  | |   |
  |_  |__| |   | 

そして、それが1:42 UTC 1月1日である場合、出力する必要があります:

 _     __    __
  |   |  | |   |
  |_  |__| |   | 
 _     __    __
  |   |  | |   |
  |_  |__| |   | 

明確化:12月31日の午後11時から11時の場合、2を出力する必要があります。

ルール

  • 入力なし
  • 末尾の行またはスペースは問題ありません。
  • あなたのプログラムは、私がそれを実行するときはいつでも動作するはずです(ただし、大きな出力があります)。たとえば、1月2日の午前0時15分にコードを25回出力する必要があります。

(これは私の最初のCode Golfの質問ですので、重要なものを残してしまった場合はお知らせください。)

これはコードゴルフなので、最短ビットが勝ちます


時間数は最も近い整数に丸められていますか?New-Year-midnightの30分以内であれば、出力はありませんか?
グレッグマーティン

@GregMartin明確化のために私の編集を参照してください。
量子スパゲティ化

1月3日にプログラムを実行するとどうなりますか?
betseg

@betseg ye私はちょうどそれについて考えました。編集を参照してください:)。出力が大きくても同じように動作するはずです。
量子スパゲティ化

最初の質問です。丸めについて:繰り返し回数は、現在の時刻UCTとUTC 1月1日0:00:00の差の絶対値で、切り上げられます。正しい?
edc65 16

回答:


6

JavaScript(ES6)、107

パラメータのない匿名メソッドとして

1483228800000Date.UTC(2017,0)

_=>` _     __    __
  |   |  | |   |
  |_  |__| |   |
`.repeat((Math.abs(new Date-14832288e5)+36e5-1)/36e5)

テストこれは1分ごとに更新され続けますが、出力の変更を確認するには多くの忍耐が必要です。

F=_=>`_     __    __
 |   |  | |   |
 |_  |__| |   |
`.repeat((Math.abs(new Date-14832288e5)+36e5-1)/36e5)

update=_=>O.textContent=F()

setInterval(update,60000)

update()
<pre id=O></pre>


4

Python 2-97 + 17 = 114バイト

import time
print'_     __    __\n |   |  | |   |\n |_  |__| |   |\n'*int((abs(time.time()-1483228800)+3599)/3600)

edc65の回答から天井のロジックを借用しました。

Python 3.5-116バイト

import time,math
print('_     __    __\n |   |  | |   |\n |_  |__| |   |\n'*math.ceil(abs(time.time()/3600-412008)))

math.ceil整数を返す3.xのに対して2.x、それはフロートを返します。

3バイトを節約してくれたelpedroに感謝します。


@ElPedroありがとう。私の以前のソリューションでは、datetime.now(pytz.utc).timestamp()Python 3.5が必要だったのをいじっていました。
グルパッドママダプール16


2

Clang 3.8.1でコンパイルされたC 327 317 145バイトで

@ edc65のおかげで172バイト節約

#include <time.h>
t;main(){time(&t);t=abs(difftime(t,1483228800)/3600);while(t--)puts(" _     __    __\n  |   |  | |   |\n  |_  |__| |   |\n");}

非ゴルフ

#include <time.h>
t;
main()
{
time(&t);

t=difftime(t, 1483228800)/3600;

while(t--)
    puts(" _     __    __\n  |   |  | |   |\n  |_  |__| |   |\n");
}

317バイト

@ LegionMammal978のおかげで10バイト節約

#include <time.h>
t,y,w;main() {struct tm n;time(&t);n=*localtime(&t);n.tm_hour=n.tm_min=n.tm_sec=n.tm_mon=0;n.tm_mday=1;w=n.tm_year;if((w&3)==0&&((w % 25)!=0||(w & 15)==0))w=8784;else w=8760;t=(int)difftime(t, mktime(&n))/3600;t=t<w/2?t:w-t;for(;y++<t;)puts(" _     __    __\n  |   |  | |   |\n  |_  |__| |   |\n");

非ゴルフ

#include <time.h>
t,y,w;
main()
{
    struct tm n;
    time(&t);

    n=*localtime(&t);

    n.tm_hour=n.tm_min=n.tm_sec=n.tm_mon=0;
    n.tm_mday=1;
    w=n.tm_year;

    if((w&3)==0&&((w % 25)!=0||(w & 15)==0))w=8784;else w=8760;

    t=(int)difftime(t, mktime(&n))/3600;
    t=t<w/2?t:w-t; 

    for(;y++<t;)
        puts(" _     __    __\n  |   |  | |   |\n  |_  |__| |   |\n");
}

できるようになったら説明を追加します。


できませn.tm_hour=n.tm_min=...=n.tm_mon=0;んか?
LegionMammal978 16

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