2017年のすべての日曜日を印刷する


27

次の形式で2017年のすべての日曜日の日付を印刷します:dd.mm.yyyy
期待される出力:

01.01.2017
08.01.2017
15.01.2017
22.01.2017
29.01.2017
05.02.2017
12.02.2017
19.02.2017
26.02.2017
05.03.2017
12.03.2017
19.03.2017
26.03.2017
02.04.2017
09.04.2017
16.04.2017
23.04.2017
30.04.2017
07.05.2017
14.05.2017
21.05.2017
28.05.2017
04.06.2017
11.06.2017
18.06.2017
25.06.2017
02.07.2017
09.07.2017
16.07.2017
23.07.2017
30.07.2017
06.08.2017
13.08.2017
20.08.2017
27.08.2017
03.09.2017
10.09.2017
17.09.2017
24.09.2017
01.10.2017
08.10.2017
15.10.2017
22.10.2017
29.10.2017
05.11.2017
12.11.2017
19.11.2017
26.11.2017
03.12.2017
10.12.2017
17.12.2017
24.12.2017
31.12.2017

1
あなたの日曜日計画する可能性のあるだまし?しかし、これは特定の年です。
-xnor

1
投稿する前に「日曜日を計画するをチェックしましたが、特定の月の日曜日を印刷するように求められます。@xnor
ShinMigami13

1
その特定の出力形式の特定の理由は何ですか?少し開くことができます。
Rɪᴋᴇʀ

4
実際、これは正確なテキストコルモゴロフチャレンジとして気に入っています。日付の書式設定を正しく行うには、いくつかの興味深い最適化があります。
-xnor

5
とにかく、近い投票は撤回されるべきだと思います。
エリックアウトゴルファー

回答:


16

Python 2、81バイト

x=0
exec"print'%05.2f.2017'%(x%30.99+1.01);x+=7+'0009ANW'.count(chr(x/7+40));"*53

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

日付ライブラリはありません。日付を直接計算します。主なトリックはdd.mm、小数値として扱うことです。たとえば、16.04.2017(4月16日)は番号に対応し16.04ます。番号はxx.xx.2017追加された形式で印刷されます。

日と月は算術的に計算されます。毎週7日間追加されx+=7ます。xモジュロ30.99を取ると30.99、日数が大きくなりすぎるたびに減算することでロールオーバーが処理されます。これにより-31、日がリセットされ+0.01、月が増分されます。

ロールオーバーでは、毎月31日があると想定しています。日数の少ない月はx、特定の週番号を上向きに調整することで調整され+[8,8,8,17,25,38,47].count(x/7)ます。これらのリストは、これらの短い月で終わる週番号のリストです8。2月は31日から3日短いため、3倍になります。

このリストは、ASCII値に40を加えて文字列に圧縮+40できます。シフトは、印刷できない文字を使用することで回避でき、Python 3ではバイトオブジェクトとしてより短くアクセスできます。


なんてクールな答えでしょう!'888z!}+'.count(chr(x%146))1バイト節約します。
リン

10

PHP、48バイト

while($t<53)echo gmdate("d.m.2017
",605e3*$t++);

PHP、46バイト(非負のUTCオフセットの場合)

while($t<53)echo date("d.m.2017
",605e3*$t++);

1
ことをShouldn't gmdateタイムゾーンの安全のために?onlinephpfunctions.comで失敗します。他のすべての面で素晴らしい仕事です!
タイタス

9

パイソン290の 79バイト

xnorの助けを借りて-5バイト(週自体のカウントを回避)
xnorのおかげで-1バイト(6055000として605000にeを追加)

from time import*
i=0
exec"print strftime('%d.%m.2017',gmtime(i));i+=605e3;"*53

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

0エポックが1970年1月1日の00:00:00からの秒数。これは2017年のようにap年ではありませんでした。605000secondsは1週間、3分、20秒です。これらの「週」の52を追加しても、真夜中を超えることはありません。


算術級数を生成するより簡単な方法を次に示します。
-xnor

@xnorありがとう、私は同じ種類のものに取り組んでおり、低くしようとしていましたが、81は図書館のアプローチに向いているようです。
ジョナサンアラン

@xnor ...またはない。
ジョナサンアラン

1
いいね!番号はにすることができます605e3。いくつかのアイデアがあります:)
xnor

7

Bash + coreutils、44バイト

seq -f@%f 0 605e3 32e6|date -uf- +%d.%m.2017

-uGMTが想定されている場合、2バイトを節約できます

  • ありがとう、Digital Traumaは10バイトを節約する-fパラメーターを指摘してdateいます。
  • そして、フォーマット文字列で2017を使用すると、 user63956によって与えられた答えからアイデアがより多くのバイトを節約できます

  • @0 1970-1-1
  • 6050001週間(604800)+ 200秒
    • 200秒 1年で52週間しかないので、機能するはずです
  • @32000000 一年ちょっとです

seq -f@%1.f 14833e5 605e3 1515e6|date -uf- +%d.%m.%Y10バイト節約できます。ただし、これはおそらくBash + coreutils主張する必要があります。
デジタル外傷

7

PowerShell、51 47

0..52|%{date((date 2017-1-1)+7.*$_)-u %d.%m.%Y}

かなり簡単です。2017-01-01は日曜日なので、次の7日間ごとです。私の生涯でスクリプトが動作することだけが必要な場合、2バイト節約できます。

0..52|%{date((date 17-1-1)+7.*$_)-u %d.%m.%Y}

1
文字列の代わりに、日数を表すdoubleを追加すると、数バイトを節約できます(date 2017-1-1)+7.*$_この回答を
ダンコドゥルビッチ

@DankoDurbić:ああ、すごい。私はintこれまで数日分の目盛りと文字列を追加することしか知りませんでした。知っておくといい。
ジョーイ

5

Excel VBA 106 91 79バイト

Sub p()
For i = #1/1/2017# To #12/31/2017#
If Weekday(i) = 1 Then MsgBox i
Next
End Sub

@Radhatoのおかげで15バイト節約

2017年1月1日が日曜日だとすると、さらに12バイト節約できます。

Sub p()
For i = #1/1/2017# To #12/31/2017#
MsgBox i
i = i + 6
Next
End Sub

ありがとう@Toothbrush 66バイト

Sub p:For i=#1/1/2017# To #12/31/2017#:MsgBox i:i=i+6:Next:End Sub

編集:(SubおよびEnd Subは必要ありません)52バイト

For i=#1/1/2017# To #12/31/2017#:MsgBox i:i=i+6:Next

chanchingによって改善することができる私は42736 43100に=の場合には、私は#12/2017分の31#に#1/1/2017#=ため次いで及び除去フォーマットだけに置き換え(...)I
Radhato

@Radhatoしかし、それはバイトサイズを増やしませんか?
ローハン

私は数えて何少なくとも厥で...それは96にそれを減らすと思います
Radhato

はい、そうでした。ありがとう
Rohan

1
@newguy Sub p:For i=#1/1/2017# To #12/31/2017#:MsgBox i:i=i+6:Next:End Subは完全に有効なVBAコードであり、66バイトです。VBAエディターが余分なスペースを追加するという事実は無関係です。
歯ブラシ

4

PHP、67バイト

事実を使用して、PHPは未宣言のループ変数に値1を自動的に割り当て、Linuxエポック時間を使用して、

<?php for(;54>$t+=1;)echo date("d.m.Y\n",604800*($t)+1482624000);?>

PPCGへようこそ!これは59バイトとしてカウントできると思います(ただし、PHPでゴルフをしているわけではありませんが)。
ジョナサンアラン

4
<?for(;54>++$t;)echo date("d.m.Y\n",605e3*$t+148263e4);ちょうど良いはずです
tsh

2
新しいPHPゴルファーを見るのはいつもいいです!使用することが許可されているphp -rので、必要がないので<?php、@ JonathanAllanが正しく言ったように?>これをカウントできます59 bytes。角かっこは必要ありません$t。他のいくつかのゴルフとあなたfor(;++$t<54;)echo date("d.m.Y\n",605e3*$t+14827e5);51 bytes(私のタイムゾーンで)で終わることになります。「\ n」を1バイトのみの実際の改行に置き換えることができるため、51バイトになります。
クリストフ

1
ありがとう@Christoph別のアプローチを試していますが、まもなく更新されます
-ShinMigami13

他のすべてのヒントとは別に、タイムゾーンの安全性のgmdate代わりに使用することもできますdate
タイタス

4

k6、32バイト

`0:("."/|"."\)'$2017.01.01+7*!53

簡単な説明:

                2017.01.01+7*!53 /add 0, 7, 14, ..., 364 to January 1st
   ("."/|"."\)'$                 /convert to string, turn Y.m.d into d.m.Y
                                 /   split by ".", reverse, join by "."
`0:                              /output to stdout (or stderr), line by line

残念ながら、これはクローズドソースの、要求時のみのインタープリターでのみ機能するようです。

クローズドソースインタープリターでコマンドを実行します。


4

Pyke26 24バイト

53 Fy17y"RVs6)c"%d.%m.%Y

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

53 F                     - for i in range(53):, printing a newline between each
    y17y"                -  Create a time object with the year 2017. (Month and days are initialised to 1.)
         RV  )           -  Repeat i times:
           s6            -   Add 1 week
              c"%d.%m.%Y -  Format in "dd.mm.yyyy" time

または11バイト

出力形式を無視できる場合

y17y"52VDs6

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

y17y"       - Create a time object with the year 2017. (Month and days are initialised to 1.)
     52V    - Repeat 52 times:
        D   -  Duplicate the old time
         s6 -  Add 1 week

3

R、79 67 58バイト

cat(format(seq(as.Date("2017/01/01"),,7,53),"\n%d.%m.%Y"))

1月1日は日曜日であるため、このスニペットは、2017年1月1日から2017年12月31日までの7日ごとに一連の日を作成し、目的の形式にフォーマットして印刷します。


これにより、41バイトになりますprint(as.Date("2017-01-01")+seq(7,365,7))
カウント

@countありがとう。ただし、必要な出力(「2017/01/01」の代わりに「2017.01.01」)が出力されませんでした
-plannapus

3

Befunge-98(PyFunge)99 95 93 85バイト、末尾の改行を残す

すべての最適化は@JoKingによって行われました。

s :1g2/10g\%:d1p10g\`+:b`#@_:1\0d1g#;1+:a/'0+,a%'0+,'.,j;a"7102"4k,d1g7+
>8><><>><><>

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

私たちはここでいくつかの官能性を逃しているように感じたので、私は私のお気に入りのエソステリック言語で解決策を作りました。

説明
>8><><>><><>12か月の長さをエンコードし
sます。空白をスペースに
:1g2/保存します。下の行からASCII値を取得し、それを2で除算します。これにより、特定の月の長さが得られます。 2 = 28 =>月(2月)、28日があり
10g\%、以前に保存された日に取得し、私たちは来月に日付を移行することができ、月の長さによって、それを法
:d1p新しい更新日のコピーを保存
10g\`+古い日付かどうかをテスト>新しい日付は=>私たちは来月に移行=>月カウンタに1を加える
:b`テストする場合、月カウンタ> 11私たちは今年の終わりに到達した手段(0インデックスを使用して)という
#@_プログラムを終了した場合、以前に基づいて、
:1\0d1gスタック順序を変更次のようになります。Month, 1, Month, 0, Day
#次insctruction(当たり前)をスキップ
1+:a/'0+,a%'0+,'.,1つのインデックス、印刷に番号を変換し、追加.終わりに
j;ジャンプして使用しないようにスタックから使用0 ;飛び越えるために1を使用し、再度印刷スケジュールにに行くために;、次の時間
a"7102"4k,印刷2017\n
d1g日の値を再度取得する 7+繰り返す前に週を追加します


@JoKing Omcこのような明らかな最適化!どうして見逃したのでしょうか?ありがとうございました。
IQuick 143

1
さらに数バイトオフ。オンラインでお試しください!月カウンタ0ベースのインデックスを使用してから、代わりにコメントに1を-17ジャンプを変えるからワンとワンライナーにそれを変更から1
ジョー・キング

@JoKingうわー、それはあなたがそこでした多くのゴルフです。Lemmeが答えに追加します。
IQuick 143

1
地獄、0日目もインデックス化して、初期化を一切行わなくて済むようにしましょう!85バイト
ジョーキング

3

JavaScript、111 106バイト

for(i=14833e8;i<1515e9;i+=605e6)console.log(new Date(i).toJSON().replace(/(....).(..).(..).*/,'$3.$2.$1'))

注:Stack Exchangeのコンソールはリスト全体を表示するのに十分な長さがないため、前半を別のスニペットとして示します。

for(i=14833e8;i<15e11;i+=605e6)console.log(new Date(i).toJSON().replace(/(....).(..).(..).*/,'$3.$2.$1'))

カスタムフォーマットのコストは40バイトです...


2

Perl 5、64バイト

use POSIX;print strftime"%d.%m.%Y\n",0,0,0,7*$_+1,0,117for 0..52

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

与えられたタスクは2017年であり、1年ではありませんでした。

  • 117(2017年、1900年+ 117年に永続)
  • +1 2017年1月1日は日曜日であるため
  • 2017年は53日曜日であるため、0..52

POSIXはコアモジュールであり、常にPerl5と共にインストールされます。101バイトのモジュールを使用せずに同じことを行い、空白を削除します。

$$_[5]==117&&printf"%02d.%02d.%d\n",$$_[3],$$_[4]+1,$$_[5]+1900
  for map[gmtime(($_*7+3)*86400)],0..1e4

2

ルビー、75バイト

で日付を把握する簡単なソリューションTime

t=Time.new 2017
365.times{puts t.strftime("%d.%m.%Y")if t.sunday?
t+=86400}

1
1週間(604800秒)を追加する場合、日曜日を確認する必要はなく、53回繰り返すだけです。
GB

1
@GBによって提案されたトリックを実行し、日曜日をチェックしなくなった場合、-1バイトで初期化しt=Time.new 1てから実行することもできt.strftime"%d.%m.2017"ます。
バリューインク

2

SAS、52 50バイト

@ user3490のおかげで2バイト節約されました。

data;do i=20820to 21184 by 7;put i ddmmyyp10.;end;

データセットを指定する必要はありません。data;代わりに使用するだけでdata c;、2バイト節約できます。あなたにも必要があると思いますrun;
user3490

@ user3490ありがとう、私はそれを知りませんでした。私はそれと同等だと思いdata _null_ますか?また、run欠落している場合、ステートメントは暗黙的に示されます。
J_Lard

完全に同等ではありません- datan命名規則に従って出力データセットが作成されます。
user3490

2

Mathematica 90 84バイト

かなり言葉遣い。numbermaniacとScott Milnerは、それぞれ5バイトと1バイトを節約しました。

Column[#~DateString~{"Day",".","Month",".","Year"}&/@DayRange["2017","2018",Sunday]]

あなたは必要Most@ですか?出力は、それなしでは同一のようです。
numbermaniac

1
@numbermaniac、ありがとう。Most2018年の最初の日曜日を避けるためにそこにいました。私は元々Most、2011年、2012年、なしでコードをテストしました。この場合、2012年の最初の日曜日が出力に含まれます。(だから私はそれをコードに含めた。)不思議なことに、Most2017-18年には必要ない。Most結果に明らかな影響もありません。ミステリアス!
DavidC

1

VBA、81バイト(おそらく64)

Sub p()
For i = 0 To 52
MsgBox format(42736 + i * 7, "dd.mm.yyyy")
Next i
End Sub

私の最初の投稿。平日のチェックを削除し、7日ごとに指定するだけで、newguyのソリューションを構築できます。日付を削除すると、1個あたり12バイト節約できます。42736は2017年1月1日です。出力日付形式はシステム設定によって異なります。それは許されますか?その場合、formatメソッドは必要ないため、64バイトになります

MsgBox #1/1/2017# + i * 7

自動フォーマットされた多くの空白削除することもできます。たとえば、and For i=0To 52およびFormat(42736+i*7,"dd.mm.yyyy")。また、のNext代わりに使用することもできますNext i
エンジニアトースト

1

AHK、67バイト

d=20170101
Loop,52{
FormatTime,p,%d%,dd.MM.yyyy
Send,%p%`n
d+=7,d
}

ここでは魔法のようなことは起こりません。私はより短い手段を見つけようとしましたが、FormatTime 失敗しました。


1

ジャワ8+、104の 100 99バイト

()->{for(int t=0;t<53;)System.out.printf("%1$td.%1$tm.2017%n",new java.util.Date(t++*604800000L));}

Java 5以降、109 105 104バイト

void f(){for(int t=0;t<53;)System.out.printf("%1$td.%1$tm.2017%n",new java.util.Date(t++*604800000L));}

printf形式の日付機能を使用します。

自分でテストしてください!

貯蓄

  1. 104-> 100:ループ値と被乗数を変更しました。
  2. 100-> 99:ループした

1

T-SQL、94バイト

DECLARE @ INT=0,@_ DATETIME='2017'W:SET @+=1SET @_+=7PRINT FORMAT(@_,'dd.MM.yyy')IF @<52GOTO W

SQL GOTOまたはWHILEが気に入らない場合は、122バイトのCTEソリューションをご覧ください

WITH C AS(SELECT CAST('2017'AS DATETIME)x UNION ALL SELECT x+7FROM C WHERE X<'12-31-17')SELECT FORMAT(x,'dd.MM.yyy')FROM C

最初の解決策は開始し08.01.2017ない01.01.2017
-grabthefish

1
ソリューションの非常に良いトリック。よくやった。私はそれらを借りることに抵抗できませんでした。;)
AXMIM

1

Ruby、60 + 7 = 67バイト

-rdateフラグを使用します。

(d=Date.new 1).step(d+365,7){|d|puts d.strftime"%d.%m.2017"}

1

Groovy、81 77 63 60 56バイト

d=new Date(0);53.times{printf('%td.%<tm.2017%n',d);d+=7}

上記は、groovyスクリプトとして実行できます。

私の最初のコードゴルフエントリ。幸いなことに、1970年はle年ではなかったので、基点として使用できます。

デニスのおかげで、ここにあります: オンラインで試してみてください!


プログラミングパズルとコードゴルフへようこそ!興味のある方のために、ここにパーマリンクがあります:オンラインで試してみてください!
デニス

ありがとう@Dennis私はこれが存在することを知りませんでした:)
クリスチャン

timesブロック内で日付を移動することで53.times{printf('%td.%<tm.2017%n',new Date(0)+it*7)}、52バイトの4バイトを節約できます。...ここではGroovyの名誉を守る
マティアスBjarland

1

C位、138の 111 102バイト

Johan du Toitのおかげでさらに9バイト節約できました!

Kevin Cruijssenの提案のおかげで27バイト節約されました!

()=>{for(int i=0;i<53;)Console.Write(new DateTime(2017,1,1).AddDays(7*i++).ToString("dd.MM.yyyy\n"));}

2017年のすべての日曜日を印刷する匿名関数。

ungolfedメソッドを使用した完全なプログラム:

using System;

class P
{
    static void Main()
    {
        Action f =
        ()=>
        {
            for (int i = 0; i < 53; )
                Console.Write(new DateTime(2017, 1, 1).AddDays(7 * i++).ToString("dd.MM.yyyy\n"));
        };



        f();
    }
}

1
ただ使用する方が簡単ではありません.AddDays(7*i++)か?その後、.DayOfWeek<1チェックの必要はありません。2017年1月1日は日曜日であり、そこから7日を追加し続けることができます。
ケビンCruijssen

2
わからないこのことについて-私が参加するすべてのコードgolfsで、私は常に完全な名前空間を使用-しかし、あなたは、いくつか欠落していないSystemそこにあるのを- System.DateTimeSystem.Console.Write
-auhmaan

クールしかし、あなたはバイトのカップル保存することができます:()=>{for(int i=0;i<53;)Console.Write(new DateTime(2017,1,1).AddDays(7*i++).ToString("dd.MM.yyyy\n"));};
ヨハン・デュToit

@auhmaan:はい、完全な名前空間を使用するか、usingステートメントをバイトカウントに含める必要があります。
raznagul

3
@adrianmp:usingコードを実行するために必要なステートメントを数える必要があります。このメタの質問をご覧ください:インポートを使用する必要がありますか、またはクラスを明示的に呼び出すことができますか?
raznagul

1

C#、110 109バイト

using System;()=>{for(int i=42729;i<43100;Console.Write(DateTime.FromOADate(i+=7).ToString("dd.MM.yyy\n")));}

こちらでこのプログラムをオンラインで楽しむことができます

このソリューションでは:

  • OLEオートメーション日付(OADate)を使用して、datetimeから「AddDay()」を回避します。
    FromOADate()大きく見えるが、それは等しいnew DateTime(2017,1,1)

  • 2016年の最終日曜日にループを開始します+=。オペレーターのみで増分できるようにします。この演算子は、インクリメントが完了した後に値を返します。

  • 日付を印刷する前に、日曜日から日曜日にジャンプするために7日間増分します。

  • 2017年の最後の日曜日にヒットしたら停止します。

  • Debug代わりに使用Consoleして2つの文字を保存します

  • 明示的な変数の宣言と割り当てを避ける


特に指定しない限り、私たちのデフォルトは、あなたが提供しなければならないと言う機能やプログラム(すなわちないスニペット)を、あなたがする必要があるデバッグと日時を修飾:私は追加することをお勧めしたいusing System;とへの切り替えConsoleからDebug、それ自体危険なTADである(が、私はすることができますそれに関するメタに関するコメントを見つけられない)。
VisualMelon

1
@VisualMelon「関数を提供する」を遵守しましたが、特定のインクルードが必要なDebugためConsole、代わりに使用しましたDebug。しかし、この言語の競合他社は実行していないため、「使用システム」に準拠していませんでした。また、名前空間内で定義する必要のあるクラスの外部ではコーディングできません。このサイトのほとんどのc#の回答にはそれが含まれていないことを確信しています。それでは、今、これらすべての答えをゴミに投げかけるのでしょうか?私たちは彼らに遵守を強制するためにそれらすべてをダウン票しますか?もしそうなら、コミュニティは完全にcodegolfからc#を禁止するかもしれません。
-AXMIM

これらの「ルール」は、コミュニティが時間の経過とともに解決した(およびメタで文書化された)ものです。私たちは答えにダウン票を投じたり、コメントしたり、それらに投票したりしません。彼らが修正したら、私たちは自由に投票できます。他の両方のC#回答には、usingディレクティブを追加するか、メソッドと型を完全に修飾する必要があることを示唆するコメントがあります。これを個人的に受け取らないでください。私は長年のC#ゴルファーであり、ルールがarbitrary意的であることに感謝しているので、できる限り正しい方向に人々を微調整するのが好きです。私はこの問題について比較的よく知っているので、C#の回答を具体的に「ターゲット」にします。
VisualMelon

1
@VisualMelonまあ、私はとにかく通行人です。ですから、私はここにいる間にあなたの規則を受け入れます。そのため、今回は回答を遵守させようとしました。
AXMIM

1
は、私にはよく見えますよ!元のアプローチの場合は+1。そして、その後のスペースは必要ないのでusing System;(意図的ではないと思います)、109バイトです。
VisualMelon

1

TSQL、 112 105バイト

SELECT CONVERT(VARCHAR,DATEADD(d,number*7,42734),104)FROM master..spt_values WHERE type='p' AND number<53

デモ

T-SQL変換構文


あなたは置き換えることによって、2つのバイトを保存することができますDAYによってd。同じことをします。
-AXMIM

+1に置き換える'20170101'と、さらに3バイト節約できます42734。日付は数字です。時間は、数値の小数部分です。
-AXMIM

1

JavaScript(ES6)、123バイト

こんにちは、私の最初の投稿です!

a=x=>`0${x}.`.slice(-3);[].map.call('155274263153',(x,i)=>{for(j=0;j<4+(2633>>i&1);j++)console.log(a(+x+j*7)+a(i+1)+2017)})

このソリューションはハードコードされたデータを使用し、2017年に特に機能するように設計されています。日付/時刻APIに依存しません。

文字列の155274263153数字に関しては、各数字はそれ自身の数字であり、各連続月の最初の日曜日を示します。7を連続して追加することで、1年全体の出力を生成できます。

2633ループで使用されるマジックナンバーはどうですか?
さて... 2633(10進数)は101001001001バイナリです。さて、それら1の意味は何でしょうか?右から順に、1番目、4番目、7番目、10番目、および12番目のビットが設定されます。これは、たった4つの日曜日とは対照的に、たまたま5つの日曜日がある月に対応します。このきちんとした表現にたどり着くと、最初は次のようになりましたfor(j=0;j<4+ +[0,3,6,9,11].includes(i);j++)

残りの部分はかなり自明だと思います。


@SIGSEGV:に変更ECMAScript 2015してもかまいませんJavascript (ES6)が、...コードを壊してしまい、元に戻す必要がありました。
サイ

ああ、それはコミュニティのコンセンサスです。ラムダ部分だけが許可されています。
マシュー

@SIGSEGVここではそうではありません。このラムダにはコードのごく一部しか含まれていません。他の場所で使用するには、その識別子が必要です。a=コードがなければ、実際に壊れています。
サイ

1

T-SQL、79 77バイト

サルマンAが答えを改善するのを手伝った後。私はループとを使用して自分で書くことにしましたPRINT

この90バイトのソリューションで終了しました。

DECLARE @d DATETIME=42734 WHILE @d<43100BEGIN PRINT CONVERT(VARCHAR,@d,104)SET @d=@d+7 END

次に、この回答で WORNG ALLから94バイトであったT-SQLの現在のリーダーを見ました。この男は非常に良いトリックを見つけました。

  1. 変数のみに名前を付ける @
  2. ループGOTOの代わりに、実際のLOOP
  3. FORMAT代わりに1文字を保存しますCONVERT。(SSMS2012 +のみ)

これらのトリックを使用して、このソリューションは79バイトである以下のソリューションにトリミングされました。

DECLARE @ DATETIME=42734G:PRINT FORMAT(@,'dd.MM.yyy')SET @+=7IF @<43100GOTO G

@ = @ + 7を@ + = 7に変更し、7とIFの間のスペースを削除することにより、2バイトを節約できます。
すべてを

この投稿では、私がすべてのトリックを手に入れました。あなたにも役立つかもしれません。
すべてを

1
@WORNGALL素晴らしい、私はそれができるとは知らなかった。どうもありがとう。
AXMIM

1

オクターブ、37バイト

他のすべての非ゴルフ言語よりもはるかに短く、ジェリーとも結びついています!オクターブに行く方法!:)

disp(datestr(367:7:737,'DD.mm.2017'))

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

幸い、year 2 ADはyear とまったく同じに見え2017 ADます。どちらも日曜日に始まり、日曜日に終わり、どちらもneither年ではありません。これは、367:7:737よりもかなり短いため、多くのバイトを節約します736696:7:737060

これは、以降の日数を変換01.01.0001形式の文字列に、DD.mm末尾で、.2017


1

Haskell133130バイト

import Data.Time.Calendar
((\[f,g,h,i,j]->i:j:'.':f:g:".2017\n").drop 5.show)=<<take 53(iterate(addDays 7)$fromGregorian 2017 1 1)

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

カレンダーライブラリなし、148 144 140バイト

(\l->last l!l++length l!l++"2017\n").fst.span(>0).(<$>scanl((+).(+28))0[3,0,3,2,3,2,3,3,2,3,2]).(-)=<<[1,8..365]
a!_=['0'|a<=9]++show a++"."

これは面白いパディング機能のための演算子を使用して以来である以下括弧が必要とされているため、2番目の引数は、未使用であっても2つのバイトを節約する- p(last l)であるよりも長いですlast l!lday/month年の日から累積月の開始日を引いてペアを計算することにより機能します。月の開始日は(scanl((+).(+28))0[3,0,3,2,3,2,3,3,2,3,2])として圧縮されます。月番号は正の要素の数であり、日番号は最後の正の要素です。

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


0

C位、116の 114 113バイト

for(long i=(long)636188256e9;i<636502857e9;i+=(long)605e10)Out.Write(‌​new DateTime(i).ToString("dd.MM.yyyy\n"));

Visual Studio(またはRoslynに基づく他のC#REPL)の対話型ウィンドウで実行できます。

最小113バイト:Kevin Cruijssenに感謝します。


1
TryItNowリンクを追加してもらえますか?また、することができますゴルフも使用してビットの代わりにwhileループのforループ:for(long i=(long)636188256e9;i<636502857e9;i+=(long)605e10)Out.Write(new DateTime(i).ToString("dd.MM.yyyy\n"));
ケビンCruijssen

@KevinCruijssen残念ながら、指定されたページで該当するコンパイラを見つけることができません。使用したい技術へのリンクがあります:link。とにかく、新しいループに感謝します。:)
rmrm

1
特に指定しない限り、私たちのデフォルトは、あなたが提供しなければならないと言う機能やプログラム(すなわちないスニペット)を、あなたがする必要があるデバッグと日時を修飾:私は追加することをお勧めしたいusing System;と使用Console.WriteLine(string)
VisualMelon
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.