| Bytes | Lang | Time | Link |
|---|---|---|---|
| 070 | Tcl | 180511T160630Z | sergiol |
| 106 | JavaScript | 170413T090604Z | Neil |
| 107 | Red | 180512T080817Z | Galen Iv |
| 052 | Groovy | 180513T084352Z | Matias B |
| 085 | Befunge98 PyFunge | 180512T064902Z | IQuick 1 |
| 130 | Haskell | 180512T094942Z | Angs |
| nan | 170413T051935Z | Stupid_I | |
| 122 | Pyth | 180512T040105Z | hakr14 |
| 080 | JavaScript | 180511T234842Z | Shaggy |
| 037 | Octave | 180511T082723Z | Stewie G |
| 015 | Japt R | 180511T163820Z | Shaggy |
| 037 | Jelly | 170414T015936Z | Jonathan |
| 079 | 05AB1E | 170606T180144Z | Magic Oc |
| 077 | TSQL | 170414T160744Z | AXMIM |
| 114 | Microsoft Sql Server | 170423T050457Z | Andrei O |
| 084 | Mathematica | 170413T114134Z | DavidC |
| 123 | JavaScript ES6 | 170415T040034Z | rhino |
| 089 | Oracle SQL | 170415T014409Z | Demonbla |
| 048 | PHP | 170413T055939Z | user6395 |
| nan | TSQL | 170414T115035Z | Salman A |
| 109 | C# | 170414T054321Z | AXMIM |
| 036 | k | 170414T111034Z | Chromozo |
| 102 | C# | 170413T081618Z | adrianmp |
| 141 | TSQL | 170414T085813Z | grabthef |
| 094 | Python 3.6 | 170414T075319Z | 301_Move |
| 056 | Groovy | 170413T220852Z | Krystian |
| nan | Ruby | 170413T215729Z | Value In |
| 114 | c | 170413T154132Z | jdt |
| 137 | SQL Oracle | 170413T193335Z | Kjetil S |
| 047 | PowerShell | 170413T112802Z | Joey |
| 094 | TSQL | 170413T164944Z | WORNG AL |
| 050 | SAS | 170413T145717Z | J_Lard |
| 091 | REXX | 170413T143453Z | idrougge |
| 074 | SQL PostgreSQL | 170413T143356Z | Richard |
| 126 | Java 7 | 170413T143220Z | cliffroo |
| 099 | Java 8+ | 170413T135718Z | Olivier |
| 142 | Java 7 | 170413T130056Z | Kevin Cr |
| 061 | SpecBAS | 170413T132041Z | Brian |
| 075 | Ruby | 170413T124517Z | snail_ |
| 113 | C# | 170413T094418Z | rmrm |
| 067 | AHK | 170413T123140Z | Engineer |
| 8164 | VBA | 170413T120052Z | Broke Da |
| 024 | Pyke | 170413T111600Z | Blue |
| 058 | R | 170413T092745Z | plannapu |
| 064 | Perl 5 | 170413T105012Z | Kjetil S |
| 032 | k6 | 170413T100124Z | zgrep |
| 044 | Bash + coreutils | 170413T041226Z | tsh |
| 079 | Python 2 | 170413T050212Z | Jonathan |
| 081 | Python 2 | 170413T052621Z | xnor |
| 067 | PHP | 170413T031055Z | smanna |
JavaScript, 111 106 bytes
for(i=14833e8;i<1515e9;i+=605e6)console.log(new Date(i).toJSON().replace(/(....).(..).(..).*/,'$3.$2.$1'))
Note: Stack Exchange's console isn't long enough to display the entire list, so here's the first half as a separate snippet:
for(i=14833e8;i<15e11;i+=605e6)console.log(new Date(i).toJSON().replace(/(....).(..).(..).*/,'$3.$2.$1'))
The custom format costs me 40 bytes...
Red, 107 bytes
f: func[n][n: pad/left/with to-string n 2 #"0"]d: 1-1-2
loop 53[print rejoin[f d/3":"f d/4":"2017]d: d + 7]
Groovy, 52 bytes
53.times{printf('%td.%<tm.2017%n',new Date(0)+it*7)}
Building on Krystian's groovy answer above with an optimisation dropping another four bytes. Uses the fact that the epoch year 1970 matches 2017 weekdays and months.
Befunge-98 (PyFunge), 99 95 93 85 bytes, Leaves trailing newline
All the optimizations were made by @JoKing many thanks to them
s :1g2/10g\%:d1p10g\`+:b`#@_:1\0d1g#;1+:a/'0+,a%'0+,'.,j;a"7102"4k,d1g7+
>8><><>><><>
I felt like we were missing out on some esostericity here so I made a solution in my favourite Esosteric language.
Explanation:
>8><><>><><> Encodes the length of the 12 months
s Store the old day in the blank space
:1g2/ Get an ASCII value from the bottom row and divide it by two this gives us the length of a given month Ex: 8 = 56 in ASCII => 56/2 = 28 => The month (February) has 28 days
10g\% Get the previously saved day and modulo it by the length of the month which allows us to transition the date into the next month
:d1p Save a copy of the new updated day
10g\`+ Test if old date > new date => we transitioned into the next month => add 1 to the month counter
:b` Test if month counter > 11 that means we reached the end of the year (using 0 indexing)
#@_ Based on the previous if terminate the program
:1\0d1g Reorder the stack so it looks like this: Month, 1, Month, 0, Day
# skip the next insctruction (duh)
1+:a/'0+,a%'0+,'., Convert the number to 1 indexing, print, add a . at the end
j; Use the 0 from the stack to not jump and use the ; to go to to the print schedule again then use the 1 to jump over the ; next time
a"7102"4k, Print 2017\n
d1g Get the day value again
7+ Add a week before repeating
Haskell, 133 130 bytes
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)
Without a calendar library, 148 144 140 bytes
(\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++"."
This is funny since using an operator for the padding function saves two bytes even though the second argument is unused, because less parentheses are needed – p(last l) is longer than last l!l. Works by calculating day/month pairs by subtracting the cumulative month start dates from the day of the year. The month start dates are compressed as (scanl((+).(+28))0[3,0,3,2,3,2,3,3,2,3,2]). Month number is the number of positive elements and day number is the last positive element.
Excel VBA 106 91 79 bytes
Sub p()
For i = #1/1/2017# To #12/31/2017#
If Weekday(i) = 1 Then MsgBox i
Next
End Sub
saved 15 bytes thanks to @Radhato
Assuming 1/1/2017 is Sunday it will save 12 more bytes.
Sub p()
For i = #1/1/2017# To #12/31/2017#
MsgBox i
i = i + 6
Next
End Sub
Thanks @Toothbrush 66 bytes
Sub p:For i=#1/1/2017# To #12/31/2017#:MsgBox i:i=i+6:Next:End Sub
Edit: (Sub and End Sub is not necessary) 52 bytes
For i=#1/1/2017# To #12/31/2017#:MsgBox i:i=i+6:Next
Pyth, 122 bytes
jm+X2d\.".2017"c+\0`i."0Z|´&ÓäßæÅJÈD@ßÍTû=´}¾}Zàe+ñðºâ$ðGzdüä#Ò×ûíO^©¢Q Óýo`Åi2ÓàÀ{9¢à>«+íø#o^Mý"36 4
The code uses unprintable characters that are not displayed properly on Stack Exchange. Use the link to get the working version.
Pyth doesn't have a way to check whether a date is a Sunday, so this is the Kolmogorov version.
It uses a MAGIC STRING which represents this integer.
jm+X2d\.".2017"c+\0`i."…"36 4 # Code with MAGIC STRING replaced with …
` # String representation of
"…" # THE MAGIC STRING
." # Decompressed
i 36 # To int from base 36
+\0 # With a 0 in front
c 4 # Chopped into strings of length 4 as a list
m # With each member
X2d\. # with . inserted at index 2
+ ".2017" # and appended with .2017
j # Joined with newlines
JavaScript, 80 bytes
(f=x=>x?[...f(--x),new Date(2017,0,x*7+1).toLocaleDateString()]:[])(53).join`
`
Octave, 37 bytes
A lot shorter than all other non-golfing languages, and it's even tied with Jelly! Way to go Octave! :)
disp(datestr(367:7:737,'DD.mm.2017'))
Luckily, year 2 AD looks exactly the same as year 2017 AD. Both starts and ends at a Sunday, and neither is a leap year. This saves a lot of bytes, since 367:7:737 is quite a bit shorter than 736696:7:737060.
This converts the number of days since 01.01.0001, to a string on the format DD.mm, with a trailing .2017.
Japt -R, 25 21 15 bytes
Locale dependent - You'll need to set your browser's locale to (among others, I'm sure) Romania (RO), Russia (RU) or Turkey (TR) for the dates to be formatted correctly.
#5ÆÐ#É7TX*7Ä s7
Explanation
Takes advantage of the fact that if you provide JavaScript's date construct a value for the day that's higher than the number of days in the month you've provided, it will rollover to the next month.
#5 :53
Æ :Create the range [0,53) and pass each integer X through a function
#É7 : 2017
T : 0
X*7Ä : X*7+1
Ð : new Date() with those 3 arguments as year, month & day
s7 : Convert to date string, locale formatted
Jelly, 38 37 bytes
-1 thanks to user202729 (use the ⁽ quick I implemented about a month after this answer.)
Ḋ€;⁽¥Ñj”.
“£hṅ’ṃ“þœ÷‘R,€"J$;/m7+³DÇ€Y
Jelly currently has no date type or way of representing a date natively, so a purely numeric approach is required.
How?
Ḋ€;⁽¥Ñj”. - Link 1, format helper: list of lists e.g. [[x,0,2],[x,0,7]] (for 2nd July)
Ḋ€ - dequeue €ach [[0,2],[0,7]]
⁽¥Ñ - literal 2017 2017
; - concatenate [[0,2],[0,7],2017]
”. - character '.'
j - join [0,2,'.',0,7,'.',2017]
which has the representation: "02.07.2017"
“£hṅ’ṃ“þœ÷‘R,€"J$;/m7+³DÇ€Y - Main link: no arguments
“£hṅ’ - base 250 compressed number 213991
“þœ÷‘ - code-page indexes [31,30,28]
ṃ - base decompression: 213991 base length([31,30,28])
= [1,0,1,2,1,2,1,1,2,1,2,1]; indexed into [31,30,28]
= [31,28,31,30,31,30,31,31,30,31,30,31]
R - range (vectorises): [[1,2,...,31],[1,2,...,28],...]
$ - last two links as a monad:
J - range(length): [1,2,3,4,5,6,7,8,9,10,11,12]
" - zip with:
,€ - pair for €ach: [[[1,1],[2,1],...,[31,1]],[[1,2],[2,2],...,[28,2]],...]
;/ - reduce with concatenation: [[1,1],[2,1],...,[31,1],[1,2],[2,2],...,[28,2],...]
m7 - every 7th item: [[1,1],[8,1],...,[24,12],[31,12]]
³ - 100
+ - add (vectorises): [[101,101],[108,101],...[124,112],[131,112]]
D - to decimal (vectorises): [[[1,0,1],[1,0,1]],[[1,0,8],[1,0,1]],...,[[1,2,4],[1,1,2]],[[1,3,1],[1,1,2]]]
Ç€ - call last link as a monad for €ach: [[0,1,'.',0,1,'.',2017],[0,8,'.',0,1,'.',2017],...,[2,4,'.',1,2,'.',2017],[3,1,'.',1,2,'.',2017]]
Y - join with line feeds: [0,1,'.',0,1,'.',2017,'\n',0,8,'.',0,1,'.',2017,'\n',...,'\n',2,4,'.',1,2,'.',2017,'\n',3,1,'.',1,2,'.',2017]
- implicit print
05AB1E, 81 79 bytes
•8tåxвÓÈCм∞º²áÝViΣþ1₄ɨÅ9”ÓU2Èn¶äΔb'Î?™Íćεr$Ã]7¤¶¸M•11BR'A¡vy2ôN>".ÿ.2017"«})˜»
No date built-ins.
01081522A05121926A05121926A0209162330A07142128A04111825A0209162330A06132027A03101724A0108152229A05121926A0310172431
Is the compressed base-11 number at the beginning, when split on A's you get:
['01081522', '05121926', '05121926', '0209162330', '07142128', '04111825', '0209162330', '06132027', '03101724', '0108152229', '05121926', '0310172431']
Which is the days of each month that are Sundays, in order. Then, we split each one into pieces of two, and concatenate the index of those days plus 2017 to each.
Finally we just flatten and return the list separated by newlines.
T-SQL, 79 77 Bytes
After helping Salman A improve his answer. I decided to write my own using a loop and PRINT.
I ended with this 90 bytes solution.
DECLARE @d DATETIME=42734 WHILE @d<43100BEGIN PRINT CONVERT(VARCHAR,@d,104)SET @d=@d+7 END
Then I looked at the current leader in T-SQL which was 94 bytes from WORNG ALL with this answer. This guy had found very good tricks.
- Name the variable only
@ - Loop with
GOTOinstead of actual LOOP - Save one character using
FORMATinstead ofCONVERT. (SSMS2012+ only)
Using these tricks, this solution was trimmed down to the solution below which is 79 bytes.
DECLARE @ DATETIME=42734G:PRINT FORMAT(@,'dd.MM.yyy')SET @+=7IF @<43100GOTO G
Microsoft Sql Server, 114 bytes
with v as(select 0 n union all select n+7 from v where n<364)select format(dateadd(d,n,'2017'),'dd.MM.yyyy')from v
Mathematica 90 84 bytes
Fairly wordy. numbermaniac and Scott Milner saved 5 and 1 bytes, respectively.
Column[#~DateString~{"Day",".","Month",".","Year"}&/@DayRange["2017","2018",Sunday]]
JavaScript (ES6), 123 bytes
It's my first post here, hello!
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)})
This solution uses hardcoded data and is designed to work specifically for the year 2017. It relies on no date/time APIs.
As for the digits in the string 155274263153, each digit is a number of its own and denotes the first Sunday of each consecutive month. Output for the entire year can be generated by successively adding 7 to those.
What about the magic number, 2633, used in the loop?
Well... 2633 (decimal) is 101001001001 in binary. Now what could those 1s mean? Starting from the right, the 1st, 4th, 7th, 10th and 12th bit are set. This corresponds to months which happen to have five Sundays, as opposed to those that have only four. Golfed down to this neat expression, it initially looked like this: for(j=0;j<4+ +[0,3,6,9,11].includes(i);j++).
I guess the remaining parts are fairly self-explanatory.
Oracle SQL, 89 bytes
select to_char(to_date('25-DEC-16')+level*7,'DD.MM.YYYY') from dual connect by level < 54
Explanation:
You can just add an integer to a date and it's treated as a number of days.
Exploiting connect by we're generating 53 rows for the 53 sundays which occur in 2017.
Setting the starting date as the last sunday of 2016 saves me two bytes because I don't have to subtract 7 to compensate level starting at 1.
PHP, 48 bytes
while($t<53)echo gmdate("d.m.2017
",605e3*$t++);
PHP, 46 bytes (for non-negative UTC offsets)
while($t<53)echo date("d.m.2017
",605e3*$t++);
TSQL, 112 105 bytes
SELECT CONVERT(VARCHAR,DATEADD(d,number*7,42734),104)FROM master..spt_values WHERE type='p' AND number<53
C#, 110 109 bytes
using System;()=>{for(int i=42729;i<43100;Console.Write(DateTime.FromOADate(i+=7).ToString("dd.MM.yyy\n")));}
You can enjoy this program online here
In this soluion we :
Use OLE Automation Date (OADate) to avoid "AddDay()" from datetime.
FromOADate()seem big but it's equal tonew DateTime(2017,1,1)Start the loop on the last sunday of 2016. to allow us to increment with operator
+=only. This operator return the value after the increment is done.Increment by 7 days to jump from sunday to sunday before printing the date.
We stop once the last sunday of 2017 has been hit.
UseDebuginstead ofConsoleto save two charactersAvoid having explicit variable declaration and assignment
k, 36 Bytes
Same approach as zgrep. 2017.01.01+0 7 14..., string it, split it on ".", reverse each and join back on "." - finally print the list of strings e.g. -1@("Print";"me");
-1@"."/:'|:'"."\:'$2017.01.01+7*!53;
C#, 138 111 102 bytes
Saved 9 more bytes thanks to Johan du Toit!
Saved 27 bytes thanks to Kevin Cruijssen's suggestions!
()=>{for(int i=0;i<53;)Console.Write(new DateTime(2017,1,1).AddDays(7*i++).ToString("dd.MM.yyyy\n"));}
Anonymous function which prints all Sundays in 2017.
Full program with ungolfed method:
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();
}
}
T-SQL, 141 bytes
SELECT FORMAT(d,'dd.MM.yyyy')FROM(SELECT DATEADD(ww,ROW_NUMBER()OVER(ORDER BY name)-1,'20170101')d FROM sys.stats)a WHERE 2017=DATEPART(yy,d)
Python 3.6, 94 bytes
from datetime import*
for x in range(53):print(f"{datetime(1,1,1)+timedelta(x*7):%d.%m.2017}")
I wanted to try using high-level features. Well, it's still readable but not that short…
Groovy, 81 77 63 60 56 bytes
d=new Date(0);53.times{printf('%td.%<tm.2017%n',d);d+=7}
The above can be run as groovy script.
My first code golf entry. Fortunately, the year 1970 was not a leap year, thus can use it as a base.
Thanks to Dennis, here's a: Try it online!
Ruby, 60+7 = 67 bytes
Uses the -rdate flag.
(d=Date.new 1).step(d+365,7){|d|puts d.strftime"%d.%m.2017"}
c, 119 116 114 bytes
y=2017,m=1,d=1,i=53,v;main(){for(;i--;)printf("%02d.%02d.%d\n",d,m,y),v=m^2?m%2^m<8?30:31:28,(d+=7)>v?++m,d-=v:0;}
SQL (Oracle), 137 bytes
select substr(d,1,10)
from (select to_char(sysdate-1e4+rownum,'DD.MM.YYYYdy') d from dual connect by rownum<=2e4)
where d like '%2017s%';
PowerShell, 51 47
0..52|%{date((date 2017-1-1)+7.*$_)-u %d.%m.%Y}
Fairly straightforward. 2017-01-01 is a Sunday, so is every following seven days. We can save two bytes if we only need the script to be working in my lifetime:
0..52|%{date((date 17-1-1)+7.*$_)-u %d.%m.%Y}
T-SQL, 94 Bytes
DECLARE @ INT=0,@_ DATETIME='2017'W:SET @+=1SET @_+=7PRINT FORMAT(@_,'dd.MM.yyy')IF @<52GOTO W
if you don't like SQL GOTO or WHILE, here is a 122 bytes CTE solution
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
SAS, 52 50 bytes
Saved 2 bytes thanks to @user3490.
data;do i=20820to 21184 by 7;put i ddmmyyp10.;end;
REXX, 91 bytes
do n=1 to 365
if date(w,n,d)='Sunday' then say left(translate(date(e,n,d),.,'/'),6)2017
end
SQL (PostgreSQL), 74 Bytes
SELECT to_char(generate_series('170101'::date,'171231','7d'),'DD.MM.YYYY')
If output must be in a single string rather than individual records then the query can be run from psql with the -tA options, making it 76 bytes.
Java 7, 126 bytes
void e(){for(int i=0,j=1,k;i<12;j%=k)for(k="(%('('(('('(".charAt(i++)-9;j<k+1;j+=7)System.out.format("%02d.%02d.2017\n",j,i);}
Computes everything manually. The string "(%('('(('('(" encodes number of days in month. Outer loop goes from 0 to 11 (number of months), inner loops goes until the number representing day is greater than number of days in this month.
See it online
Java 8+, 104 100 99 bytes
()->{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 bytes
void f(){for(int t=0;t<53;)System.out.printf("%1$td.%1$tm.2017%n",new java.util.Date(t++*604800000L));}
Uses the date-capabilities of the printf format.
Savings
- 104 -> 100: changed the loop values and the multiplicand.
- 100 -> 99: golfed the loop
Java 7, 145 144 142 bytes
void c(){for(long x=604800000,i=-x;i<52*x;)System.out.println(new java.text.SimpleDateFormat("dd.MM.2017").format(new java.util.Date(i+=x)));}
-2 bytes thanks to Cliffroot due to a stupid mistake of me..
Explanation:
void c(){ // Method
for(long x=604800000, // Initialize `x` as 604,800,000
i=-x; // Initialize `i` as `-x` / -604,800,000 as starting number
i<52*x;) // Loop over all 52 weeks
System.out.println(new java.text.SimpleDateFormat("dd.MM.2017")
.format(new java.util.Date(i+=x))); // Raise `i` by `x` and then print it in the format `dd.MM.2017`
// End of loop (implicit / single-line body)
} // End of method
SpecBAS - 61 bytes
1 FOR i=42736 TO 43100 STEP 7: ?DATE$(i,"dd.mm.yyyy"): NEXT i
Dates are a decimal number starting at 30-Dec-1899, so had to work out what 1 Jan 2017 and 31 Dec 2017 were, then just step through those values adding 7 days each time.
Ruby, 75 bytes
Straightforward solution to figure out the dates with Time.
t=Time.new 2017
365.times{puts t.strftime("%d.%m.%Y")if t.sunday?
t+=86400}
C#, 116 114 113 bytes
for(long i=(long)636188256e9;i<636502857e9;i+=(long)605e10)Out.Write(new DateTime(i).ToString("dd.MM.yyyy\n"));
Can be run in the interactive windows of Visual Studio (or any other C# REPL based on Roslyn)
Down to 113 bytes: thanks to Kevin Cruijssen.
AHK, 67 bytes
d=20170101
Loop,52{
FormatTime,p,%d%,dd.MM.yyyy
Send,%p%`n
d+=7,d
}
Nothing magical happens here. I tried to find a shorter means than FormatTime
but I failed.
VBA, 81 bytes (maybe 64)
Sub p()
For i = 0 To 52
MsgBox format(42736 + i * 7, "dd.mm.yyyy")
Next i
End Sub
My first post. Building on newguy's solution by removing the check for weekdays and just specifying every 7th day. Removing the dates saves 12 bytes a piece. 42736 is 1/1/2017. Output date format depends on system setting. Is that allowed? If so, it's 64 bytes because you don't need the format method.
MsgBox #1/1/2017# + i * 7
Pyke, 26 24 bytes
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
Or 11 bytes
If allowed to ignore output format
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
R, 79 67 58 bytes
cat(format(seq(as.Date("2017/01/01"),,7,53),"\n%d.%m.%Y"))
First of January being a sunday, this snippet creates a sequence of days, every 7 days starting from the 01-01-2017 to the 31-12-2017, format them to the desired format and print them.
Perl 5, 64 bytes
use POSIX;print strftime"%d.%m.%Y\n",0,0,0,7*$_+1,0,117for 0..52
The task given was 2017, not any year, so I hardcoded in:
- 117 (which is perlish for year 2017, 1900+117)
- +1 because 1st of January is a sunday in 2017
- 0..52 because 2017 have 53 sundays
POSIX is a core module and is always installed with Perl5. Doing the same without using modules in 101 bytes, removing whitespace:
$$_[5]==117&&printf"%02d.%02d.%d\n",$$_[3],$$_[4]+1,$$_[5]+1900
for map[gmtime(($_*7+3)*86400)],0..1e4
k6, 32 bytes
`0:("."/|"."\)'$2017.01.01+7*!53
Brief explanation:
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
Alas, this seems to only work in the closed-source, on-request-only interpreter.
Bash + coreutils, 44 bytes
seq -f@%f 0 605e3 32e6|date -uf- +%d.%m.2017
may save 2 bytes -u if GMT is assumed
- Thanks Digital Trauma point out
-fparamter fordatewhich saves 10 bytes; - And use 2017 in format string saves more bytes which idea is from the answer given by user63956
@0is 1970-1-1605000is one week (604800) plus 200 sec- 200 sec. should just work since there are only 52 weeks in a year
@32000000is just a little more than a year
Python 2, 90 79 bytes
-5 bytes with the help of xnor (avoid counting the weeks themselves)
-1 byte thanks to xnor (add back in e for 605000 as 605e3)
from time import*
i=0
exec"print strftime('%d.%m.2017',gmtime(i));i+=605e3;"*53
0 seconds since epoch is 00:00:00 on the 1st of January 1970, which, like 2017 was not a leap year. 605000 seconds is 1 week, 3 minutes, 20 seconds. Adding 52 of these "weeks" does not take us beyond midnight.
Python 2, 81 bytes
x=0
exec"print'%05.2f.2017'%(x%30.99+1.01);x+=7+'0009ANW'.count(chr(x/7+40));"*53
No date libraries, computes the dates directly. The main trick is to treat the dd.mm as a decimal value. For example, 16.04.2017 (April 16) corresponds to the number 16.04. The number is printed formatted as xx.xx with .2017 appended.
The day and month are computed arithmetically. Each week adds 7 days done as x+=7. Taking x modulo 30.99 handles rollover by subtracting 30.99 whenever the day number gets too big. This combines -31 to reset the days with +0.01 to increment the month.
The rollover assumes each month has 31 days. Months with fewer days are adjusted for by nudging x upwards on certain week numbers with +[8,8,8,17,25,38,47].count(x/7). These list is of the week numbers ending these short months, with 8 tripled because February is 3 days short of 31.
This list could is compressed into a string by taking ASCII values plus 40. The shift of +40 could be avoided by using unprintable chars, and could be accessed shorter as a bytes object in Python 3.
PHP, 67 bytes
Using the fact the PHP automatically assign value 1 to undeclared loop variables, and using Linux epoch times,
<?php for(;54>$t+=1;)echo date("d.m.Y\n",604800*($t)+1482624000);?>

