Day of the week: Difference between revisions

Content added Content deleted
m (→‎{{header|QL SuperBASIC}}: bit more added)
Line 684: Line 684:
==={{header|QL SuperBASIC}}===
==={{header|QL SuperBASIC}}===
<b>Works with:</b> [https://en.wikipedia.org/wiki/Sinclair_QL ''Sinclair QL''] <br>
<b>Works with:</b> [https://en.wikipedia.org/wiki/Sinclair_QL ''Sinclair QL''] <br>
...having a structured [https://en.wikipedia.org/wiki/SuperBASIC ''BASIC''] with MOD & DIV and quite unlike the ZX81's "zeroeth-generation" BASIC that's rather like using a calculator which also is without an integer type. Even so, one should still put forth the effort into optimising the code for the task at hand, as done below - which if implemented for the ZX81's routine would make it finish in a fraction of a second, even in slow mode, as multiplying by 13 with a division by 5 is slower than by 256, as well as that two divisions by multiples of 100 are much slower than one by 16 as used in [gopher://sdf.org/0/users/retroburrowers/TemporalRetrology/cc/os ''Lachman's method''] of calculating the day of the week.
...having a structured [https://en.wikipedia.org/wiki/SuperBASIC ''BASIC''] with MOD & DIV and quite unlike the ZX81's "zeroeth-generation" BASIC that's rather like using a calculator which also is without an integer type. Even so, one should still put forth the effort into optimising the code for the task at hand, as done below - which if implemented for the ZX81's routine would make it finish in a fraction of a second, even in slow mode, as multiplying by 13 with a division by 5 is slower than by 256 alone, as well as that two divisions by multiples of 100 are much slower than one by 16 as used in [gopher://sdf.org/0/users/retroburrowers/TemporalRetrology/cc/os ''Lachman's method''] of calculating the day of the week.


<lang basic>
<lang basic>
AUTO 100,10
AUTO 100,10
DEFine PROC Iso(S,O)
DEFine PROCedure Iso(S,O)
REM inputting starting & ending years as integers S and O
REM passing starting & ending years as integers S and O
LOCal y$,m%,d%,i$,n%,w%
LOCal y$,m%,d%,i$,n%,w%
Line 697: Line 697:
LET i$=m%*256+ 19300 : n%=i$(2TO 3)+ d%
LET i$=m%*256+ 19300 : n%=i$(2TO 3)+ d%
REM skipping unnecessary years below
REM skipping irrelevant years below
FOR count=S TO O
FOR count=S TO O
LET y$=count : w%=(y$(1TO 2)&"32"DIV 16+ count DIV 4+ count+ n%)MOD 7
LET y$=count : w%=(y$(1TO 2)&"32"DIV 16+ count DIV 4+ count+ n%)MOD 7