打印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 '17

1
该特定输出格式有任何特殊原因吗?您可以打开一点。
Rɪᴋᴇʀ

4
我实际上很喜欢将这作为确切的kolmogorov挑战。正确设置日期格式有一些有趣的优化。
xnor

5
无论如何,我认为近票应该撤回。
暴民埃里克(Erik the Outgolfer)'17年

Answers:


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天。

通过使用ASCII值加上40,+40可以将该列表压缩为字符串。可以通过使用不可打印的字符来避免的移位,并且可以在Python 3中将其作为字节对象进行更短的访问。


真是个好答案!'888z!}+'.count(chr(x%146))保存一个字节。
林恩

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
那不是gmdate为了时区安全吗?它在onlinephpfunctions.com上失败。在所有其他方面都很棒!
泰特斯

9

Python 2中90 79个字节

在xnor的帮助下-5个字节(避免自己数周)在xnor的帮助下为
-1个字节(将605000中的e添加回605e3)

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

在线尝试!

0自1970年1月1日的纪元是00:00:00以来的秒数,与2017年一样,这不是a年。605000秒是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

-u如果假设采用格林尼治标准时间,则可以节省2个字节

  • 感谢Digital Trauma指出节省10个字节的-f参数date
  • 而在格式字符串使用2017年可以节省更多的字节,其想法是从答案给出 user63956

  • @0 是1970-1-1
  • 605000是一周(604800)加200秒
    • 200秒 应该可以正常工作,因为一年只有52周
  • @32000000 才一年多一点

seq -f@%1.f 14833e5 605e3 1515e6|date -uf- +%d.%m.%Y为您节省10个字节。不过,您可能应该将其称为Bash + coreutils
Digital Trauma'Apr

7

PowerShell,51 47

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

非常坦率的。2017年1月1日是星期日,所以接下来的7天也是星期日。如果只需要脚本在我的一生中都可以工作,则可以节省两个字节:

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

1
如果您添加一个代表天数的双精度数字(即而不是字符串),则可以节省一些字节(date 2017-1-1)+7.*$_。看到这个答案
DankoDurbić17年

@DankoDurbić:哦,哇。int到目前为止,我只知道添加刻度线和字符串。很高兴知道。
Joey

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个字节

假设1/1/2017是星期日,它将另外节省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

可以通过以下方式改进:将i = 42736更改为43100,i =#1/1/2017#更改为#12/31/2017#,然后删除Format(...),仅用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?>,因此可以算成59 bytes像@JonathanAllan正确地说。您不需要用括号括起来$t。其他一些高尔夫球,您最终得到for(;++$t<54;)echo date("d.m.Y\n",605e3*$t+14827e5);获得51 bytes(在我的时区)。您可以将“ \ n”替换为仅1个字节的实际换行符,因此为51个字节。
Christoph'Apr

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

las,这似乎仅在封闭源,仅按请求提供的解释器中有效。

Running the command in the closed-source interpreter.


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 17-4-23

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,这得到给定月份的长度。例如:8 = 56 in ASCII => 56 / 2 = 28 =>该月(2月)有28天
10g\%获取先前保存的日期并根据月份的长短取模,这使我们可以将日期转换为下个月。
:d1p保存新的更新日期的副本
10g\`+测试旧日期>新日期=>我们过渡到下个月=>在月计数器中添加1
:b`测试月计数器是否> 11,这意味着我们到达了年末(使用0索引)
#@_基于上一个(如果终止)程序将跳过下一个指示(duh)
:1\0d1g对堆栈进行重新排序所以看起来像这样:Month, 1, Month, 0, Day
#
1+:a/'0+,a%'0+,'.,将数字转换为1索引,打印,.在末尾添加a
j;使用堆栈中的0不会跳转,并使用;再次转到打印时间表,然后使用1跳过;下一次
a"7102"4k,打印打印2017\n
d1g再次获取日值 7+在重复之前添加一个星期


@JoKing Omc如此明显的优化!我怎么会错过那个?谢谢。
iQuick 143

1
还有几个字节。在线尝试!一种是将-17更改为注释,另一种是将基于0的索引用于月计数器,另一种是将其更改
Jo King

@JoKing Wow您在那里打了很多高尔夫球。Lemme将此添加到答案中。
IQuick 143

1
地狱,为什么不也将0天编入索引,而不必进行任何初始化呢!85个字节
Jo King

3

JavaScript,111106字节

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年,而不是任何一年,因此我将其硬编码为:

  • 117(适用于2017年,1900 + 117)
  • +1是因为1月1日是2017年的星期日
  • 0..52,因为2017年有53个星期日

POSIX是核心模块,始终与Perl5一起安装。在不使用101字节的模块的情况下执行相同操作,删除空格:

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

2

Ruby,75个字节

直接解决方案以找出日期Time

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

1
如果增加一整周(604800秒),则无需检查星期天,只需重复53次即可。
GB

1
如果按照@GB的建议进行操作而不再检查星期日,则还可以使用进行初始化,t=Time.new 1然后t.strftime"%d.%m.2017"对-1个字节进行处理。
价值墨水

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字节

相当罗word。numbermaniac和Scott Milner分别保存了5个字节和1个字节。

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

您需要Most@吗?没有它的输出似乎是相同的。
numbermaniac

1
@numbermaniac,谢谢。Most当时是为了避免2018年的第一个星期日。我最初对代码进行了测试Most,多年来没有2011年,2012年,在这种情况下,输出中包括了2012年的第一个星期日。(这就是为什么我将其包含在代码中的原因。)奇怪的Most是,2017-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

我的第一篇文章。在newguy的解决方案基础上,删除工作日的支票,仅指定第7天。删除日期可节省12个字节。42736是2017/1/1。输出日期格式取决于系统设置。可以吗 如果是这样,则为64字节,因为您不需要format方法。

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

您还可以删除许多自动格式化的空白。例如和For i=0To 52Format(42736+i*7,"dd.mm.yyyy")。另外,您可以使用Next代替Next i
Engineer Toast

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

爪哇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.201701.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年不是a年,因此可以将其用作基础。

感谢Dennis,这是一个: 在线尝试!


欢迎来到编程难题和代码高尔夫球!如果您有兴趣,这里有一个固定链接:在线尝试!
丹尼斯,

谢谢@丹尼斯,我不知道这是存在的:)
Krystian

您可以通过将时间块移动到53.times{printf('%td.%<tm.2017%n',new Date(0)+it*7)}52个字节内来节省四个字节。在这里捍卫groovy的荣誉……
Matias 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年所有星期日的匿名函数。

完整程序,采用非高尔夫方法:

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检查了。我们知道01-01-2017是星期日,从那里我们可以继续增加7天。
凯文·克鲁伊森

2
不知道这一点-在所有的代码打高尔夫球我参加,我总是用完整的命名空间-但不是你丢失了一些System在那里的S - 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"));};
Johan du 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保存两个字符

  • 避免进行明确的变量声明和赋值


除非另有说明,否则我们的默认设置是说您应该提供一个函数或程序(即不是代码段),并且需要限定Debug和DateTime:我建议添加using System;和切换至Consolefrom Debug(这是一个小问题,但我可以找不到有关它的任何评论)。
VisualMelon

1
@VisualMelon我遵守“提供了一个功能”,我也更换DebugConsole,因为Debug需要一个特定的包括。但是,我不遵守“使用系统”,因为我的竞争对手用这种语言无法做到这一点。同样,您不能在本身需要在名称空间中定义的类之外进行编码。我敢肯定,此站点上的大多数C#答案都不包含该内容。那么,现在,我们是否将所有这些答案扔到垃圾了?我们是否会否全力以赴以迫使他们遵守?如果是这样,那么社区也可能完全禁止c#进入代码高尔夫。
AXMIM

这些“规则”正是社区随着时间的推移而定下来的(并记录在meta上)。我们不会拒绝答案,我们不会发表评论,也不会拒绝他们。当他们修复它们时,我们可以自由投票。其他两个C#答案都有评论,建议他们应该添加using指令或完全限定方法和类型,请不要亲自考虑。我是C#高尔夫球手的老手,我很欣赏规则的随意性,因此我希望在可能的情况下以正确的方向推动人们。我专门针对“ 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转换语法


您可以将替换DAY为来节省2个字节d。它也一样。
AXMIM

+1您可以通过替换再节省3个字节'20170101'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加到全年中来产生全年的输出。

2633循环中使用的魔术数字怎么样?
嗯... 2633(十进制)是101001001001二进制的。现在那是什么1意思?从右开始,设置第1、4、7、10和12位。这对应于恰好有五个星期日的月份,而不是只有四个星期日的月份。追求这种简洁的表情,最初看起来像这样:for(j=0;j<4+ +[0,3,6,9,11].includes(i);j++)

我猜其余部分是不言自明的。


@SIGSEGV:我不介意更改ECMAScript 2015Javascript (ES6),但是...您破坏了我的代码,我不得不还原它。
犀牛

哦,这是社区的共识,只允许使用lambda部分。
马修·罗

@SIGSEGV情况并非如此。这个lambda只包含一小部分代码,我需要该标识符才能在其他地方使用它。没有a=代码,实际上是坏的
犀牛

1

T-SQL,79 77字节

在帮助Salman A改善答案之后。我决定使用循环编写自己的PRINT

我以这个90字节的解决方案结束了。

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

然后我看了当前T-SQL的领导者,它是来自WORNG ALL的94个字节,并带有以下答案。这个家伙发现了很好的把戏。

  1. 仅命名变量 @
  2. 与循环 GOTO而不是实际的LOOP
  3. 使用FORMAT而不是保存一个字符CONVERT。(仅适用于SSMS2012 +)

使用这些技巧,此解决方案被缩减为以下79字节的解决方案。

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

通过将@ = @ + 7更改为@ + = 7并删除7和IF之间的空格,可以节省2个字节。
WORNG ALL

在这篇文章中,我掌握了所有技巧,可能也会对您有所帮助。
WORNG ALL

1
@WORNGALL太好了,我不知道我们能做到这一点。非常感谢。
AXMIM'5

1

八度,37字节

比所有其他非高尔夫语言短很多,甚至与Jelly捆绑在一起!八度音阶!:)

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

在线尝试!

幸运的是,年份2 AD看起来与年份完全相同2017 AD。两者都在星期日开始和结束,都不是a年。由于367:7:737比短了很多,所以节省了很多字节736696:7:737060

这会将自此以来的天数转换为01.01.0001格式上DD.mm带有尾随的字符串.2017


1

哈斯克尔133个 130字节

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++"."

这很有趣,因为即使第二个参数未使用,对填充函数使用运算符也会节省两个字节,因为所需的括号要少- p(last l)比更长last l!l。通过day/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链接吗?此外,您可以使用for循环而不是while循环来打高尔夫球:for(long i=(long)636188256e9;i<636502857e9;i+=(long)605e10)Out.Write(new DateTime(i).ToString("dd.MM.yyyy\n"));
Kevin Cruijssen

@KevinCruijssen不幸的是,我无法在给定页面上找到适用的编译器。如果您想联系使用过的技术,请点击以下链接link。无论如何,感谢新的循环。:)
rmrm

1
除非另有说明,否则我们的默认设置为您应提供函数或程序(即非using System;Console.WriteLine(string)
摘要
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.