þ2ôÀā+āδ-˜•Itíˀߕ.I4ô
-2 bytes by porting @JonathanAllan's Jelly answer, so make sure to upvote him as well!
Try it online or verify all test cases.
Old 27 26 bytes approach:
þ2ôÂD2ôR˜Â)•CV¤½‘àý•S4ä3-+
Try it online or verify all test cases.
Explanation:
þ # Leave the digits of the (implicit) input-string: "dd/MM/YYyy" to "ddMMYYyy"
2ô # Split it into parts of size 2: [DD,MM,yy,YY]
À # Rotate it once towards the left: [MM,yy,YY,DD]
ā # Push a list in the range [1,length] (without popping): [1,2,3,4]
+ # Add the values at the same indices: [MM+1,yy+2,YY+3,DD+4]
ā # Push [1,2,3,4] again
δ # Apply double-vectorized on these lists:
- # Subtract
# (results in: [[MM,MM-1,MM-2,MM-3],[yy+1,yy,yy-1,yy-2],[YY+2,YY+1,YY,YY-1],
# [DD+3,DD+2,DD+1,DD]])
˜ # Flatten it:
# [MM,MM-1,MM-2,MM-3,yy+1,yy,yy-1,yy-2,YY+2,YY+1,YY,YY-1,DD+3,DD+2,DD+1,DD]
ā # Push a list in the range [1,length] (without popping) again: [1,...,16]
•IZΔmλR• # Push compressed integer 19556972234337
.I # Get the 19556972234337'th permutation of the [1,16] list
è # Index each into the list of values (modular 0-based, so 16 is the first):
# [DD,MM,yy,YY,YY+1,yy-1,MM+3,DD+3,MM-2,DD+2,YY+2,yy-2,yy+1,YY-1,DD+1,MM-1]
4ô # And split it into parts of size 4 again
# (after which the result is output implicitly
þ2ô # Same as above: [DD,MM,yy,YY]
 # Bifurcate this list (short for Duplicate & Reverse copy)
# [DD,MM,yy,YY] → [YY,yy,MM,DD]
D # Duplicate it
2ô # Split it into pairs
# [YY,yy,MM,DD] → [[YY,yy],[MM,DD]]
R # Reverse the pairs
# [[YY,yy],[MM,DD]] → [[MM,DD],[YY,yy]]
˜ # Flatten it back again to a quartet
# [[MM,DD],[YY,yy]] → [MM,DD,YY,yy]
 # Bifurcate that as well
# [MM,DD,YY,yy] → [yy,YY,DD,MM]
) # And wrap all list on the stack into a list
# → [[DD,MM,yy,YY],[YY,yy,MM,DD],[MM,DD,YY,yy],[yy,YY,DD,MM]]
•CV¤½‘àý• # Push compressed integer 3333420615514242
S # Convert it to a list of digits: [3,3,3,3,4,2,0,6,1,5,5,1,4,2,4,2]
4ä # Split it into 4 equal-sized parts: [[3,3,3,3],[4,2,0,6],[1,5,5,1],[4,2,4,2]]
3- # Subtract 3 from each: [[0,0,0,0],[1,-1,-3,3],[-2,2,2,-2],[1,-1,1,-1]]
+ # Add the values in the lists together:
# [[DD,MM,yy,YY],
# [YY+1,yy-1,MM-3,DD+3],
# [MM-2,DD+2,YY+2,yy-2],
# [yy+1,YY-1,DD+1,MM-1]]
# (after which the result is output implicitly
See this 05AB1E tip of mine (sections How to compress large integers? and How to compress integer lists?) to understand why •IZΔmλR•
is 19556972234337
and •CV¤½‘àý•
is 3333420615514242
.
[20, 8, 2000]
\$\endgroup\$DD
, aMM
, ayy
, aYY
, and the+/-
of the small integers cancel out). Also, the document you link to doesn't mention Gauss at all. \$\endgroup\$