diff options
author | Christian Hesse <mail@eworm.de> | 2019-01-09 12:50:19 +0100 |
---|---|---|
committer | Christian Hesse <mail@eworm.de> | 2019-01-09 12:52:30 +0100 |
commit | bd922370037dd78da6204fc262216109aca7938a (patch) | |
tree | 627b5008337aeaeb9fc6ffa4b2c68e2fa4c0cc8c /daily-psk | |
parent | 1ee2491e6625a031281fb48f7bd13821f07d602a (diff) |
daily-psk: simplify algorithm
Diffstat (limited to 'daily-psk')
-rw-r--r-- | daily-psk | 34 |
1 files changed, 13 insertions, 21 deletions
@@ -19,34 +19,26 @@ :local Months { "jan"; "feb"; "mar"; "apr"; "may"; "jun"; "jul"; "aug"; "sep"; "oct"; "nov"; "dec" }; - :local MonthTbl { 0; 3; 3; 6; 1; 4; 6; 2; 5; 0; 3; 5 }; - :local MonthStr [ :pick $Date 0 3 ]; - :local Month; - :local Day [ :pick $Date 4 6 ]; - :local Century [ :pick $Date 7 9 ]; - :local Year [ :pick $Date 9 11 ]; + :local Month [ :pick $Date 0 3 ]; + :local Day [ :tonum [ :pick $Date 4 6 ] ]; + :local Year [ :pick $Date 7 11 ]; - # get numeric value for month :for MIndex from=0 to=[ :len $Months ] do={ - :if ([ :pick $Months $MIndex ] = $MonthStr) do={ - :set Month $MIndex; + :if ($Months->$MIndex = $Month) do={ + :set Month ($MIndex + 1); } } - # calculate day of week - :local Sum 0; - :set Sum ($Sum + (2 * (3 - ($Century - (($Century / 4) * 4))))); - :set Sum ($Sum + ($Year / 4)); - :set Sum ($Sum + $Year + $Day); - :set Sum ($Sum + $Month); - :set Sum ($Sum - (($Sum / 7) * 7)); + :local A ((14 - $Month) / 12); + :local B ($Year - $A); + :local C ($Month + 12 * $A - 2); + :local WeekDay (7000 + $Day + $B + ($B / 4) - ($B / 100) + ($B / 400) + ((31 * $C) / 12)); + :set WeekDay ($WeekDay - (($WeekDay / 7) * 7)); - :local Return ([ :pick [ :pick $DailyPskSecrets 0 ] ($Day - 1) ] . \ - [ :pick [ :pick $DailyPskSecrets 1 ] $Month ] . \ - [ :pick [ :pick $DailyPskSecrets 2 ] $Sum ]); - - :return $Return; + :return (($DailyPskSecrets->0->($Day - 1)) . \ + ($DailyPskSecrets->1->($Month - 1)) . \ + ($DailyPskSecrets->2->$WeekDay)); } :local Date [ / system clock get date ]; |