HHC 2018 Programming Contests
10-02-2018, 08:11 AM
Post: #55
 Thomas Klemm Senior Member Posts: 2,070 Joined: Dec 2013
RE: HHC 2018 Programming Contests
(10-01-2018 09:33 PM)Thomas Klemm Wrote:
Quote:Moreover, the extrema cycle for 28 days is simply 7+14.n, reducing the number of comparisons from 12 to 8. The period for 23x28 and 28x33 days is also halved to 322 and 462, respectively.

This will take me a bit longer to adjust.

Here's the updated program:
Code:
01▸LBL "NED"        ; birthday 02 DATE             ; today 03 DDAYS            ; n days difference 04 RCL X            ; n         n 05 322              ; = 23 × 14 06 MOD              ; u=n%322   n 07 63               ; (17, 7) 08 X>Y?             ; 63 > u ? 09 GTO 00           ; found next U 10 RDN              ; u         n 11 259              ; (6, 7) 12 X>Y?             ; 259 > u ? 13 GTO 00           ; found next U 14 RDN              ; u         n 15 385              ; = 322 + 63 16▸LBL 00           ; U         u       n 17 X<>Y             ; u         U       n 18 -                ; ∆u        n 19 RCL Y            ; n         ∆u      n 20 759              ; = 23 × 33 21 MOD              ; v=n%759   ∆u      n 22 190              ; (6, 25) 23 X>Y?             ; 190 > v ? 24 GTO 00           ; found next V 25 RDN              ; v         ∆u      n 26 305              ; (6, 8) 27 X>Y?             ; 305 > v ? 28 GTO 00           ; found next V 29 RDN              ; v         ∆u      n 30 454              ; (17, 25) 31 X>Y?             ; 454 > v ? 32 GTO 00           ; found next V 33 RDN              ; v         ∆u      n 34 569              ; (17, 8) 35 X>Y?             ; 569 > v ? 36 GTO 00           ; found next V 37 RDN              ; v         ∆u      n 38 949              ; = 759 + 190 39▸LBL 00           ; V         v       ∆u      n 40 X<>Y             ; v         V       ∆u      n 41 -                ; ∆v        ∆u      n       n 42 X<Y?             ; ∆v < ∆u ? 43 X<>Y             ; max       min     n       n 44 RDN              ; min       n       n 45 X<>Y             ; n         min     n 46 462              ; = 14 × 33 47 MOD              ; w=n%462   min     n 48 91               ; (7, 25) 49 X>Y?             ; 91 > w ? 50 GTO 00           ; found next W 51 RDN              ; w         min     n 52 371              ; (7, 8) 53 X>Y?             ; 371 > w ? 54 GTO 00           ; found next W 55 RDN              ; w         min     n 56 553              ; = 462 + 91 57▸LBL 00           ; W         w       min     n 58 X<>Y             ; w         W       min     n 59 -                ; ∆w        min     n       n 60 X<Y?             ; ∆w < min ? 61 X<>Y             ; max       min 62 RDN              ; min       n       n 63 +                ; m = n + min 64 DATE             ; today     m       n       n 65 LASTX            ; min       today   m       n 66 DATE+            ; today+min m       n       n 67 "NED: "          ; show next extrema date 68 FIX 6            ; 69 ADATE            ; 70 AVIEW            ; 71 RDN              ; m         n 72 23               ; 23        m       n 73 XEQ 00           ; show 23 74 28               ; 28        m       n 75 XEQ 00           ; show 28 76 33               ; 33        m       n 77▸LBL 00           ; show p 78 FIX 0            ; 79 CLA              ; "" 80 ARCL X           ; "p" 81 ├": "            ; "p: " 82 RCL Y            ; m         p       m       n 83 X<>Y             ; p         m       m       n 84 /                ; m/p       m       n       n 85 360              ; 360       m/p     m       n 86 *                ; 360*m/p   m       n       n 87 SIN              ; value     m       n       n 88 100              ; 100       value   m       n 89 *                ; %value    m       n       n 90 ARCL X           ; "p: %value" 91 FIX 6            ; 92 AVIEW            ; 93 RDN              ; m         n       n 94 END              ;