[Free42] Minichallenge: ->DATE
08-13-2020, 08:23 AM (This post was last modified: 08-13-2020 10:40 AM by Werner.)
Post: #1
 Werner Senior Member Posts: 650 Joined: Dec 2013
[Free42] Minichallenge: ->DATE
Flags 31 and 67 control the DATE format in Free42:
D.MY F67C, F31S
M.DY F67C, F31C
Y.MD F67S (F31C)

Given YYYY in Z, MM in Y and DD in X, write a routine that will return the date in the current format.
Shortes number of lines, then number of bytes.
Good luck!

Werner
While you're at it, write the reverse routine DATE-> as well
08-13-2020, 06:54 PM
Post: #2
 Didier Lachieze Senior Member Posts: 1,386 Joined: Dec 2013
RE: [Free42] Minichallenge: ->DATE
My solution, with YYYY in Z, MM in Y and DD in X, it returns the date in the current format:

Code:
00 { 31-Byte Prgm } 01▸LBL "→DATE" 02 FS? 31 03 X<>Y 04 FC? 67 05 RCL ST Z 06 100 07 FC? 67 08 STO÷ ST Y 09 STO÷ ST Y 10 STO÷ ST Z 11 ÷ 12 + 13 + 14 END

And the reverse routine:

Code:
00 { 37-Byte Prgm } 01▸LBL "DATE→" 02 IP 03 LASTX 04 FP 05 100 06 × 07 IP 08 LASTX 09 FP 10 100 11 FC? 67 12 STO× ST Y 13 × 14 STO ST T 15 FC? 67 16 R↓ 17 FS? 31 18 X<>Y 19 END
08-13-2020, 07:11 PM
Post: #3
 Werner Senior Member Posts: 650 Joined: Dec 2013
RE: [Free42] Minichallenge: ->DATE
Close ;-)
Actually, the first routine matches mine in line and byte count, but yours can be made 1 byte shorter ;-)
I still have a 2 byte edge over the second.
Werner
08-13-2020, 08:26 PM
Post: #4
 Didier Lachieze Senior Member Posts: 1,386 Joined: Dec 2013
RE: [Free42] Minichallenge: ->DATE
(08-13-2020 07:11 PM)Werner Wrote:  Close ;-)
Actually, the first routine matches mine in line and byte count, but yours can be made 1 byte shorter ;-)

You're right, here is the 1 byte shorter version :

Code:
00 { 30-Byte Prgm } 01▸LBL "→DATE" 02 FS? 31 03 X<>Y 04 FC? 67 05 RCL ST Z 06 100 07 FC? 67 08 STO÷ ST Y 09 STO÷ ST Z 10 X↑2 11 ÷ 12 + 13 + 14 END
08-17-2020, 06:27 AM
Post: #5
 Werner Senior Member Posts: 650 Joined: Dec 2013
RE: [Free42] Minichallenge: ->DATE
here's my entry for DATE→ :

Code:
00 { 35-Byte Prgm } 01 LBL "DATE→" 02 IP 03 LASTX 04 FP 05 100 06 x 07 IP 08 LASTX 09 FP 10 100 11 x 12 FS? 67 13 RTN 14 LASTX 15 x 16 X<> ST Z 17 FC? 31 18 X<>Y 19 END

Thanks for your participation, Didier! Your routine could again be made 1 byte shorter (X^2 io STOx ST Y), which would make it just 1 byte more than mine, with the same line count.
Werner
08-17-2020, 12:23 PM
Post: #6
 grsbanks Senior Member Posts: 1,219 Joined: Jan 2017
RE: [Free42] Minichallenge: ->DATE
(08-17-2020 06:27 AM)Werner Wrote:  Thanks for your participation, Didier! Your routine could again be made 1 byte shorter (X^2 io STOx ST Y)

"X^2" and "STOx ST Y" don't do the same thing.

With X^2 you end up with Y unchanged and X^2 in X. With STOx ST Y you end up with X*Y in Y and X unchanged.

There are only 10 types of people in this world. Those who understand binary and those who don't.
08-17-2020, 01:13 PM
Post: #7
 Werner Senior Member Posts: 650 Joined: Dec 2013
RE: [Free42] Minichallenge: ->DATE
10 100 11 FC? 67 12 STO× ST Y 13 ×