HP Forums

Full Version: HHC 2017 programming contest revisited
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Recall the programming contest for last year's HHC-2017 conference regarding finding "happy" and "unhappy" numbers. I recently acquired a Sharp PC-1211 Pocket Computer (vintage 1980) which runs BASIC. I decided to write a happy number finder for it. Then I decided to write an equivalent RPN routine for my 12c (vintage 2001, not the much faster 12c+). Then I ran several tests with the machines side-by-side so I could compare the speeds. Amazingly enough, each machine took EXACTLY the same amount of time when determining whether a number was happy or unhappy. So BASIC vintage 1980 was equivalent to RPN vintage 2001. Very interesting.

Here is the code.

Code:

First, the BASIC code for the Sharp PC-1211

A=current number
B=cycles
C=sum of squares
D=digit
I=loop index

10 "Z":AREAD A:B=0
20 C=0:B=B+1
30 FOR I=0 TO LOG(A)
40 D=A-10 x INT(A/10)
50 A=INT(A/10)
60 C=C+D*D
70 NEXT I
80 IF C=1 PAUSE "HAPPY CYC=",B:END
90 IF C=4 PAUSE "UNHAPPY CYC=",B:END
100 A=C:GOTO 20



Now, the RPN code for the 12c

R1=current number
R2=sum of squares
R3=cycles

when program completes, happy (1) or unhappy (4) is shown, X<->Y shows cycles

01 STO 1
02 0
03 STO 3
04 STO 2
05 RCL 1
06 .
07 1
08 x
09 INT
10 STO 1
11 LSTX
12 FRAC
13 ENTER
14 x
15 STO+2
16 RCL 1
17 X=0
18 GOTO 20
19 GOTO 06
20 1
21 STO+3
22 RCL 2
23 1
24 0
25 0
26 x
27 STO 1
28 1
29 -
30 X=0
31 GOTO 39
32 RCL 1
33 4
34 -
35 X=0
36 GOTO 39
37 0
38 GOTO 04
39 RCL 3
40 LSTX
Thank you for this. Glad you thought of it again.

Gene
Very nice program.
What if 100 change to EEX 2 is this help speed up the 12C at bit?

Gamo
(11-30-2018 01:59 AM)Gamo Wrote: [ -> ]Very nice program.
What if 100 change to EEX 2 is this help speed up the 12C at bit?

Gamo
Thanks Gamo. I tried that and it had no obvious effect. There might be some microscopic time improvement of EEX 2 versus 100, but the number of iterations for this program loop is so small there is no obvious improvement in speed for the 12c.

Don
(11-30-2018 01:59 AM)Gamo Wrote: [ -> ]What if 100 change to EEX 2 is this help speed up the 12C at bit?

Since R2 won’t contain 0, I would suggest replacing 1 0 0 with ENTER %T. Not noticeably any faster, though.
Reference URL's