Re: HCC2007 programming contest on 17bii Message #9 Posted by Bill (Smithville, NJ) on 22 Nov 2007, 10:39 p.m., in response to message #1 by Don Shepherd
Hi Don,
Thanks for posting your code. Don and I have been bouncing the solver versions back and forth for the past few weeks. His version is the fastest. To give a couple of other variations, the following are two of my slower versions:
Selection Sort 10 Second time (to reverse one 10 digit number) on HP19BII:
R= 0 * L(K:X) +
0 * L(Y,LOG(X)) +
0 * SIGMA(N1:1:G(Y):1:
L(D1:IP(10*FP(G(K)/10^N1))) +
L(MAX:G(D1)) +
L(N3:0) +
0 * SIGMA(N2:N1+1:G(Y)+1:1:
L(D2:IP(10*FP(G(K)/10^N2))) +
IF (G(D2) > G(MAX):
L(MAX:G(D2)) +
L(N3:N2):0)
) +
IF (G(N3) > 0:
L(K:G(K)(G(D1)*10^(N11))
+(G(MAX)*10^(N11))
(G(MAX)*10^(G(N3)1))
+(G(D1)*10^(G(N3)1)))
:0)
)
+ L(R:G(K))
Another version was to scan for largest digit and build up new number in separate variable. Unfortunately, it's 14 seconds to reverse one 10 digit number:
R= 0 * L(P:0) +
0 * L(K:X) +
0 * L(Y,LOG(X)+1) +
0 * SIGMA(N1:1:G(Y):1:
L(MAX:0) +
0 * SIGMA(N2:1:G(Y):1:
L(D1:IP(10*FP(G(K)/10^N2))) +
IF(G(D1)>G(MAX):
L(MAX:G(D1)) +
L(N3:N2):0)
) +
L(P:G(P)+G(MAX)*10^(N11)) +
L(K:G(K)G(MAX)*10^(G(N3)1))
) +
L(R:G(P))
It's interesting that the nested IF's in Don's version is a lot faster than straight swapping of variables. A lot has to do with the total number of steps that each pass takes.
I want to thank Don for getting me interested in this problem. It was a lot of fun to try to tweak the code. I'm sure there are more variations that can be done with it.
Bill
Edited: 22 Nov 2007, 10:59 p.m.
