Řešení první | ↓ |
Stejně jako výchozí řešení pro HP-50g i tato RPN varianta pro HP-35s "parazituje" na dávno existující verzi výpočtu dne v týdnu a počtu dní mezi dvěma daty. Použití silných slov dělá text akčnějším, proto ten nelichotivý výraz v minulé větě. Méně zábavné, zato mnohem pravdivější, je tvrzení, že zde popisovaná novota ten starší program doplňuje, rozšiřuje, ba co víc, obohacuje! To doplnění je patrné z adresy první instrukce. Nezačíná očekávaným L001, ale pokračuje tam, kde sled instrukcí předchozího programu skončil.
Provedení pro HP-35s z pochopitelných důvodů nenabízí takový komfort zobrazení výsledků, jako RPL verze pro HP-50g. Běh programu není ukončen vytvořením seznamu výsledných hodnot, ale je (pro potřebu zobrazení mezivýsledku) zastaven instrukcí STOP při každém nalezeném nešťastném pátku. Pokračování běhu programu stiskem R/S vede k dalšímu nálezu. Proto je před spuštěním programu zadán pouze výchozí rok. Pokud hledače přestanou další eventuální nálezy zajímat, tak ať konečně přestane na klávesu R/S dorážet.
Přesto lze mezi oběma řešeními nalézt podobnosti. (Aby ne, když oba programy dělají v zásadě totéž :-) "Ty dva fóry" v hlavním (závěrečném) bloku RPL programu jsou tu také, jen to není tak okaté. (1) Cyklus kráčející po rocích zde degradoval na pouhou inkrementaci proměnné Y s následným skokem na úplný začátek programu. (2) Vnořený cyklus procházející měsíce v daném roce obstarává instrukce ISG N.
Pozn.: dvouřádkového displeje HP-35s je zde s výhodou využito pro zobrazení nejen aktuálního, ale i předchozího nálezu.
ADDR | CODE | X | Y | Z | T |
---|---|---|---|---|---|
Vstupní bod, zadán rok | |||||
L055 | STO Y | y | p | ||
L056 | 1.012 | 1.012 | y | p | |
L057 | STO N | 1.012 | y | p | |
L058 | 13 | 13 | 1.012 | y | p |
L059 | STO D | 13 | 1.012 | y | p |
L060 | R↑ | p | |||
Cyklus: všechny měsíce v roce | |||||
L061 | RCL N | m.012 | p | ||
L062 | IP | m | p | ||
L063 | STO M | m | p | ||
L064 | R↓ | p | |||
L065 | XEQ L016 | f | p | ||
L066 | 7 | 7 | f | p | |
L067 | RMDR | w | p | ||
L068 | 6 | 6 | w | p | |
L069 | - | w - 6 | p | ||
L070 | x≠0? | w - 6 | p | ||
L071 | GTO L081 | w - 6 | p | ||
Zobrazení nálezu | |||||
L072 | CLx | 0 | p | ||
L073 | 0.0001 | 0.0001 | p | ||
L074 | RCL× D | 0.00dd | p | ||
L075 | 0.01 | 0.01 | 0.00dd | p | |
L076 | RCL× M | 0.mm | 0.00dd | p | |
L077 | + | 0.mmdd | p | ||
L078 | RCL+ Y | yyyy.mmdd | p | ||
L079 | STOP | yyyy.mmdd | p | ||
L080 | x<>y | p | yyyy.mmdd | ||
Pokračování cyklu | |||||
L081 | R↓ | p | |||
L082 | ISG N | p | |||
L083 | GTO L061 | p | |||
Další rok | |||||
L084 | 1 | 1 | p | ||
L085 | RCL+ Y | y + 1 | p | ||
L086 | GTO L055 |
Použití programu:
Stisk kláves | Činnost | Display |
---|---|---|
2 0 1 3 | výchozí rok | 0.0000 2013_ |
XEQ L055 | spuštění programu | RUNNING |
první nález | 0.0000 2,013.0913 | |
R/S | pokračování hledání | RUNNING |
druhý nález | 2,013.0913 2,013.1213 | |
R/S | pokračování hledání | RUNNING |
třetí nález | 2,013.1213 2,014.0613 | |
R/S R/S R/S R/S | opakované pokračování | RUNNING |
poslední nález | 2,015.1113 2,016.0513 |
Řešení druhé | ↑ |
I modifikace pro HP-15C využívá existující verzi programu ML-20. Zdálo by se, že mezi programem pro HP-15C a předchozím pro HP-35s nemůže být příliš mnoho rozdílů. V zásadě je to pravda, ale drobné odlišnosti tu jsou. (1) Z programu pro HP-35s je volán pouze jediný podprogram na adrese L016 - výpočet faktoru zadaného data. Ve variantě HP-15C je pro tento účel volán celý podprogram pro určení dne v týdnu (začíná návěštím LBL D). Důvod je prostý: HP-15C nemá funkci RMDR. Zbytek po dělení 7 je vyřešen právě v rámci programové sekvence určující den v týdnu, proto je zde tato sekvence využita celá. (2) Zobrazení nálezu řeší HP-35s "svépomocí" na adrese L072. V případě HP-15C je použit podprogram s návěštím LBL 5, který je v programu pro určení dne v týdnu obsažen.
Jinak si obě RPN varianty nemají co vyčítat: vstupní hodnotou je výchozí rok, styl zobrazení každé nalezené hodnoty je stejný, ovládáním se také neliší. I tvrzení o doplnění, rozšíření a obohacení platí pro HP-15C také. Proto zde popisovaný program na ten předchozí bezprostředně navazuje.
ADDR | CODE | X | Y | Z | T | ||
---|---|---|---|---|---|---|---|
Vstupní bod, zadán rok | |||||||
140 | - | 42,21,.3 | LBL .3 | y | p | ||
141 | - | 3 | 3 | 3 | y | p | |
142 | - | 36 | ENTER | 3 | 3 | y | p |
143 | - | 1 | 1 | 1 | 3 | y | p |
144 | - | 42,23,11 | DIM A | 1 | 3 | y | p |
145 | - | 33 | R↓ | 3 | y | p | |
146 | - | 33 | R↓ | y | p | ||
147 | - | 1 | 1 | 1 | y | p | |
148 | - | 48 | . | 1. | y | p | |
149 | - | 0 | 0 | 1.0 | y | p | |
150 | - | 1 | 1 | 1.01 | y | p | |
151 | - | 2 | 2 | 1.012 | y | p | |
152 | - | 44 2 | STO 2 | 1.012 | y | p | |
153 | - | 33 | R↓ | y | p | ||
Cyklus: všechny měsíce v roce | |||||||
154 | - | 42,21,.2 | LBL .2 | y | p | ||
155 | - | 42,16, 1 | MATRIX 1 | y | p | ||
156 | u | 44 11 | STO A | YYYY → A[1] | |||
157 | - | 1 | 1 | 1 | y | p | |
158 | - | 3 | 3 | 13 | y | p | |
159 | u | 44 11 | STO A | DD → A[2] | |||
160 | - | 45 2 | RCL 2 | MM.012 | 13 | y | p |
161 | - | 43 44 | INT | MM | 13 | y | p |
162 | - | 44 11 | STO A | MM → A[3] | |||
163 | - | 43 33 | R↑ | p | |||
164 | - | 32 14 | GSB D | w | p | p | p |
165 | - | 5 | 5 | 5 | w | p | p |
166 | - | 43,30, 6 | TEST 6 (x≠y) | je to pátek? | |||
167 | - | 22 .1 | GTO .1 | není | |||
168 | - | 42,16, 1 | MATRIX 1 | 5 | w | p | p |
179 | - | 43 33 | R↑ | p | |||
170 | - | 32 5 | GSB 5 | w | p | p | p |
171 | - | 31 | R/S | YYYY.MMDD | p | p | p |
172 | - | 33 | R↓ | p | p | p | YYYY.MMDD |
Pokračování cyklu | |||||||
173 | - | 42,21,.1 | LBL .1 | ? | ? | ? | p |
174 | - | 43 33 | R↑ | p | |||
175 | - | 42,16, 1 | MATRIX 1 | p | |||
176 | - | 45 11 | RCL A | y | p | ||
177 | - | 42, 6, 2 | ISG 2 | y | p | ||
178 | - | 22 .2 | GTO .2 | ||||
Další rok | |||||||
179 | - | 1 | 1 | 1 | y | p | |
180 | - | 40 | + | y | p | ||
181 | - | 22 .3 | GTO .3 |
Použití programu:
Stisk kláves | Činnost | Display |
---|---|---|
2 0 1 3 | výchozí rok | 2013 |
GSB . 3 | spuštění programu | running |
první nález | 2,013.0913 | |
R/S | pokračování hledání | running |
druhý nález | 2,013.1213 | |
x<>y | předchozí (první) nález | 2,013.0913 |
x<>y | zpět druhý nález | 2,013.1213 |
R/S | pokračování hledání | running |
třetí nález | 2,014.0613 | |
R/S R/S R/S R/S | opakované pokračování | running |
poslední nález | 2,016.0513 |