Post Reply 
HHC 2014 Programming Contest
10-06-2014, 05:01 PM (This post was last modified: 10-25-2014 01:38 AM by Jeff O..)
Post: #36
RE: HHC 2014 Programming Contest
Discussion about the 2014 contest seems to have waned a bit, but I'll go ahead and post an update on my progress. I was able to shorten my slow version to 44 steps. I had a slightly faster version at 50 steps. My reasonably fast version was stuck at 83 steps and I did not see any opportunities to improve that by much. I was not particularly satisfied with the shorter versions due to the speed, or the longer version based on length, so I kept on trying to come up with new approaches, thought of one, and developed it. (No earth-shaking insights I'm sure, just different than previous attempts.) I was able to develop a 44 step program that seems as fast as my 83 step version. There may be opportunities to shave a few steps off of that, but I think I'm pretty satisfied at this point. In case anyone is interested, here it is:

Code:
YYYY is input year
YYYx is year before input year
YYYz is year after input year
YYY? is indeterminate, could be YYYY, YYYx or YYYz, depending on the situation
calculator must be in yyyy.mmdd date mode

Operation - key in the year you wish to check for Prime Pair Dates, press XEQ 'PPD'.
Program will display any prime pair dates in that year in chronological order.  When
done, it will display the input year.  (Ignore any values in the Y display if you have 
Y display on.)

001    LBL 'PPD'     Label "Prime Pair Dates"
002    STO 03        Store input year in register 3 
003    SDL 004       multiply by 10000
004    INC X         add 1 to YYYY0000, now have YYYY0001
005    SDR 002       divide by 100 to get in form to allow month to be incremented
006    STO 01        store YYYY00.01 in reg 1
007    #11           enter constant 11
008    STO 04        store 11 in loop counter
009    XEQ 01        check YYYx.1231/YYYY0101, YYYY0131/0201…YYYY1031/1101*
010    DSE 04        decrement counter
011    BACK 002      go back to check next date pair
012    #89           when done checking through 1031/1101, enter constant 89
013    STO+ 01       add 89 to YYYY11.01 to get YYYz00.01
014    XEQ 01        check YYYY.1231/YYYz0101
015    RCL 03        recall input year to display when complete
016    STOP          
017    LBL 01        subroutine to check date pairs for prime
018    INC 01        increment month
019    RCL 01        recall first of month date
020    SDL 02        multiply by 100 to get in proper form
021    PRIME?        is first of month date prime?
022    SKIP 001      if prime, skip to check last of previous month
023    RTN           if not prime, return to get next month
024    SDR 004       divide by 10,000 to get in form to allow date arithmetic
025    1             enter 1
026    +/-           enter -1
027    DAYS+         subtract 1 day from 1st of month to get last of previous month
028    SDL 004       multiply by 10000 to get in proper form
029    PRIME?        is last of prior month date prime?
030    SKIP 001      if prime, skip to display prime date(s)
031    RTN           if not prime, return to get next month
032    RCL 01        recall first of month date
033    SDL 002       multiply by 100 to get in proper form for display
034    <>YYXX        re-order stack for display in chronological order
035    XEQ 02        execute display subroutine
036    <>TTTT        re-order stack to display second date
037    LBL 02        subroutine to display prime date(s)
038    SDR 004       divide year by 10000
039    IP            take integer portion to get year value YYY?
040    x=/=? 03      compare YYY? to input year
041    SKIP 002      if not equal, do not display prime date, it is in wrong year
042    <>YYTT        re-order stack to display date
043    PSE 25        pause to display prime date
044    RTN           

* - 1130 and 1201 can not be a prime pair, so stop after checking 1031/1101 prior
    to checking 1231.  This program does check other non-possible prime pairs, e.g.
    430/501, 630/701 up to that point.  This beats checking all days of the year :-)

For the heck of it, I converted Neil's listing of prime date pairs to a list of years with at least one PPD and all PPDs in each such year. There are 1121 years between 1583 and 9999 which have at least one Prime Pair Date (i.e. half of a prime date pair). 218 years have one PPD, 839 have two PPDs, 40 have three PPDs, 23 have four PPDs, none have five PPDs, and one year has the maximum of 6 PPDs, that year being 1679. That totals 2114 individual dates that are one-half of a prime pair, which agrees with Neil's total of 1057 prime pairs. The most common prime pair dates are 31-Jan and 01-Feb, occurring 153 times. The others occur with the following frequency:

31-Dec/01-Jan: 129 occurrences
31-Jan/01-Feb: 153 occurrences
29-Feb/01-Mar: 45 occurrences
31-Mar/01-Apr: 151 occurrences
31-May/01-Jun: 146 occurrences
31-Jul/01-Aug: 149 occurrences
31-Aug/01-Sep: 138 occurrences
31-Oct/01-Nov: 146 occurrences

1-Jan and 31-Dec never occur in the same year.

Here's the complete list:
Code:
1586    31-Oct, 01-Nov
1588    31-Aug, 01-Sep
1600    31-Dec
1601    01-Jan
1608    31-Mar, 01-Apr
1613    31-Jan, 01-Feb
1621    31-Dec
1622    01-Jan
1629    31-Mar, 01-Apr
1632    31-Mar, 01-Apr
1636    29-Feb, 01-Mar
1652    31-Oct, 01-Nov
1664    31-Jul, 01-Aug
1672    31-Aug, 01-Sep
1674    31-Mar, 01-Apr
1678    31-Aug, 01-Sep
1679    31-Jan, 01-Feb, 31-Jul, 01-Aug, 31-Oct, 01-Nov
1697    31-Jul, 01-Aug
1706    31-Jul, 01-Aug
1709    31-Oct, 01-Nov
1732    31-May, 01-Jun
1733    31-Oct, 01-Nov
1747    31-Dec
1748    01-Jan
1764    31-Mar, 01-Apr
1769    31-Jan, 01-Feb
1787    31-Jan, 01-Feb
1793    31-Jan, 01-Feb, 31-Oct, 01-Nov
1796    31-Jul, 01-Aug
1804    31-May, 01-Jun
1805    31-Oct, 01-Nov
1810    31-Dec
1811    01-Jan, 31-Oct, 01-Nov
1824    31-Mar, 01-Apr
1828    31-Dec
1829    01-Jan
1835    31-Jan, 01-Feb
1841    31-Jul, 01-Aug
1847    31-Jul, 01-Aug
1866    31-Mar, 01-Apr
1870    31-May, 01-Jun
1876    31-May, 01-Jun
1881    31-Mar, 01-Apr
1886    31-Jul, 01-Aug
1891    31-Dec
1892    01-Jan
1913    31-Jul, 01-Aug
1921    31-May, 01-Jun
1924    29-Feb, 01-Mar
1925    31-Jan, 01-Feb
1930    31-Dec
1931    01-Jan
1950    31-Mar, 01-Apr
1972    31-Dec
1973    01-Jan
1978    31-Dec
1979    01-Jan, 31-Jan, 01-Feb
1983    31-Mar, 01-Apr
1987    31-Dec
1988    01-Jan
1990    31-Aug, 01-Sep
1997    31-Oct, 01-Nov
2002    31-May, 01-Jun
2017    31-Aug, 01-Sep
2018    31-Jul, 01-Aug
2020    31-Dec
2021    01-Jan
2028    29-Feb, 01-Mar
2029    31-Dec
2030    01-Jan
2036    31-Oct, 01-Nov
2064    31-Mar, 01-Apr
2068    31-Aug, 01-Sep
2075    31-Jan, 01-Feb
2080    29-Feb, 01-Mar, 31-May, 01-Jun
2081    31-Oct, 01-Nov
2093    31-Jul, 01-Aug
2107    31-Aug, 01-Sep
2110    31-May, 01-Jun
2122    31-May, 01-Jun
2132    31-Oct, 01-Nov
2136    31-Mar, 01-Apr
2138    31-Jan, 01-Feb
2150    31-Oct, 01-Nov
2161    31-Dec
2162    01-Jan
2165    31-Jan, 01-Feb
2171    31-Jan, 01-Feb
2204    31-Jul, 01-Aug
2211    31-Mar, 01-Apr
2216    31-Oct, 01-Nov
2242    31-Aug, 01-Sep
2257    31-May, 01-Jun
2262    31-Mar, 01-Apr
2264    31-Jan, 01-Feb
2281    31-Aug, 01-Sep
2282    31-Jul, 01-Aug
2289    31-Mar, 01-Apr
2290    31-Aug, 01-Sep
2291    31-Jan, 01-Feb
2302    31-Aug, 01-Sep
2304    29-Feb, 01-Mar
2308    29-Feb, 01-Mar
2312    31-Oct, 01-Nov
2315    31-Jul, 01-Aug
2320    31-Aug, 01-Sep
2330    31-Jan, 01-Feb
2338    31-May, 01-Jun
2372    31-Jan, 01-Feb
2374    31-Aug, 01-Sep
2383    31-Dec
2384    01-Jan
2385    31-Mar, 01-Apr
2396    31-Jul, 01-Aug
2404    31-Aug, 01-Sep
2413    31-Aug, 01-Sep, 31-Dec
2414    01-Jan, 31-Oct, 01-Nov
2420    31-Jan, 01-Feb, 31-Oct, 01-Nov
2425    31-May, 01-Jun
2435    31-Jul, 01-Aug, 31-Oct, 01-Nov
2437    31-Dec
2438    01-Jan, 31-Jan, 01-Feb
2444    31-Oct, 01-Nov
2446    31-Aug, 01-Sep
2448    29-Feb, 01-Mar
2456    31-Jan, 01-Feb
2485    31-May, 01-Jun
2508    29-Feb, 01-Mar
2510    31-Oct, 01-Nov
2511    31-Mar, 01-Apr
2531    31-Oct, 01-Nov
2533    31-Dec
2534    01-Jan
2535    31-Mar, 01-Apr
2539    31-May, 01-Jun, 31-Aug, 01-Sep
2540    31-Jul, 01-Aug
2542    31-May, 01-Jun
2561    31-Jul, 01-Aug
2570    31-Oct, 01-Nov
2574    31-Mar, 01-Apr
2576    31-Jan, 01-Feb
2581    31-Dec
2582    01-Jan
2600    31-Jan, 01-Feb
2602    31-Dec
2603    01-Jan
2611    31-Aug, 01-Sep
2614    31-Aug, 01-Sep
2615    31-Jul, 01-Aug
2617    31-Aug, 01-Sep
2633    31-Jan, 01-Feb
2634    31-Mar, 01-Apr
2650    31-Dec
2651    01-Jan
2660    31-Oct, 01-Nov
2674    31-May, 01-Jun
2680    31-May, 01-Jun
2689    31-Dec
2690    01-Jan
2706    31-Mar, 01-Apr
2713    31-May, 01-Jun
2728    31-Aug, 01-Sep
2729    31-Oct, 01-Nov
2731    31-May, 01-Jun
2737    31-May, 01-Jun
2765    31-Jan, 01-Feb
2776    31-Dec
2777    01-Jan, 31-Jul, 01-Aug
2781    31-Mar, 01-Apr
2798    31-Jul, 01-Aug
2801    31-Oct, 01-Nov
2802    31-Mar, 01-Apr
2814    31-Mar, 01-Apr
2818    31-May, 01-Jun
2829    31-Mar, 01-Apr
2834    31-Oct, 01-Nov
2847    31-Mar, 01-Apr
2850    31-Mar, 01-Apr
2864    31-Oct, 01-Nov
2867    31-Oct, 01-Nov
2876    31-Jan, 01-Feb
2884    31-May, 01-Jun
2885    31-Jan, 01-Feb
2900    31-Jan, 01-Feb
2912    31-Jul, 01-Aug, 31-Oct, 01-Nov
2926    31-Aug, 01-Sep
2927    31-Oct, 01-Nov
2932    31-Dec
2933    01-Jan, 31-Jan, 01-Feb
2940    31-Mar, 01-Apr
2944    31-May, 01-Jun
2945    31-Oct, 01-Nov
2951    31-Jul, 01-Aug
2987    31-Jan, 01-Feb
2990    31-Oct, 01-Nov
3000    31-Mar, 01-Apr
3014    31-Jul, 01-Aug
3036    29-Feb, 01-Mar
3039    31-Mar, 01-Apr
3047    31-Jan, 01-Feb
3068    31-Jan, 01-Feb
3072    31-Mar, 01-Apr
3079    31-Aug, 01-Sep
3083    31-Jan, 01-Feb
3085    31-May, 01-Jun
3097    31-Dec
3098    01-Jan
3107    31-Oct, 01-Nov
3109    31-Aug, 01-Sep
3114    31-Mar, 01-Apr
3122    31-Jul, 01-Aug
3124    29-Feb, 01-Mar
3131    31-Jul, 01-Aug
3155    31-Jan, 01-Feb, 31-Jul, 01-Aug
3171    31-Mar, 01-Apr
3173    31-Oct, 01-Nov
3176    31-Jul, 01-Aug
3186    31-Mar, 01-Apr
3190    31-Aug, 01-Sep
3210    31-Mar, 01-Apr
3212    31-Jul, 01-Aug
3221    31-Jan, 01-Feb
3223    31-Aug, 01-Sep
3226    31-May, 01-Jun
3252    31-Mar, 01-Apr
3260    31-Jul, 01-Aug
3264    29-Feb, 01-Mar
3266    31-Jul, 01-Aug
3267    31-Mar, 01-Apr
3274    31-May, 01-Jun, 31-Aug, 01-Sep
3278    31-Jul, 01-Aug
3285    31-Mar, 01-Apr
3289    31-May, 01-Jun
3297    31-Mar, 01-Apr
3298    31-Dec
3299    01-Jan
3317    31-Jan, 01-Feb
3327    31-Mar, 01-Apr
3328    31-Aug, 01-Sep
3344    31-Jul, 01-Aug
3346    31-Aug, 01-Sep
3351    31-Mar, 01-Apr
3377    31-Jul, 01-Aug
3379    31-Dec
3380    01-Jan
3388    31-May, 01-Jun
3395    31-Oct, 01-Nov
3398    31-Jul, 01-Aug
3407    31-Oct, 01-Nov
3424    29-Feb, 01-Mar
3428    31-Oct, 01-Nov
3430    31-Aug, 01-Sep
3439    31-Aug, 01-Sep
3441    31-Mar, 01-Apr
3470    31-Oct, 01-Nov
3472    31-May, 01-Jun
3475    31-Aug, 01-Sep
3480    31-Mar, 01-Apr
3487    31-Dec
3488    01-Jan
3508    31-Aug, 01-Sep
3511    31-May, 01-Jun
3515    31-Jan, 01-Feb
3521    31-Jul, 01-Aug
3538    31-Dec
3539    01-Jan
3546    31-Mar, 01-Apr
3554    31-Jul, 01-Aug
3564    31-Mar, 01-Apr
3572    31-Jul, 01-Aug
3574    31-Dec
3575    01-Jan, 31-Oct, 01-Nov
3591    31-Mar, 01-Apr
3598    31-May, 01-Jun
3611    31-Jul, 01-Aug
3614    31-Jan, 01-Feb
3632    31-Oct, 01-Nov
3633    31-Mar, 01-Apr
3634    31-Dec
3635    01-Jan
3640    31-Aug, 01-Sep
3648    31-Mar, 01-Apr
3653    31-Jul, 01-Aug
3661    31-Aug, 01-Sep
3670    31-Aug, 01-Sep
3685    31-Dec
3686    01-Jan
3688    29-Feb, 01-Mar, 31-Dec
3689    01-Jan
3692    31-Jul, 01-Aug
3694    31-Dec
3695    01-Jan
3710    31-Jul, 01-Aug
3727    31-Dec
3728    01-Jan
3747    31-Mar, 01-Apr
3748    29-Feb, 01-Mar
3755    31-Jul, 01-Aug
3758    31-Jul, 01-Aug
3787    31-May, 01-Jun
3800    31-Jul, 01-Aug, 31-Oct, 01-Nov
3816    29-Feb, 01-Mar
3818    31-Jul, 01-Aug
3820    29-Feb, 01-Mar
3822    31-Mar, 01-Apr
3827    31-Jan, 01-Feb
3853    31-Aug, 01-Sep
3855    31-Mar, 01-Apr
3857    31-Oct, 01-Nov
3862    31-May, 01-Jun
3868    31-May, 01-Jun
3875    31-Jul, 01-Aug
3877    31-May, 01-Jun
3886    31-Aug, 01-Sep
3887    31-Jul, 01-Aug
3894    31-Mar, 01-Apr
3896    31-Oct, 01-Nov
3899    31-Oct, 01-Nov
3901    31-Aug, 01-Sep
3904    29-Feb, 01-Mar
3914    31-Jan, 01-Feb
3920    31-Jul, 01-Aug
3923    31-Jan, 01-Feb
3928    31-May, 01-Jun
3929    31-Jan, 01-Feb
3932    31-Oct, 01-Nov
3944    31-Jan, 01-Feb
3995    31-Oct, 01-Nov
4000    31-Dec
4001    01-Jan
4007    31-Jul, 01-Aug
4016    31-Oct, 01-Nov
4024    31-Aug, 01-Sep
4064    31-Jul, 01-Aug
4073    31-Jul, 01-Aug
4084    31-May, 01-Jun
4088    31-Oct, 01-Nov
4099    31-Dec
4100    01-Jan
4118    31-Jul, 01-Aug
4123    31-May, 01-Jun
4135    31-Aug, 01-Sep
4141    31-Dec
4142    01-Jan
4150    31-May, 01-Jun
4157    31-Jul, 01-Aug
4162    31-Dec
4163    01-Jan
4171    31-Aug, 01-Sep
4181    31-Jul, 01-Aug, 31-Oct, 01-Nov
4189    31-Dec
4190    01-Jan
4202    31-Jan, 01-Feb
4210    31-Aug, 01-Sep
4220    31-Jan, 01-Feb
4225    31-May, 01-Jun
4231    31-May, 01-Jun, 31-Aug, 01-Sep
4240    31-Dec
4241    01-Jan
4246    31-Dec
4247    01-Jan
4252    31-Dec
4253    01-Jan, 31-Jul, 01-Aug
4262    31-Oct, 01-Nov
4271    31-Jan, 01-Feb
4298    31-Jul, 01-Aug
4306    31-Dec
4307    01-Jan
4310    31-Jul, 01-Aug
4323    31-Mar, 01-Apr
4328    31-Jan, 01-Feb
4334    31-Oct, 01-Nov
4340    31-Oct, 01-Nov
4349    31-Jul, 01-Aug
4352    31-Jan, 01-Feb
4364    31-Jul, 01-Aug
4365    31-Mar, 01-Apr
4383    31-Mar, 01-Apr
4388    31-Jul, 01-Aug
4394    31-Oct, 01-Nov
4396    31-May, 01-Jun
4400    31-Oct, 01-Nov
4409    31-Jan, 01-Feb
4411    31-May, 01-Jun, 31-Dec
4412    01-Jan
4415    31-Jan, 01-Feb
4417    31-May, 01-Jun
4445    31-Oct, 01-Nov
4449    31-Mar, 01-Apr
4456    31-May, 01-Jun
4459    31-Aug, 01-Sep
4464    29-Feb, 01-Mar
4467    31-Mar, 01-Apr
4478    31-Oct, 01-Nov
4480    31-May, 01-Jun
4484    31-Oct, 01-Nov
4486    31-Aug, 01-Sep
4490    31-Jan, 01-Feb
4491    31-Mar, 01-Apr
4525    31-Aug, 01-Sep
4528    31-May, 01-Jun, 31-Aug, 01-Sep
4538    31-Jan, 01-Feb
4559    31-Oct, 01-Nov
4567    31-Aug, 01-Sep
4571    31-Oct, 01-Nov
4580    31-Oct, 01-Nov
4585    31-May, 01-Jun
4597    31-Dec
4598    01-Jan, 31-Oct, 01-Nov
4629    31-Mar, 01-Apr
4630    31-Aug, 01-Sep
4642    31-Dec
4643    01-Jan, 31-Jul, 01-Aug
4650    31-Mar, 01-Apr
4663    31-May, 01-Jun
4669    31-May, 01-Jun
4684    31-Dec
4685    01-Jan, 31-Jul, 01-Aug
4693    31-May, 01-Jun
4695    31-Mar, 01-Apr
4701    31-Mar, 01-Apr
4722    31-Mar, 01-Apr
4726    31-May, 01-Jun
4732    31-Aug, 01-Sep
4752    31-Mar, 01-Apr
4756    31-Dec
4757    01-Jan
4765    31-Aug, 01-Sep
4769    31-Oct, 01-Nov
4779    31-Mar, 01-Apr
4781    31-Jan, 01-Feb
4790    31-Jan, 01-Feb
4793    31-Oct, 01-Nov
4796    31-Oct, 01-Nov
4802    31-Oct, 01-Nov
4803    31-Mar, 01-Apr
4807    31-May, 01-Jun
4813    31-Dec
4814    01-Jan
4816    31-May, 01-Jun
4834    31-May, 01-Jun
4836    31-Mar, 01-Apr
4871    31-Jan, 01-Feb, 31-Jul, 01-Aug
4873    31-May, 01-Jun
4874    31-Oct, 01-Nov
4876    31-May, 01-Jun
4881    31-Mar, 01-Apr
4912    31-Aug, 01-Sep
4914    31-Mar, 01-Apr
4915    31-Aug, 01-Sep
4925    31-Oct, 01-Nov
4927    31-Aug, 01-Sep
4934    31-Oct, 01-Nov
4935    31-Mar, 01-Apr
4936    29-Feb, 01-Mar
4948    31-May, 01-Jun
4950    31-Mar, 01-Apr
4979    31-Jan, 01-Feb
4990    31-Dec
4991    01-Jan
4992    31-Mar, 01-Apr
4996    31-Aug, 01-Sep, 31-Dec
4997    01-Jan
4999    31-May, 01-Jun
5000    31-Jan, 01-Feb
5003    31-Oct, 01-Nov
5004    29-Feb, 01-Mar
5015    31-Jan, 01-Feb
5020    29-Feb, 01-Mar
5029    31-Dec
5030    01-Jan
5039    31-Jul, 01-Aug, 31-Oct, 01-Nov
5041    31-May, 01-Jun
5045    31-Oct, 01-Nov
5053    31-Dec
5054    01-Jan
5067    31-Mar, 01-Apr
5068    31-Aug, 01-Sep
5080    31-Aug, 01-Sep
5082    31-Mar, 01-Apr
5093    31-Jul, 01-Aug
5096    31-Jan, 01-Feb
5104    31-Dec
5105    01-Jan
5108    31-Jan, 01-Feb
5110    31-May, 01-Jun
5116    29-Feb, 01-Mar
5129    31-Jan, 01-Feb
5132    31-Jan, 01-Feb
5144    31-Jul, 01-Aug
5150    31-Oct, 01-Nov
5153    31-Jan, 01-Feb
5158    31-Aug, 01-Sep
5161    31-Aug, 01-Sep
5196    29-Feb, 01-Mar
5229    31-Mar, 01-Apr
5239    31-Aug, 01-Sep
5244    29-Feb, 01-Mar
5255    31-Jul, 01-Aug
5272    31-Aug, 01-Sep
5273    31-Jan, 01-Feb
5276    31-Jul, 01-Aug
5294    31-Jul, 01-Aug
5298    31-Mar, 01-Apr
5302    31-May, 01-Jun
5306    31-Jan, 01-Feb
5326    31-Dec
5327    01-Jan, 31-Jan, 01-Feb
5338    31-May, 01-Jun
5359    31-May, 01-Jun
5371    31-Aug, 01-Sep
5374    31-Dec
5375    01-Jan, 31-Jan, 01-Feb
5378    31-Jan, 01-Feb
5389    31-May, 01-Jun
5396    31-Oct, 01-Nov
5399    31-Jul, 01-Aug
5425    31-May, 01-Jun
5428    31-Dec
5429    01-Jan, 31-Oct, 01-Nov
5437    31-Dec
5438    01-Jan
5441    31-Jan, 01-Feb
5455    31-Aug, 01-Sep
5461    31-May, 01-Jun
5469    31-Mar, 01-Apr
5473    31-Aug, 01-Sep
5480    31-Jan, 01-Feb
5483    31-Jul, 01-Aug
5486    31-Oct, 01-Nov
5512    31-May, 01-Jun
5524    31-Aug, 01-Sep
5531    31-Jan, 01-Feb
5537    31-Oct, 01-Nov
5541    31-Mar, 01-Apr
5542    31-Dec
5543    01-Jan
5557    31-Dec
5558    01-Jan
5560    29-Feb, 01-Mar
5570    31-Jan, 01-Feb
5580    31-Mar, 01-Apr
5582    31-Jan, 01-Feb
5584    31-Aug, 01-Sep
5588    31-Oct, 01-Nov
5603    31-Jul, 01-Aug
5613    31-Mar, 01-Apr
5614    31-Aug, 01-Sep
5616    29-Feb, 01-Mar
5618    31-Oct, 01-Nov
5619    31-Mar, 01-Apr
5635    31-May, 01-Jun
5642    31-Jul, 01-Aug
5643    31-Mar, 01-Apr
5647    31-Dec
5648    01-Jan
5650    31-Aug, 01-Sep
5652    29-Feb, 01-Mar
5655    31-Mar, 01-Apr
5658    31-Mar, 01-Apr
5659    31-Dec
5660    01-Jan
5680    29-Feb, 01-Mar
5681    31-Oct, 01-Nov
5693    31-Jan, 01-Feb
5709    31-Mar, 01-Apr
5716    31-Dec
5717    01-Jan
5721    31-Mar, 01-Apr
5726    31-Oct, 01-Nov
5735    31-Jul, 01-Aug
5738    31-Jan, 01-Feb
5745    31-Mar, 01-Apr
5764    31-Aug, 01-Sep
5768    31-Oct, 01-Nov
5776    31-May, 01-Jun
5785    31-May, 01-Jun
5788    31-Dec
5789    01-Jan
5804    31-Oct, 01-Nov
5818    31-Dec
5819    01-Jan
5823    31-Mar, 01-Apr
5839    31-Aug, 01-Sep
5840    31-Jan, 01-Feb
5848    31-Dec
5849    01-Jan
5850    31-Mar, 01-Apr
5887    31-Aug, 01-Sep
5897    31-Jul, 01-Aug
5909    31-Jan, 01-Feb
5915    31-Jul, 01-Aug
5919    31-Mar, 01-Apr
5930    31-Oct, 01-Nov
5953    31-Dec
5954    01-Jan
5955    31-Mar, 01-Apr
5956    31-May, 01-Jun
5968    31-May, 01-Jun
5976    31-Mar, 01-Apr
5990    31-Jan, 01-Feb
5992    31-Aug, 01-Sep
5996    31-Jul, 01-Aug
5998    31-Aug, 01-Sep
6042    31-Mar, 01-Apr
6050    31-Jan, 01-Feb
6058    31-Aug, 01-Sep
6064    31-Aug, 01-Sep
6073    31-May, 01-Jun
6082    31-May, 01-Jun
6089    31-Oct, 01-Nov
6092    31-Jul, 01-Aug
6099    31-Mar, 01-Apr
6103    31-May, 01-Jun, 31-Dec
6104    01-Jan
6112    31-May, 01-Jun
6113    31-Jul, 01-Aug
6118    31-May, 01-Jun
6124    29-Feb, 01-Mar
6125    31-Jul, 01-Aug
6153    31-Mar, 01-Apr
6158    31-Jul, 01-Aug
6167    31-Jul, 01-Aug, 31-Oct, 01-Nov
6181    31-May, 01-Jun
6184    31-Dec
6185    01-Jan
6196    31-May, 01-Jun, 31-Dec
6197    01-Jan, 31-Jan, 01-Feb
6200    31-Jan, 01-Feb
6201    31-Mar, 01-Apr
6203    31-Jan, 01-Feb
6208    31-Aug, 01-Sep, 31-Dec
6209    01-Jan
6226    31-Aug, 01-Sep
6235    31-Aug, 01-Sep, 31-Dec
6236    01-Jan
6242    31-Oct, 01-Nov
6251    31-Jul, 01-Aug
6255    31-Mar, 01-Apr
6257    31-Jul, 01-Aug
6259    31-Dec
6260    01-Jan
6270    31-Mar, 01-Apr
6273    31-Mar, 01-Apr
6275    31-Jul, 01-Aug
6280    31-Aug, 01-Sep
6281    31-Oct, 01-Nov
6283    31-May, 01-Jun
6298    31-Dec
6299    01-Jan, 31-Jan, 01-Feb
6301    31-May, 01-Jun
6314    31-Jan, 01-Feb
6317    31-Jan, 01-Feb
6320    31-Jan, 01-Feb
6326    31-Oct, 01-Nov
6328    31-May, 01-Jun
6343    31-Aug, 01-Sep
6353    31-Oct, 01-Nov
6394    31-Aug, 01-Sep
6396    29-Feb, 01-Mar
6397    31-May, 01-Jun
6401    31-Jan, 01-Feb
6408    29-Feb, 01-Mar
6422    31-Jan, 01-Feb
6424    31-Aug, 01-Sep
6428    31-Jan, 01-Feb
6435    31-Mar, 01-Apr
6436    29-Feb, 01-Mar
6446    31-Oct, 01-Nov
6452    31-Oct, 01-Nov
6458    31-Jul, 01-Aug
6460    29-Feb, 01-Mar
6475    31-May, 01-Jun
6479    31-Jul, 01-Aug
6488    31-Jan, 01-Feb
6526    31-Aug, 01-Sep
6527    31-Jan, 01-Feb
6530    31-Oct, 01-Nov
6532    31-May, 01-Jun, 31-Dec
6533    01-Jan
6539    31-Jan, 01-Feb
6541    31-May, 01-Jun
6544    31-Dec
6545    01-Jan, 31-Jan, 01-Feb
6547    31-Aug, 01-Sep
6548    31-Jan, 01-Feb
6549    31-Mar, 01-Apr
6554    31-Jan, 01-Feb
6560    31-Jan, 01-Feb
6581    31-Jan, 01-Feb
6599    31-Jul, 01-Aug
6607    31-May, 01-Jun
6613    31-Dec
6614    01-Jan
6620    31-Jan, 01-Feb
6631    31-Aug, 01-Sep
6644    31-Oct, 01-Nov
6650    31-Jan, 01-Feb
6653    31-Jan, 01-Feb
6655    31-Dec
6656    01-Jan, 31-Oct, 01-Nov
6664    31-May, 01-Jun
6666    31-Mar, 01-Apr
6677    31-Jan, 01-Feb
6679    31-May, 01-Jun
6688    31-Dec
6689    01-Jan
6699    31-Mar, 01-Apr
6704    31-Jul, 01-Aug
6710    31-Jul, 01-Aug
6730    31-May, 01-Jun
6731    31-Jul, 01-Aug
6742    31-Aug, 01-Sep
6754    31-May, 01-Jun
6760    29-Feb, 01-Mar
6761    31-Jan, 01-Feb
6763    31-Dec
6764    01-Jan
6768    31-Mar, 01-Apr
6774    31-Mar, 01-Apr
6803    31-Jul, 01-Aug
6806    31-Jul, 01-Aug
6814    31-Dec
6815    01-Jan
6822    31-Mar, 01-Apr
6823    31-Aug, 01-Sep
6831    31-Mar, 01-Apr
6838    31-Aug, 01-Sep
6839    31-Jul, 01-Aug
6851    31-Jan, 01-Feb
6853    31-May, 01-Jun
6859    31-Dec
6860    01-Jan
6863    31-Jan, 01-Feb
6873    31-Mar, 01-Apr
6878    31-Jul, 01-Aug
6884    31-Jan, 01-Feb
6892    31-Dec
6893    01-Jan, 31-Jan, 01-Feb
6895    31-Aug, 01-Sep
6899    31-Oct, 01-Nov
6904    31-Aug, 01-Sep
6914    31-Oct, 01-Nov
6917    31-Oct, 01-Nov
6920    31-Jul, 01-Aug
6929    31-Jul, 01-Aug
6937    31-May, 01-Jun
6940    31-Dec
6941    01-Jan
6953    31-Oct, 01-Nov
6979    31-May, 01-Jun
6983    31-Jul, 01-Aug
7001    31-Oct, 01-Nov
7003    31-Dec
7004    01-Jan
7007    31-Jul, 01-Aug
7008    29-Feb, 01-Mar
7022    31-Jan, 01-Feb
7039    31-May, 01-Jun
7058    31-Oct, 01-Nov
7063    31-May, 01-Jun
7090    31-Dec
7091    01-Jan
7100    31-Jul, 01-Aug
7102    31-Dec
7103    01-Jan
7108    31-May, 01-Jun
7111    31-May, 01-Jun
7118    31-Oct, 01-Nov
7120    31-May, 01-Jun
7124    31-Jul, 01-Aug
7130    31-Oct, 01-Nov
7139    31-Oct, 01-Nov
7151    31-Oct, 01-Nov
7153    31-May, 01-Jun
7169    31-Oct, 01-Nov
7170    31-Mar, 01-Apr
7175    31-Jan, 01-Feb
7183    31-May, 01-Jun
7187    31-Jul, 01-Aug
7209    31-Mar, 01-Apr
7217    31-Jul, 01-Aug
7222    31-May, 01-Jun
7223    31-Jan, 01-Feb, 31-Jul, 01-Aug
7241    31-Jul, 01-Aug
7247    31-Oct, 01-Nov
7248    29-Feb, 01-Mar
7249    31-Dec
7250    01-Jan
7253    31-Oct, 01-Nov
7258    31-Dec
7259    01-Jan
7268    31-Oct, 01-Nov
7274    31-Jan, 01-Feb
7289    31-Jan, 01-Feb
7291    31-Dec
7292    01-Jan
7297    31-Dec
7298    01-Jan
7330    31-Aug, 01-Sep
7343    31-Oct, 01-Nov
7354    31-May, 01-Jun
7363    31-Aug, 01-Sep
7370    31-Oct, 01-Nov
7373    31-Jan, 01-Feb
7384    31-May, 01-Jun
7391    31-Jul, 01-Aug
7405    31-Dec
7406    01-Jan
7421    31-Oct, 01-Nov
7436    31-Oct, 01-Nov
7449    31-Mar, 01-Apr
7450    31-Aug, 01-Sep
7454    31-Oct, 01-Nov
7457    31-Jan, 01-Feb
7466    31-Oct, 01-Nov
7475    31-Oct, 01-Nov
7483    31-Aug, 01-Sep
7496    31-Jul, 01-Aug
7519    31-Aug, 01-Sep
7523    31-Jan, 01-Feb
7529    31-Oct, 01-Nov
7538    31-Jul, 01-Aug
7552    31-Dec
7553    01-Jan
7555    31-Aug, 01-Sep
7560    31-Mar, 01-Apr
7561    31-Aug, 01-Sep
7562    31-Oct, 01-Nov
7570    31-Dec
7571    01-Jan
7585    31-May, 01-Jun
7601    31-Jul, 01-Aug
7608    31-Mar, 01-Apr
7610    31-Jan, 01-Feb, 31-Oct, 01-Nov
7612    31-Aug, 01-Sep
7624    31-May, 01-Jun
7633    31-Dec
7634    01-Jan
7663    31-Aug, 01-Sep, 31-Dec
7664    01-Jan
7672    31-May, 01-Jun
7680    31-Mar, 01-Apr
7684    31-Dec
7685    01-Jan
7692    29-Feb, 01-Mar
7699    31-Dec
7700    01-Jan
7717    31-Aug, 01-Sep
7720    31-Aug, 01-Sep
7730    31-Jul, 01-Aug
7733    31-Jul, 01-Aug
7742    31-Oct, 01-Nov
7744    29-Feb, 01-Mar
7766    31-Jul, 01-Aug
7768    31-Aug, 01-Sep
7770    31-Mar, 01-Apr
7789    31-May, 01-Jun
7790    31-Jan, 01-Feb
7799    31-Jan, 01-Feb
7803    31-Mar, 01-Apr
7806    31-Mar, 01-Apr
7826    31-Jan, 01-Feb
7832    31-Jan, 01-Feb
7837    31-May, 01-Jun
7858    31-Dec
7859    01-Jan, 31-Jul, 01-Aug
7884    31-Mar, 01-Apr
7888    31-May, 01-Jun
7892    31-Jul, 01-Aug
7897    31-Dec
7898    01-Jan
7936    31-Dec
7937    01-Jan
7950    31-Mar, 01-Apr
7957    31-Dec
7958    01-Jan
7966    31-May, 01-Jun
7968    29-Feb, 01-Mar, 31-Mar, 01-Apr
7979    31-Jan, 01-Feb
7982    31-Jan, 01-Feb
7988    31-Oct, 01-Nov
8008    31-May, 01-Jun
8012    31-Oct, 01-Nov
8024    31-Jan, 01-Feb
8029    31-Aug, 01-Sep
8030    31-Oct, 01-Nov
8038    31-Aug, 01-Sep
8039    31-Jul, 01-Aug
8041    31-May, 01-Jun, 31-Dec
8042    01-Jan
8049    31-Mar, 01-Apr
8052    29-Feb, 01-Mar
8055    31-Mar, 01-Apr
8060    31-Jul, 01-Aug
8065    31-Aug, 01-Sep
8086    31-May, 01-Jun
8105    31-Jan, 01-Feb
8110    31-Dec
8111    01-Jan
8127    31-Mar, 01-Apr
8131    31-May, 01-Jun
8149    31-Aug, 01-Sep
8154    31-Mar, 01-Apr
8164    31-Aug, 01-Sep
8191    31-Aug, 01-Sep
8194    31-Dec
8195    01-Jan, 31-Jul, 01-Aug
8198    31-Jan, 01-Feb
8204    31-Jul, 01-Aug
8207    31-Jul, 01-Aug
8210    31-Oct, 01-Nov
8212    31-May, 01-Jun
8220    31-Mar, 01-Apr
8233    31-May, 01-Jun, 31-Dec
8234    01-Jan
8257    31-May, 01-Jun
8262    31-Mar, 01-Apr
8272    31-Aug, 01-Sep
8280    31-Mar, 01-Apr
8283    31-Mar, 01-Apr
8287    31-Aug, 01-Sep
8288    31-Jul, 01-Aug
8294    31-Jul, 01-Aug
8297    31-Jul, 01-Aug
8309    31-Jul, 01-Aug
8317    31-May, 01-Jun
8321    31-Oct, 01-Nov
8324    31-Oct, 01-Nov
8327    31-Jul, 01-Aug, 31-Oct, 01-Nov
8344    31-Aug, 01-Sep
8375    31-Jul, 01-Aug
8384    31-Oct, 01-Nov
8408    31-Jan, 01-Feb
8435    31-Jul, 01-Aug
8440    31-Dec
8441    01-Jan
8446    31-Dec
8447    01-Jan
8455    31-Aug, 01-Sep, 31-Dec
8456    01-Jan
8470    31-May, 01-Jun
8478    31-Mar, 01-Apr
8483    31-Oct, 01-Nov
8490    31-Mar, 01-Apr
8494    31-Aug, 01-Sep
8497    31-May, 01-Jun
8503    31-May, 01-Jun, 31-Dec
8504    01-Jan
8507    31-Jul, 01-Aug
8520    29-Feb, 01-Mar
8528    31-Jan, 01-Feb
8534    31-Jan, 01-Feb
8540    31-Jan, 01-Feb
8545    31-Aug, 01-Sep
8560    31-May, 01-Jun
8573    31-Oct, 01-Nov
8578    31-May, 01-Jun
8581    31-May, 01-Jun
8587    31-Dec
8588    01-Jan
8589    31-Mar, 01-Apr
8594    31-Jan, 01-Feb, 31-Jul, 01-Aug
8599    31-Aug, 01-Sep
8606    31-Jul, 01-Aug
8611    31-Dec
8612    01-Jan
8621    31-Jul, 01-Aug
8642    31-Jul, 01-Aug
8653    31-Dec
8654    01-Jan
8656    31-Dec
8657    01-Jan, 31-Jan, 01-Feb
8659    31-May, 01-Jun
8660    31-Jan, 01-Feb
8665    31-Aug, 01-Sep
8675    31-Jul, 01-Aug
8686    31-Dec
8687    01-Jan
8694    31-Mar, 01-Apr
8743    31-May, 01-Jun
8750    31-Jan, 01-Feb, 31-Oct, 01-Nov
8755    31-Dec
8756    01-Jan
8758    31-May, 01-Jun
8765    31-Jan, 01-Feb
8769    31-Mar, 01-Apr
8783    31-Jul, 01-Aug
8789    31-Oct, 01-Nov
8807    31-Jan, 01-Feb
8813    31-Jan, 01-Feb
8819    31-Jul, 01-Aug, 31-Oct, 01-Nov
8862    31-Mar, 01-Apr
8866    31-May, 01-Jun
8875    31-Dec
8876    01-Jan
8881    31-Aug, 01-Sep
8884    31-Aug, 01-Sep
8892    29-Feb, 01-Mar
8905    31-Aug, 01-Sep
8906    31-Jul, 01-Aug
8909    31-Jul, 01-Aug
8932    31-Aug, 01-Sep
8935    31-May, 01-Jun
8936    31-Jul, 01-Aug
8948    31-Oct, 01-Nov
8967    31-Mar, 01-Apr
8968    29-Feb, 01-Mar
8977    31-May, 01-Jun
8978    31-Oct, 01-Nov
8985    31-Mar, 01-Apr
8989    31-Dec
8990    01-Jan
9000    31-Mar, 01-Apr
9001    31-Dec
9002    01-Jan
9005    31-Jan, 01-Feb
9009    31-Mar, 01-Apr
9014    31-Jan, 01-Feb
9031    31-Dec
9032    01-Jan
9035    31-Jan, 01-Feb
9068    31-Jan, 01-Feb
9082    31-Aug, 01-Sep
9092    31-Oct, 01-Nov
9094    31-Aug, 01-Sep
9122    31-Jan, 01-Feb
9137    31-Oct, 01-Nov
9139    31-May, 01-Jun
9145    31-Aug, 01-Sep
9146    31-Oct, 01-Nov
9155    31-Jan, 01-Feb
9179    31-Jul, 01-Aug
9194    31-Jul, 01-Aug
9204    31-Mar, 01-Apr
9218    31-Jan, 01-Feb
9244    31-Dec
9245    01-Jan
9249    31-Mar, 01-Apr
9263    31-Jul, 01-Aug
9275    31-Jan, 01-Feb
9290    31-Oct, 01-Nov
9301    31-Aug, 01-Sep
9304    31-Dec
9305    01-Jan
9310    31-Aug, 01-Sep
9313    31-Aug, 01-Sep, 31-Dec
9314    01-Jan
9323    31-Oct, 01-Nov
9326    31-Jul, 01-Aug
9328    31-May, 01-Jun
9330    31-Mar, 01-Apr
9344    31-Jan, 01-Feb
9370    31-May, 01-Jun
9373    31-May, 01-Jun
9392    31-Oct, 01-Nov
9395    31-Oct, 01-Nov
9397    31-Aug, 01-Sep
9415    31-May, 01-Jun
9431    31-Jan, 01-Feb, 31-Oct, 01-Nov
9435    31-Mar, 01-Apr
9447    31-Mar, 01-Apr
9451    31-Aug, 01-Sep
9464    31-Oct, 01-Nov
9467    31-Jul, 01-Aug
9482    31-Jul, 01-Aug
9490    31-Aug, 01-Sep
9519    31-Mar, 01-Apr
9532    29-Feb, 01-Mar
9536    31-Jul, 01-Aug
9547    31-Aug, 01-Sep, 31-Dec
9548    01-Jan, 31-Oct, 01-Nov
9559    31-May, 01-Jun
9566    31-Oct, 01-Nov
9575    31-Jan, 01-Feb
9577    31-May, 01-Jun
9625    31-Aug, 01-Sep
9637    31-May, 01-Jun
9658    31-Aug, 01-Sep
9662    31-Jan, 01-Feb
9673    31-Dec
9674    01-Jan
9693    31-Mar, 01-Apr
9694    31-May, 01-Jun
9696    29-Feb, 01-Mar
9700    31-Aug, 01-Sep
9701    31-Jan, 01-Feb
9731    31-Jan, 01-Feb
9750    31-Mar, 01-Apr
9760    31-Aug, 01-Sep
9765    31-Mar, 01-Apr
9766    31-Dec
9767    01-Jan
9770    31-Jan, 01-Feb
9773    31-Jan, 01-Feb
9780    31-Mar, 01-Apr
9812    31-Jan, 01-Feb
9817    31-Dec
9818    01-Jan
9830    31-Jan, 01-Feb
9832    31-May, 01-Jun
9833    31-Jul, 01-Aug
9838    31-Aug, 01-Sep
9841    31-Aug, 01-Sep
9843    31-Mar, 01-Apr
9850    31-Dec
9851    01-Jan, 31-Jan, 01-Feb
9864    31-Mar, 01-Apr
9868    31-May, 01-Jun
9872    31-Jul, 01-Aug
9876    31-Mar, 01-Apr
9884    31-Oct, 01-Nov
9889    31-May, 01-Jun
9913    31-May, 01-Jun
9925    31-Aug, 01-Sep
9956    31-Jul, 01-Aug
9959    31-Jul, 01-Aug
9968    31-Jan, 01-Feb
9976    31-Dec
9977    01-Jan
9997    31-May, 01-Jun


**edit** revised version, one step shorter, less clunky display routine. I will leave the original version on which Paul commented above.

Code:
001    LBL 'PPD'     Label "Prime Pair Dates"
002    STO 03        Store input year in register 3 
003    SDL 004       multiply by 10000
004    INC X         add 1 to YYYY0000, now have YYYY0001
005    SDR 002       divide by 100 to get in form to allow month to be incremented
006    STO 01        store YYYY00.01 in reg 1
007    #11           enter constant 11
008    STO 04        store 11 in loop counter
009    XEQ 01        check YYYx.1231/YYYY0101, YYYY0131/0201…YYYY1031/1101*
010    DSE 04        decrement counter
011    BACK 002      go back to check next date pair
012    #89           when done checking through 1031/1101, enter constant 89
013    STO+ 01       add 89 to YYYY11.01 to get YYYz00.01
014    XEQ 01        check YYYY.1231/YYYz0101
015    RCL 03        recall input year to display when complete
016    STOP          
017    LBL 01        subroutine to check date pairs for prime
018    INC 01        increment month
019    RCL 01        recall first of month date
020    SDL 02        multiply by 100 to get in proper form
021    PRIME?        is first of month date prime?
022    SKIP 001      if prime, skip to check last of previous month
023    RTN           if not prime, return to get next month
024    SDR 004       divide by 10,000 to get in form to allow date arithmetic
025    1             enter 1
026    +/-           enter -1
027    DAYS+         subtract 1 day from 1st of month to get last of previous month
028    SDL 004       multiply by 10000 to get in proper form
029    PRIME?        is last of prior month date prime?
030    SKIP 001      if prime, skip to display prime date(s)
031    RTN           if not prime, return to get next month
032    XEQ 02        execute display subroutine
033    RCL 01        recall first of month date
034    SDL 002       multiply by 100 to get in proper form for display
035    LBL 02        subroutine to display prime date(s)
036    RCL X         duplicate X value
037    SDR 004       divide year by 10000
038    IP            take integer portion to get year value YYY?
039    x=/=? 03      compare YYY? to input year
040    SKIP 002      if not equal, do not display prime date, it is in wrong year
041    VIEW Y        display date
042    PSE 25        pause to display prime date
043    RTN

**edit 2** I ultimately got around to analyzing Paul's and Eric's versions to see what tips and tricks they used that I likely missed. I discovered similarities, of course. Eric’s posted version, at 50 steps, is a bit longer than the best version I came up with before checking others, but as he noted, it can be easily shortened. A few simple changes (e.g. changing the direct entry of 8800 to CONST #088 SDL 002 and changing the multiplications and divisions by 10000 to SDL 004 and SDR 004) and removing the labels and replacing the GTOs with SKIPs and BACKs reduces it to only 38 steps.

After seeing Eric's program, I first applied his technique of adding 100 to the date instead of dividing by 100 and adding 1 to increment the month. That got my program down to 42 steps. I then applied his technique of using flags to handle dates outside of the test year, and came up with what I believe to be the best I can do, 39 steps, with initialization of date mode and finishing with display of the input year. I prefer this to having the program finish with display of first of the following year, because that looks like an output and could confuse the judges :-) Anyhow, here is that version.

Code:
001    LBL 'PPD'     Label "Prime Pair Dates"
002    Y.MD          Set y.md mode to allow date arithmetic
003    CF ALL        clear all flags to initialize Flag 1 and Flag 2
004    STO 01        Store input year in register 1
005    SDL 004       multiply by 10000
006    INC X         add 1 to YYYY0000, now have YYYY0001
007    STO 02        store YYYY0001 in reg 2
008    #11           enter constant 11
009    STO 03        store 11 in loop counter
010    XEQ 01        check YYYx.1231/YYYY0101, YYYY0131/0201…YYYY1031/1101
011    DSE 03        decrement counter
012    BACK 002      go back to check next date pair
013    SF 02         Set flag 2 to not display YYYz0101
014    #89           when done checking through 1031/1101, 
015    SDL 002       ...enter constant 8900
016    STO+ 02       add 8900 to YYYY1101 to get YYYz0001
017    LBL 01        subroutine to check date pairs for prime
018    # 100         enter constant 100
019    STO+ 02       increment month
020    RCL 02        recall first of month date
021    PRIME?        is first of month date prime?
022    SKIP 003      if prime, skip to check last of previous month
023    SF 01         set flag 1 to display last of prior month if prime after YYYx1231
024    RCL 01        recall input year to display when complete
025    RTN           return for next month or stop.
026    SDR 004       divide prime date by 10,000 to allow date arithmetic
027    1             enter 1
028    +/-           enter -1
029    DAYS+         subtract 1 day from 1st of month to get last of previous month
030    SDL 004       multiply by 10000 to get in proper form
031    PRIME?        is last of prior month date prime?
032    SKIP 001      if prime, we have a prime pair, skip to display prime date(s)
033    BACK 010      if not prime, loop back for next month or to exit
034    FS? 01        Flag 1 clear first to skip display of YYYx1231, set after that
035    PSE 10        pause to display prime date
036    RCL 02        recall first of month date
037    FC? 02        Flag 2 set last iteration to skip display of YYYz0101
038    PSE 10        pause to display prime date
039    BACK 016      loop back to return

**edit 3** A couple more improvements gets it down to 38 steps if the final END is included, while still displaying the input year when the program is done. This could drop to 37 steps if I was satisfied with displaying a zero when done, or 36 steps if the judges were told to ignore the value in the display when the program stops running. This value will either be YYYY1231 or YYYz0101, either of which gives the appearance of an output, so I would prefer to suppress.
Code:
001    LBL 'PPD'     Label "Prime Pair Dates"
002    Y.MD          Set y.md mode to allow date arithmetic
003    CF ALL        clear all flags to initialize Flag 1 and Flag 2
004    STO 00        Store input year in register 0 to display when done.  This step
                     could be eliminated, see comments regarding display at completion
005    SDL 004       multiply by 10000
006    INC X         add 1 to YYYY0000, now have YYYY0001
007    #11           enter constant 11
008    C-STO J       store 11 for loop counter in J and YYYY0001 in K using complex store
009    XEQ 01        check YYYx.1231/YYYY0101, YYYY0131/0201…YYYY1031/1101
010    DSE J         decrement counter
011    BACK 002      go back to check next date pair
012    SF 02         Set flag 2 to not display YYYz0101
013    #89           when done checking through 1031/1101, 
014    SDL 002       ...enter constant 8900
015    STO+ K        add 8900 to YYYY1101 to get YYYz0001
016    LBL 01        subroutine to check date pairs for prime
017    # 100         enter constant 100
018    STO+ K        increment month
019    RCL K         recall first of month date
020    PRIME?        is first of month date prime?
021    SKIP 001      if prime, skip to check last of previous month
022    SKIP 013      if not prime, skip to common loop-back/end point
023    SDR 004       divide prime date by 10,000 to allow date arithmetic
024    1             enter 1
025    +/-           enter -1
026    DAYS+         subtract 1 day from 1st of month to get last of previous month
027    SDL 004       multiply by 10000 to get in proper form
028    PRIME?        is last of prior month date prime?
029    SKIP 001      if prime, we have a prime pair, skip to display prime date(s)
030    SKIP 005      if not prime, skip to common loop-back/end point
031    FS? 01        Flag 1 clear first to skip display of YYYx1231, set after that
032    PSE 10        pause to display prime date
033    RCL K         recall first of month date
034    FC? 02        Flag 2 set last iteration to skip display of YYYz0101
035    PSE 10        pause to display prime date
036    SF 01         set flag 1 to display last of prior month if prime after YYYx1231
037    RCL 00        recall input year to display when complete.  This step could be
                     a CLx or eliminated, see comments regarding display at completion
038    END           loop back or stop when done

Dave - My mind is going - I can feel it.
Find all posts by this user
Quote this message in a reply
Post Reply 


Messages In This Thread
HHC 2014 Programming Contest - Paul Dale - 09-24-2014, 09:13 AM
RE: HHC 2014 Programming Contest - BruceH - 10-02-2014, 09:35 PM
RE: HHC 2014 Programming Contest - Jeff O. - 09-29-2014, 01:41 PM
RE: HHC 2014 Programming Contest - Jeff O. - 09-30-2014, 04:39 PM
RE: HHC 2014 Programming Contest - Jeff O. - 10-06-2014 05:01 PM
RE: HHC 2014 Programming Contest - Jeff O. - 10-07-2014, 12:26 PM
RE: HHC 2014 Programming Contest - Werner - 10-03-2014, 07:35 AM
RE: HHC 2014 Programming Contest - C.Ret - 10-05-2014, 10:02 AM
RE: HHC 2014 Programming Contest - Werner - 10-05-2014, 08:02 PM



User(s) browsing this thread: 1 Guest(s)