クリスマスイブ形式で日付をエンコードする


51

この投稿が公開された日はクリスマスイブでした。明日はクリスマスになります。昨日はクリスマスイブでした。二日で

Christmas Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve

あなたの仕事は、プログラムの実行日を取得し、クリスマスイブ形式でエンコードすることです。

  • プログラムをクリスマスに実行する場合、文字列「Christmas」を出力する必要があります。
  • あなたのプログラムは、クリスマス上で実行されていない場合は、出力文字列が続く文字列「クリスマス」、「イブ」は繰り返さなければならないn、どこ回nクリスマスまでの日数です。
    • これは次のクリスマスに基づいている必要があることに注意してください。たとえば、日が2019年4月26日である場合、他のクリスマスではなく、2019年12月25日に基づいて計算を行う必要があります。
    • うるう日を数えることを忘れないでください。
  • クリスマスは毎年12月25日です。

これはなので、最短のコードが優先されます!ただし、目標はどの言語でも最短のプログラムを見つけることではなく、特定のすべての言語で最短のプログラムを見つけることです。たとえば、最短のC ++プログラムを見つけた場合、誰かがPythonで短いプログラムを見つけたとしても、C ++のこのコンテストで優勝します。


7
どういうわけか私はこれが漫画を見た瞬間にPPCGチャレンジになることを知っていた
Black Owl Kai

25
今日公開されたxkcd漫画。imgs.xkcd.com/comics/christmas_eve_eve.png
Black Owl Kai

7
@BlackOwlKai LMBOあなたのコメントまでその漫画は見ませんでした。私はすでにこれを投稿する予定でしたが、クリスマスイブを待っていました。偉大な心は同じように思う、と思う?
PyRulez

1
日付をパラメーターにすることはできますか?
オリビエグレゴワール

1
@OlivierGrégoireええと、言語に別の方法で現在の日付を取得する機能がない場合は許可します。
PyRulez

回答:


52

SmileBASIC、73 71 67バイト

?"Christmas";
@L?" Eve"*(D!=P);
P=D
DTREAD OUT,M,D
IF M/D-.48GOTO@L

プログラムは「Christmas」を出力し、1日が経過するたびに「Eve」を12月25日まで出力します。(12/25 = 0.48)
実行に最大1年かかる場合があります。


7
純粋な天才...
FlipTack

7
これは...私はスマイル製
ニール・

3
いいね!私のJavaScriptソリューションの1つは、同様のアプローチを採用しています。ただし、JavaScriptでは待機時間は最善の努力です。この点で、SmileBASICはどうですか?
タルグモン

4
うるう秒のために明らかに失敗する@ 12Me21、このバージョンはずっと良く見えます。
Rɪᴋᴇʀ

5
ボックスの外側を考えて、私を笑わせてくれた+1
トム

24

Excelの数式、59バイト

="Christmas"&REPT(" Eve",DATE(YEAR(NOW()+6),12,25)-TODAY())

4
私はYEAR(TODAY()+6)常に正しい年を返すと思うので、条件を回避します。
ニール

3
私はYEAR(NOW()+6)2バイト少ないと同様に動作すると思います。
エンジニアトースト

2
= "Christmas"&REPT( "Eve"、DATE(YEAR(NOW()+ 6)、12,26)-NOW())はさらに短いと思うので、動作するはずです。
JeroendeK

1
NOW()時間を含むため、整数にはならずREPT、それを許可するかどうかはわかりません
12Me21

2
しかし、これはクリスマスの日に「クリスマス」を与えるものではありません。チェック="Christmas"&REPT(" Eve",DATE(YEAR(DATE(2018,12,25)+6),12,26)-DATE(2018,12,25))
アンソニー

12

Perl 6の61の 47バイト

「クリスマス」〜「イブ」と言います(Date.today ... ^ {。month == 12 &&。day == 25})

say 'Christmas'~' Eve'x(Date.today...^/12\-25/)

オンラインでお試しください!

-14バイト(!)

Date.today ...^ /12\-25/今日からクリスマスの前日までの一連の日付です。(正規表現/12\-25/は、日付の文字列表現と照合されます。)文字列" Eve"は、そのシーケンスの長さに等しい回数だけ複製され、stringの後に出力されます"Christmas"


バイトを保存するために「month> 11」を実行できますか?
chrixbittinx

2
だろう/12.25/動作しますか?
Kritixi Lithos

2
、ノー@Cowsquackそれはのような日付の年と一致する可能性があるため、12025-12-24
ジョー・キング

私はそれはそれは決して起こらないと仮定しても安全だと思う
12Me21

8

R112 106 72バイト

@digEmAllおよび@ J.Doe経由

x=Sys.Date()-1;cat('Christmas');while(!grepl('12-25',x<-x+1))cat(' Eve')

オンラインでお試しください!

私の最初の答えは、コードが入力として実行される日付をコードが取得することになるという明確化の前でした。上記のように変更して多くのバイトを節約できますが、気にしません。

function(x,z=as.Date(paste0(strtoi(format(x,"%Y"))+0:1,"-12-25"))-x)cat("Christmas",rep("Eve",z[z>=0][1]))

オンラインでお試しください!

説明:全員が教会にいるので、私はこれをする時間があります。年を抽出し、強制的に整数にします。その年のXmasと次の年のXmasのベクトルを作成し、入力日付を減算して、入力日付とそれらの2つのXmasの2つの差のベクトルを取得します。

ネガティブでないものとcat、その多くの「イブ」で「クリスマス」を選んでください。


y一度だけ使用すれば、108バイトで直接使用できます。
ジュゼッペ

また、z[z>=0][1]代わりに動作しminますか?
ジュゼッペ

73バイト。最後のコメントによると、プログラムは実行日に基づいてテキストを出力する必要があります。メリークリスマスところで!:D
digEmAll

1
以下のための微調整あなたの72バイト、@digEmAll。メリークリスマス!
J.Doe

8

Windows PowerShell67 64 63バイト

for(;1225-'{0:Md}'-f(date|% *ys $i)){$i++}'Christmas'+' eve'*$i

オンラインでお試しください!

の代わりにormat演算子を使用し、で比較する代わりに数値1225から日付文字列を減算することにより、3バイト 4バイトを削減しました(Cows quackに感謝)。結果の整数は、条件のブール値として解釈されます(クリスマスに発生します)は(ループに入らない)と解釈され、他の値は(ループに入る)と解釈されます。-f.ToString()-ne0FalseTrue

整数は現在左側にある1225ため、比較のために整数が文字列に変換された以前のバージョンとは対照的に、日付文字列は整数に変換されて数学が実行されます。

元のバージョン


Windows PowerShell、67バイト

for(;(date|% *ys $i|% tost* Md)-ne1225){$i++};'Christmas'+' eve'*$i

オンラインでお試しください!

基本的に、forループをループとして使用するのwhileは、それが短いからです。ループ条件では、ワイルドカード名でメソッドを呼び出すことができる形式を使用して、のエイリアスにパイプdateされた現在の日付(の短縮形Get-Date)をチェックします。この場合には方法がある上、オブジェクト、そして我々はそれを与える値です。ForEach-Object%AddDays()DateTime$i

これは、フォーマット文字列(次に来るものを気にしないので月、日、最小桁)でメソッドForEach-Objectを呼び出すために再びパイプされます。この文字列は、数値と等しくないかどうかを確認するためにテストされ、比較のために文字列に変換され、引用符が保存されます。ToString()Md-ne1225

これが、月と日が1桁であっても問題ではない理由1225です。1年のうちでに文字列化する日がないため、あいまいになることはありません。

文字列がになる までループが続きます1225。プログラムの開始時$iにゼロになり、今日の日付を比較し、ループは実行されませんが、それ以外の日$iはループ本体で増分されます。そのため、来年のクリスマス、うるう年と今年がクリスマスを過ぎたかどうかを自動的に計算します。

ループの後、Christmas文字列eveに値を掛けた結果と連結された文字列を出力するだけです$i(クリスマスの日にはになり0、結果はeves になりません)。


どうやら;{$i++}は冗長ですか?(また、bashで再びリードを奪ったわ。)
Kritixi Lithos

@Cosquackいいね!どうしてそれに気づかなかったの?
ブリアンティスト

7

C#(Visual C#Interactive Compiler)、89バイト

Write("Christmas");for(var t=DateTime.Now;$"{t:Md}"!="1225";t=t.AddDays(1))Write(" Eve");

オンラインでお試しください!

@JeppeStigNielsenのおかげで-3バイト!

私の戦略は非常に簡単です:

  1. ループ変数tを現在の日付に初期化する
  2. クリスマスではないEve場合に印刷t
  3. に日を追加しtて繰り返す

私はいくつかの手の込んだことを試してみましたが、この方法では必要なバイト数が最小になりました。


...インクリメンタでtを自分自身に割り当てる必要がありますか?私は目の前にドキュメントを持っていませんが、そうでない場合は、さらに2バイト節約できます。
Stackstuck

1
ああ、それは構造体です。もちろん。気にしないで。
Stackstuck

1
t.Month<12|t.Day!=25短いで置き換えることができ$"{t:Md}"!="1225"ます。補間された文字列とカスタムDateTimeフォーマット文字列を使用します。
ジェッペスティグニールセン

6

T-SQL、92 88バイト

PRINT'Christmas'+REPLICATE(' Eve',DATEDIFF(D,GETDATE(),STR(YEAR(GETDATE()+6))+'-12-25'))

編集:@BradCのおかげで4バイト保存されました。


よくやった。2保存PRINT'Christmas'+...して使用して2以上DATEDIFF(D,の代わりにDATEDIFF(DAY,
BradC

@BradCいいね、ありがとう!
ニール

5

APL(Dyalog Unicode)76 63 バイトSBCS

完全なプログラム。想定⎕IO←0(ゼロインデックス)。

⎕CY'dfns'
'Christmas',' Eve'⍴⍨4×12 25⍳⍨⍉2↑1↓⍉date(⍳366)+days⎕TS

オンラインでお試しください!

⎕CY'dfns'dfnsライブラリのc o p y

⎕TS 現在のt IME ようタンプ[年、月、日、時、分、秒、ミリ秒]
days[C]  の日数を見つける[n]は 1899年12月31日00以降:00:00.000が、
(⍳366) 最初の366個の整数(0を追加…365)その
date[c]に  、それらの番号に対応する日付[n]を見つけます(366×7テーブル、ユニットごとに1列)
 転置(7×366テーブル、ユニットごとに1行)
1↓ ドロップ1行(年)
2↑ かかります最初の2行(月と日)
12 25⍳⍨ は、最初のクリスマスのインデックスを検索し、
 4で乗算し
' Eve'⍴⍨ て文字リストを再形成し、
'Christmas ', これにこれを追加します

[c]  その関数のコード
[n]  その関数のメモ


5

パイソン2111の 103バイト

from datetime import*
d=date.today()
print"Christmas"+" Eve"*(date((d+timedelta(6)).year,12,25)-d).days

オンラインでお試しください!

リチャード・クロスリーの答えに触発された更新。

説明:

from datetime import*
# get today as a date, so we don't have to worry about rounding errors due to time
d=date.today()
                              # get the year of the Christmas to compare to
                              # if the current date is after this year's Christmas, the 6 day offset will give the next year
                              # otherwise, returns this year
                              (d+timedelta(6)).year
                         # next Christmas minus the current date
                         date(.....................,12,25)-d
# Christmas, plus (number of days until next Christmas) " Eve"s
print"Christmas"+" Eve"*(...................................).days



4

JavaScript、135 131 121 92 88バイト

私の最初の(ナイーブ)ソリューション(135b):

t=new Date();n=new Date();n.setMonth(11);n.setDate(25);'Christmas'+' Eve'.repeat((n>=t?n-t:(n.setFullYear(n.getFullYear()+1)-t))/864e5)

現在と今年のクリスマスの2つの日付を設定します。後者がまだパスしていない場合は、単にそれらを差分し、パスしている場合は、来年のクリスマスに差分します。繰り返し回数にどちらかの差分を使用します。

(試行)ボックスの外側を考える(131b):

i=0;f=_=>{t=new Date();if(t.getMonth()!=11||t.getDate()!=25){i++;setTimeout(f,864e5)}else{alert('Christmas'+' Eve'.repeat(i))}};f()

チャレンジは、特定の日にプログラムを実行するときに出力が必要なことを指定しますが、それを返すためにWHENを指定しません...

これは1日だけ「スリープ」し、カウンターを1増やし、出力が得られるまでXmasになるまで繰り返します。

JavaScriptは「スリープ」時間を保証しないため、実際の結果はオフになる可能性があります。

また、alert関数を使用するのはいため、実際には純粋なJavaScriptを処理するのではなく、ブラウザーAPIも処理します(console.log6バイトの追加コストで使用できます)。

より良いアプローチ(121b):

t=new Date();i=0;while(t.getMonth()!=11||t.getDate()!=25){t=new Date(t.valueOf()+864e5);i++};'Christmas'+' Eve'.repeat(i)

今日から開始し、Xmasになるまで日付を1日増やし、そのループのカウンターを必要な繰り返し回数に使用します。

改善(縮小器を通過し、12Me21のトリックを使用して余分な5bを剃るなど)(92b):

for(s='Christmas',t=new Date;t.getMonth()/t.getDate()-.44;)t=new Date(t*1+864e5),s+=' Eve';s

最終タッチ(88b):

for(s='Christmas',t=new Date;t.getMonth()/(d=t.getDate())-.44;t.setDate(d+1))s+=' Eve';s
  • 上記のすべてについて、REPLが想定されています。
  • Vadimの投稿をご覧ください-私よりもずっといいです!

1
t.getMonth()/t.getDate-.48日付が12月25日
12Me21

1
サイトへようこそ!4スペースのインデントを使用して、コードブロックの外観を良くすることができます。
小麦ウィザード

1
PPCGへようこそ!
シャギー

1
98はprintこのプログラムは、関数ではありませんので、必要とされない限り、あなたは、ラムダまたは2. REPLを使用していることをあなたは状態にそれを回す1.
ASCIIのみ

1
t=new Date(+t+864e5)1バイト短くなります。
アンドリューSvietlichnyy

3

VBA(Excel)、108バイト

空のモジュールをコピーします。イミディエイトウィンドウに印刷します。

Sub X:s="Christmas":d=Now:For t=1 To (DateSerial(Year(d+6),12,25)-d):s=s &" Eve":Next:Debug.Print s:End Sub

注::改行の代わりに使用すると、1行あたり2バイト節約できます。

VBAエディターはSub定義の後にキーワード、演算子などと括弧の間に追加のスペースを挿入しますが、このコードをコピーして貼り付けると機能することに注意してください(の前にそのスペースを取り除くことができませんでした&)。

VBAにとっては悪くない(一度だけ)。


1
* Christmas:|
ASCIIのみ

ASCIIのみ:@の前にスペースを削除し&、エラーがスローされます
Barranka

-1バイト。タイプミスをキャッチしてくれた@ ASCII-onlyに感謝
Barranka

1
これをイミディエイトウィンドウ関数に変換し、の一時変数を削除することにより、これを71文字に減らすことができますnow。あなたがそれを行うと、それは次のようになります?"Christmas";:For i=1To DateSerial(Year(Now+6),12,25)-Now:?" Eve";:Next
テイラー・スコット

3

Bash + GNU日付、72 73バイト

for((d=0;1`date +%d%m -d$d\day`-12512;d++));{ x+=\ Eve;};echo Christmas$x
  • に置き換え!=て保存された1バイト-
  • 別の余分なスペースを削除する
  • date +1で、25/12に機能しないd=0ため、-3バイトを修正date -dday

オンラインで試す


うーん、なぜ=~forループ条件で動作しないのですか?
Kritixi Lithos

forループ条件は算術式であるため、ワードは整数に強制され、0から始まる数は8進数と見なされます。そのため、1が先頭に追加されます
Nahuel Fouilleul

3

Python 2、128バイト/ Python 3、130バイト

もちろん、Python 2では2バイト少なくなります

from datetime import date as D
T=D.today()
Y=T.year
a=(D(Y,12,25)-T).days
print("Christmas"+" Eve"*[a,(D(Y+1,12,25)-T).days][a<0])


@tshそれは素晴らしいアプローチです!
iBug



3

Bash68 65 61バイト

Golfed 4のおかげでバイトナウエルFouilleulを使用して``、コマンド置換をとevalsedの代わりにexargs

echo Christmas `eval date\ -d{0..366}day\;|sed /c.25/Q\;cEve`

オンラインでお試しください!

内部`` コマンド置換、我々は持っています

eval 次の文字列をシェルコマンドとして実行します

  • date\ -d{0..366}day\;括弧拡張の下で{0..366}、これは文字列になりdate -d0day; date -d1day; date -d2day; ... date -d366day;、この文字列の各コマンドは現在から0から366日の間の日付を計算し、Wed Dec 26 18:22:33 UTC 2018それぞれ独自の行にフォーマットの出力をもたらします

|sed その上で、次のsedコマンドを呼び出します

  • /c.25/Q正規表現/c.25/が一致する場合、Q印刷せずに

  • \;cEve そうでなければ、行を Eve

必要な数のがすべて、Eveそれぞれ独自の行で生成されます。この出力はでキャプチャされ``、単語が改行で分割される単語分割の対象となります。各単語はへの引数として与えられますecho

echo Christmas ...

への各引数echoは、スペースで区切られて出力され、目的の出力になります。


bashこの解決策に特化したものは何もありません。これは、GNU必要でdatesedかつseqけれども。
クサラナンダ


@NahuelFouilleulおかげで、xargsを避けるためにbacktickコマンド置換を使用し、seqをスキップするためにevalを使用する素敵なトリック
Kritixi Lithos

2

C(gcc)、157バイト

私は含めることを避けることができると思ったtime.hが、それは単にセグメントの欠陥を与えた。

#include <time.h>
*t,u;f(){time(&u);t=localtime(&u);t[5]+=t[4]>10&t[3]>25;t[4]=11;t[3]=25;u-=mktime(t);printf("Christmas");for(u/=86400;u++;printf(" Eve"));}

オンラインでお試しください!


IMOあなたは省くべきだ#include <stdlib.h>、それはここにすべてでは何もしないのと同様に、
ASCIIのみ

*t;f(u)代わりに*t,u;f()#import<time.h>代わりに#include <time.h>5[t=localtime(&u)]代わりにt=localtime(&u);t[5]
提案します

2

Groovy、66バイト

d=[]as Date
print'Christmas'+' Eve'*(new Date((d+6).year,11,25)-d)

オンラインでお試しください!

@ASCIIのみの礼儀


あなたは、これは完全なプログラムは関数ではありませんので、それをプリントアウトする必要がある
ASCIIのみ

> Chistmas:/
ASCIIのみ



最初のものを取得してGroovy 2.5を使用すると、115までスリム化されます。
bdkosher



2

JavaScript、86 77バイト

REPLを使用すると、

for(c='Christmas',d=new Date;!/c 25/.test(d);d=new Date(+d+864e5))c+=' Eve';c

-9バイトのASCIIのみへの称賛



ブラボー!あなたは私よりもはるかに優れていました。余分なバイトを削ることを申し出てもいいですか? for(c='Christmas',d=new Date;!/c 25/.test(d=new Date(+d+864e5));)c+=' Eve';c またはこのバリアント: for(s='Christmas',t=Date.now();!/c 25/.test(new Date(t+=864e5));)s+=' Eve';s 両方とも76バイトです。
タルグモン

2

Lua137 118バイト。

118バイト

t,d,month,day=os.time,os.date,1,-6year=d"%Y"+(d"%D">"12/25"and 2or 1)print("Christmas",d" Eve":rep(d("%j",t(_G)-t())))

137バイト(前)

t,d=os.time,os.date a=d"*t"a.year,a.month,a.day=a.year+(d"%m%d">"1225"and 1 or 0),12,25 print("Christmas",("Eve "):rep((t(a)-t())/86400))

LuaJITでは機能しないことに注意してください(構文エラー)


PPCGへようこそ!素敵な最初の投稿!
Rɪᴋᴇʀ


1

MATLAB、91バイト

n=datetime
x=datetime(year(n+6),12,25)
s='Christmas'
while days(x-n)>=1 n=n+1 s=[s,' Eve'] end

MATLABノンルーパー、100バイト

x=datenum(datetime(floor((now+5)/365.2425),12,25))
d=x-now
['Christmas' repmat(' Eve',1,min(d(d>=0)))]

1

Scala、123バイト

ASCIIのみの作業に感謝します。

print("Christmas")
var d=new java.util.Date
while(d.getMonth()<11||d.getDate()!=25){print(" Eve");d.setDate(d.getDate()+1)}

オンラインでお試しください!

Scala + Joda-Time、140バイト

import org.joda.time._
var s="Christmas"
var d=DateTime.now
while(d!=d.withDate(d.year().get(),12,25)){d=d.plusDays(1);s+=" Eve"};println(s)

Joda-Timeライブラリが必要なため、TIOで実行されません。


ジョーダ、154。残念ながらjava.util.Dateここでは動作しません:/
ASCIIのみ


Ah @ ASCII-onlyカウントでobject Main extends App{}文字をカウントしませんでした(他のScalaの回答でもカウントしなかったため)。私たちがそれを取り出したら、あなたは私を打ち負かします^^
V.コートワ

withDate()コールは...非常に高価である
V.クルトワ

1.外部ライブラリを使用し、変更を使用しないため、言語を「Scala + Joda-Time」として指定する必要があることを覚えていますか?それは短く、ライブラリを必要しません:P
ASCIIのみ

1

05AB1E93 89 バイト

žežfžg)V'ŒÎ[Y¨JŽ9ÚQ#Y`2ô0Kθ4ÖUD2Qi\28X+ë31s<7%É-}‹iY¬>0ëYT`ǝDÅsD12‹i>1ë\1Dǝ¤>2}}ǝVð'»ˆ}J™

オンラインそれを試してみたり「今日のエミュレートされた自己指定した日付とオンラインそれを試してみてください

説明:

05AB1Eには、現在の年/月/日/時間/分/秒/マイクロ秒を受信することを除いて、日付の組み込み機能がないため、ほとんどのバイトが手動計算に使用されます。

žežfžg)V   # Get the current date and save it in variable `Y`
'ŒÎ       '# Push compressed string "christmas"
[          # Start an infinite loop
 Y¨JŽ9ÚQ   #  If the current date is December 25th:
        #  #   Stop the infinite loop
 Y`2ô0Kθ4ÖUD2Qi\28X31s<7%É-}‹iY¬>0ëYTDÅsD12i>1ë\1Dǝ¤>2}}ǝV
           #  Go to the next day, and set `Y` to it
 ð         #  Push a space " "
 '»ˆ      '#  Push compressed string "eve"
}          # After the infinite loop:
 J         # Join everything on the stack together
          # And make every word title-case (and output the result implicitly)

私のこの答えを見て、次の日にどのように行くかを理解してください。(PS:他の場所も使用1¾ǝしているT`ǝため、に置き換えられましたcounter_variable。)

私のこの05AB1E先を参照してください(セクション?辞書を使用する方法どのように大きな整数を圧縮するの?理由を理解すること'»ˆです"eve"'ŒÎです"christmas"。とŽ9Úです1225


賢いゴルフ!
MilkyWay90

0

C#(Visual C#Interactive Compiler)、141バイト

var g=DateTime.Now;Write("Christmas"+string.Concat(Enumerable.Repeat(" Eve",(new DateTime(g.Year+(g.Day>25&g.Month>11?1:0),12,25)-g).Days)));

オンラインでお試しください!


1
私は... 11月30日のためにこの作品を考えていない
ニール

修正されたため、12月かどうかにチェックを追加するのを忘れていました
無知の

Month> 25について本当によろしいですか?
ニール

今それを修正しました...
無知の

?1:0は必要ですか?整数を返しませんか?
12Me21

0

89 86 84 78 76バイト

ASCIIのみのおかげで-10バイト!

does[a: now prin"Christmas"while[a/3 * 31 + a/4 <> 397][prin" Eve"a: a + 1]]

オンラインでお試しください!



もちろん、@ ASCIIのみです!ありがとうございました!
ガレンイワノフ



:クリスマスで実行した場合@ ASCIIのみあなたの76バイトのバージョンは正しい結果が得られていない日付を引数として、私は唯一使用していないために愚かな感じnowはありませんnow/date。改善していただきありがとうございます!
ガレンイワノフ

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