RESET Program entry descriptions (continued) positions 81-131 ---()--()--()--()--()--()--()--()--()--()--()--()--()--()--()--()--()--()--- -()--()--()--()--()--()--()--()--()--()--()--()--()--()--()--()--()--()--()- ---()--()--()--()--()--()--()--()--()--()--()--()--()--()--()--()--()--()--- ================================================================= ============== 81 ====================== heres_a_shot ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS heres_a_shot 1879997 2303 1860 443 5 Raymond Cook ================= heres_a_shot was submitted by Raymond Cook at cookre@dur.mindspring.com ================= ++ Please summarize the algorithm used by heres_a_shot Lazy me, just an extract of comments from the plain text code: Regardless of what the odometer starts out at, the final reading will, perforce, have no duplicate digits in the odometer. So, starting with the beginning odometer reading Z, we look at future odometer readings whose digits are unique until we find some reading F for which the four missing digits can be re-arranged to form an integer that is less than or equal to the total miles traveled between Z and F. Rollover of the odometer doesn't matter, since we're only concerned with total miles traveled against which digits don't appear. Does trip meter rollover matter? It would only if one would have to travel more than 9999 miles after reset to achieve unique digits. This, however, can't happen since the missing four digits will appear somewhere between 0123 and 9876. ++ What kind of tricks did heres_a_shot use to minimize code length? Just the basic single character variables, a few DEFINEs, and squished up lines. ++ Here's what I hated (and loved) about this POTM's scoring: Hated: Not having a box & compiler similar to the target to see how various approaches performed Not having the time to spend on the problem Loved: Anticipation of future problems ++ COMPANY? LOCATION? JOB? DO FOR FUN? INNERMOST SECRET? POTM IDEAS? Company: BDM, Inc. Location: US Postal Service, Raleigh, NC Job: Software hat: C/Netware API coding Hardware identification software Solve the problems everybody else gve up on Hardware hat: Evaluate new PCs for use within the USPS Solve the problems everybody else gve up on Do for fun: (See Job:) Innermost Secret: I actually enjoy mowing 3 acres without a riding mower. ================================================================= ============== 82 ====================== HAMI ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS HAMI 1879997 2393 1819 574 3 M.Migdol S.Haller Sorry ... no description available for HAMI ================================================================= ============== 83 ====================== Miles_Ahead ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS Miles_Ahead 1879997 2523 1328 1195 55 Mark Dettinger ============================================== Miles_Ahead was submitted by Mark Dettinger at mdetting@hydra.informatik.uni-ulm.de ============================================== ++ Please summarize the algorithm used by Miles_Ahead 1. By backtracking generate all (151200) 6-digit-numbers A with all digits distinct. For each number A compute the smallest 4-digit number B that uses the 4 remaining digits and the number C=A-B which is the latest time to press the button if you want 10 distinct digits when the 6-digit-odometer reads A. 2. Sort the generated triples (A,B,C) by C. 3. A triple (A,B,C) now is ruled out if there is another triple (A',B',C') with C'>C and A'560000 Size trick: Nothing really tricky; just the obvious stuff. No local identifiers greater than 1 character. #define's for char, int, return, for, 1000000. ++ Here's what I hated (and loved) about this POTM's scoring: I really didn't like not knowing the actual scores for all the entrants. I'd like to have known how much I had to improve my solution to bump up my standing! 8) On the other hand, I really like the fact that a correct solution was not too difficult to code up. There was an immediate feeling of success, even if the entry wasn't very optimized. ++ COMPANY? LOCATION? JOB? DO FOR FUN? INNERMOST SECRET? POTM IDEAS? I'm a graduate student at the University of Washington in Seattle, WA, USA. I have also been known to work for Cirrus Logic in my off-student hours, working on XFree86 driver code for their Laguna graphics chips. ================================================================= ============== 86 ====================== DrivingMissPerl ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS DrivingMissPerl 1879997 3077 306 2771 74 Andrew Robinson ================= DrivingMissPerl was submitted by Andrew Robinson at arobinso@zenith.att.com ================= ++ Please summarize the algorithm used by DrivingMissPerl The idea was to try to get the smallest digits as far to the left on the odometer, while still being able to produce a valid value on the trip odometer. For each position on the odometer, it would pull the smallest digit still available, and then use the next four smallest for the trip odometer. If the trip odometer was now a valid value, the digit would be used for the odometer; otherwise, the next digit available would be tried. The PERL script used a hash table to keep track of what digits were still available to be placed. The digits were used as the keys in the table. ++ What kind of tricks did DrivingMissPerl use to minimize code length? I really didn't use any tricks...just things like single character variable names, removal of unnecessary spaces, ranges (0..9 instead of 0,1,2,etc). ++ Here's what I hated (and loved) about this POTM's scoring: Did a PERL script really have a chance of winning? I don't think so. It's just too slow as compared to compiled C code. Of course, I realized this before entering, but I decided to use PERL anyway just to be different :-) Also, I had just learned PERL about one or two weeks before entering, so I wanted to try out my skills. ++ COMPANY? LOCATION? JOB? DO FOR FUN? INNERMOST SECRET? POTM IDEAS? I work as a software developer (C++) for AT&T in Piscataway, NJ. My leisure-time activities include riding my motorcycle, playing paintball, and inline skating. As for my innermost secret, I could tell you, but then I'd have to kill you [now THAT's original, isn't it?] ================================================================= ============== 87 ====================== Telecommuter ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS Telecommuter 1879997 3326 1205 2121 126 Emerald Chung Sorry ... no description available for Telecommuter ================================================================= ============== 88 ====================== The_Wheel ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS The_Wheel 1879997 3590 2912 678 11 Brian Schleaden Sorry ... no description available for The_Wheel ================================================================= ============== 89 ====================== freerun ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS freerun 1879997 3658 2140 1518 26 Matthew Haley freerun was submitted by Matthew Haley at mhaley@ids2.idsonline.com ================= ++ Please summarize the algorithm used by freerun Basically, freerun read in a number and put it in an array of integers and used this just like the cars odometer. I would then increase the odometer and total distance by one then check the odometer to see if all the digits were different. if they weren't I'd continue increasing, but if they were different I would find the four unused digits and place them in an array from least to greatest and use this as the trip odometer. If this number was more than total distance, I would start increasing the mile odometer again, but if it was less than total distance, i knew I had found the right mileage. I would then subtract the trip odometer from the mileage odometer to know when to push the reset button. Then just print the required numbers. continue this process until you reach end of file. ++ What kind of tricks did freerun use to minimize code length? All optional syntax was not used. keeping in mind the 80 character per line limit, I put as many commands on one line as c++ would allow, splitting commands that ran over the limit into two line. Also put all functions in front of any function that call them, so I wouldn't waste space prototyping. ++ Here's what I hated (and loved) about this POTM's scoring: ambivalent(sp?) towards the scoring. (Unless I didn't win) ++ COMPANY? LOCATION? JOB? DO FOR FUN? INNERMOST SECRET? POTM IDEAS? Ensign Matthew Haley Chief Computer Scientist USS Matrix -2296 mhaley@ids2.idsonline.com ================================================================= ============== 90 ====================== Rallye ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS Rallye 1879997 4038 3159 879 88 Kroum Savadjiev Sorry ... no description available for Rallye ================================================================= ============== 91 ====================== herfstversie ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS herfstversie 1879997 4704 3694 1010 44 Carl in_'t_Veld herfstversie was submitted by Carl in_'t_Veld at cveld@digitaal.nl ================= ++ Please summarize the algorithm used by herfstversie Okey, a very easy one. I read out the starting value and began checking the decimals if they were all different from left to right. As soon as there is encountered a double, this one will be increased. This process goes on till there are 6 different decimals. Now I check if it is a valid solution: checking if the 4-number-display can reach the other 4 decimals in time. If it is not, I'll search further for another 6 different decimals. ++ What kind of tricks did herfstversie use to minimize code length? None actually, I gave up many compact routines to increase overall speed... ++ Here's what I hated (and loved) about this POTM's scoring: The performance of the code was relatively not important: it was better to minimize code length instead of beaming up speed! ++ COMPANY? LOCATION? JOB? DO FOR FUN? INNERMOST SECRET? POTM IDEAS? I am student, sixth degree at a grammar school. Hobbies are playing the piano, filosophizing about life etc. Don't have any jobs... My secret is I rationalize all my feelings: I think about them if they were just things that can be ordered. Carl in 't Veld cveld@digitaal.nl http://www.digitaal.nl/~cveld ================================================================= ============== 92 ====================== rsrini ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS rsrini 1879997 6052 562 5490 99 Ramkumar Srinivasan ================= rsrini was submitted by Ramkumar Srinivasan at rsrini@iiap.ernet.in ================= ++ Please summarize the algorithm used by rsrini 1: Open the file passed as a parameter. 2: Read a number from the file and store it in A. 3: Copy the value of A to B (ie) B=A. 4: Repeat step 5 till all digits in B are different. 5: increament B by 1. 6: Find the other four digits which does not exist in B. 7: Form the smallest number possible using the combination of the four digits and store it in C. 8: if B-C >= A then print the value of B-C and B else increment B by 1 and goto step 4. 9: if EOF of opened file is not reached goto step 2. 10: Stop ++ What kind of tricks did rsrini use to minimize code length? 1. Never do unwanted things like checking to see if a file is opened properly. For example : f=fopen("1.dat","rt"); if(f==NULL) ----------------+ { | puts("File I/O error"); |--- Unwanted exit(1); | (will cost you 50 bytes) } ----------------+ .... ... .. 2. Never use sensible variable names . For example in the current POTM instead of using variables names like : main_odometer_value, sub_odometer_value, temporary_odometer_value use : m, s, t 3. Try squeezing as many charecters in a line as permitted (80 charecters in the current POTM). For example change : printf("Hello"); i++; printf("\nI=%d",i); k--; printf("\nK=%d",k); to : printf("Hello");i++;printf("\nI=%d",i);k--;printf("\nK=%d",k); ++ Here's what I hated (and loved) about this POTM's scoring: I was happy to know that my program worked pretty fast in your computer it took 3 times longer in mine. I hated seeing nearly 85 people score better than me. (Just joking) ++ COMPANY? LOCATION? JOB? DO FOR FUN? INNERMOST SECRET? POTM IDEAS? | | | | | | | Student | | I shall mail U | | | one soon. Bangalore, | I cant tell U that! India | 1.System programming 2.Graze the Internet 3.Watch cricket 4.Solve POTM problems ================================================================= ============== 93 ====================== push_the_button ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS push_the_button 1879997 6080 3490 2590 6 Jerry Ryan ================= push_the_button was submitted by Jerry Ryan at gwryan@bell-labs.com ================= ++ Please summarize the algorithm used by push_the_button a very simple algorithm that took a setting on the odometer and found the 'next' setting where all digits were different. as soon as the trip counter miles were less than the difference between start and end, I was done. I hacked this simple program together pretty quickly and then never had the time to go back and make it any more elegant... ++ What kind of tricks did push_the_button use to minimize code length? I never got to the "optimize the program length" stage, more's the pity ++ COMPANY? LOCATION? JOB? DO FOR FUN? INNERMOST SECRET? POTM IDEAS? Lucent Technologies in Murray Hill. Distributed Software Research Department. For fun I hold elected office in my town. (that's fun?) My innermost secrets are too innermost for email... ================================================================= ============== 94 ====================== kyeoto_im_tr ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS kyeoto_im_tr 1879997 6261 1695 4566 30 Salman Nawaz Sorry ... no description available for kyeoto_im_tr ================================================================= ============== 95 ====================== miano ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS miano 1879997 7828 2384 5444 77 John Miano ================= miano was submitted by John Miano at miano@worldnet.att.net ================= ++ Please summarize the algorithm used by miano 1. From the starting point find the next number where all the odometer digits are unique. 2. From the remaining digits create the smallest number. 3. If the different between 1 and 2 is greater than zero then this is the solution. Otherwise continue searching. ++ What kind of tricks did miano use to minimize code length? I made no effort to minimize code length. After writing the the thing I created a much smaller version by using macros, 1 letter variable names and the like. As I was doing this I said to myself "What's the point?". ++ Here's what I hated (and loved) about this POTM's scoring: Code size is a silly measurement. .EXE size maybe but source that is stuped. ================================================================= ============== 96 ====================== Reload! ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS Reload! 1879997 8966 925 8041 8 Phil Darnowsky On Fri, 29 Nov 1996, Fred Hicinbothem - POTM Master wrote: ================= Reload! was submitted by Phil Darnowsky at pdarnows@goucher.edu ================= ++ Please summarize the algorithm used by Reload! It was built around a highly inefficient linear search algorithm. ++ What kind of tricks did Reload! use to minimize code length? I slash-'n'-burned all of the whitespace out. ++ Here's what I hated (and loved) about this POTM's scoring: I thought it was reasonable. ++ COMPANY? LOCATION? JOB? DO FOR FUN? INNERMOST SECRET? POTM IDEAS? I'm a student at Goucher College in Baltimore. If I had time for anything fun, I would spend more time working on my POTM entries. ================================================================= ============== 97 ====================== roadrunner ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS roadrunner 1879997 10238 436 9802 63 Ramon Clout Sorry ... no description available for roadrunner ================================================================= ============== 98 ====================== singularity ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS singularity 1879997 11766 2982 8784 100 Dave Krofssik ============================================== singularity was submitted by Dave Krofssik at davek@soft-tek.com ============================================== ++ Please summarize the algorithm used by singularity My C++ program used a Number class that maintained its data as a character string and length. Addition, subtraction, shift operators that do decimal shifting, and comparison were implemented in this class. It also implemented the next_unique(digit_count) method which finds the next number with all unique digits (of the given digit count), and a bottom_digits(digit_count) operator which gets a number with only the low order digits (of the given digit count). The basic algorithm was as follows: Starting with new_total = input number + 123 (the minimum distance with different digits: 1. Find the next (smallest) number with 6 unique digits from new_total ( new_total = new_total.next_unique(6) ). 2. Compute the trip total from the original ( trip_total = new_total-original ). 3. Compute the smallest low order 4 digits that do not conflict with the new total ( display_trip = (new_total<<4).next_unique(10).bottom_digits(4) [ note that this is a decimal shifting operator ] ). 4. We are successful if display_trip is less than or equal to trip_total (the last place we can press the reset button is after the starting point); otherwise, incerment new_total and start over. The next_unique(digit_count) algorithm was as follows: Starting with the previous value in old_digits and zero in new_value: 1. Get the next digit from the old_digits. 2. If the digit is not already in new_value, add it. Otherwise, put it back in old_digits and increment it. 3. If there are still digits left in old_digits, then return to the first step. ++ What kind of tricks did singularity use to minimize code length? It ran through a shell script and program that did the following: 1. Ran the C++ preprocessor to eliminate comments and debug code. 2. Eliminated all unnecessary whitespace (the only necessary whitespace is between character tokens and within strings). 3. Replaced all character tokens (i.e. function and variable names) with one or two characters. 4. Removed all unnecessary semicolons (usually caused by macro expansion). ++ Here's what I hated (and loved) about this POTM's scoring: I don't have any feelings about the scoring, other than I wish I did better. COMPANY? Soft-tek International Makes charting and graphing products for UNIX and Windows. LOCATION? Work is in Wichita, Kansas; live in nearby Derby. JOB? Lead Engineer. Some management responsibility; mostly development in C++. DO FOR FUN? Private Pilot. I rent a Cessna 140 when I can. ================================================================= ============== 99 ====================== frsrst ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS frsrst 1879997 13709 673 13036 1 Fred Stearns Sorry ... no description available for frsrst ================================================================= ============== 100 ====================== ko ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS ko 1879997 14160 1062 13098 16 Karen Karp ================= ko was submitted by Karen Karp at kkarp@cammail2.attmail.com ================= ++ Please summarize the algorithm used by ko It's been awhile since I wrote ko, and the code is on a machine that is currently off, so I can't look at it. But, here it is, best I remember. It went something like this: 1) seperate the numbers out of the current mileage into a1,a2,a3,a4,a5,a6 2) start at a1 and check a2-a6 for a repeat of the digit in a1 3) if there is a repeat, add 1 to the repeated digit, write 1,2,3.. into the remaining digits and start the check again 4) Repeat the check for a2 (checking a3-a6) through a5. 5) When that is found, build the tripometer by inserting the remaining numbers (lowest first) into b1,b2,b3,b4 to get a 4-digit #. 6) Subtract the new tripometer setting from the new odometer setting. If the result is greater then the current setting, you are done. If not, add one to the new setting and start at step 1 again with the new setting. ++ What kind of tricks did ko use to minimize code length? I just made all the variables and functions 1 letter and took out all the extra spaces. ++ Here's what I hated (and loved) about this POTM's scoring: I was very neutral about the scoring. ++ COMPANY? LOCATION? JOB? DO FOR FUN? INNERMOST SECRET? POTM IDEAS? I work for AT&T in Somerset, NJ. Mostly, I program in PowerBuilder. This is my first POTM, I figured I needed some C practice and this one didn't look that hard. I write code for fun. Why else would I do this POTM stuff? I also play inline hockey, snowboard, ski, mountain bike and watch TV. I have no secrets. I have no ideas. I know nothing. ================================================================= ============== 101 ====================== potm ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS potm 1879997 21822 974 20848 121 Vishal Awasthi ================= potm was submitted by Vishal Awasthi at vishala@hotmail.com ================= ++ Please summarize the algorithm used by potm: MY ALGORITHM: Open the file; While (True) { Read one line; If EOF then Break else store read bytes as Integer in Var :Read1. While (true) { If (Read1<5556 OR Read1 >987654) then { m1=12345; m2=6789; break; } If the Read1 is passing the loop for first time Then { Read1 += Least four digit no.formed by digits exclusive first two digits of read1 (0 inclusive); } {Above increment boost up the performance} OriginalRead1 = Read1; Take out the 1st element of Read1, from left. For i = 2 to 6 { Take out the i th element of Read1, from left. For j = 1 to i-1 { if digit[i] = digit[j] Then { Read1 += 10**(6-i); {To boost up performance} Break from both for loops; Unique = False; } } } If Unique = True Then { Read2 = Least four digit no.formed by digits exclusive of 6 digits of Read1. If (Read1 - Read2)>=OriginalRead1 then { m1 = Read1-Read2; m2 = Read1; Break; } else Read1 ++; } } {Inner while-true loop ends} Print m1 and m2. } {Outer while-true loop ends} Close file; ++ What kind of tricks did potm use to minimize code length? In JAVA, there is no no way (as for as in my knowledge) to read a line directly as Integer. Therefore just to do this I have to write lot of code at byte level. Also, big class names, such as "FileInputStream", really added up to the code size like anything. Anyway, I have tried to keep the code size as low as possible by removing unnecessary spaces and keeping variable names short. Also I have tried to do more and more operations in single loop. ++ Here's what I hated (and loved) about this POTM's scoring: I won't comment on the scoring part, as whatever it is, is same for all. However, I am badly purturbed due to one and only one reason: THE SAME CODE, WHEN I RUN AT MY LOCAL 486DX2 MACHINE/ WINDOWS NT FOR 100 STANDARD ENTRIES, COMPLETES IN JUST 1.85 SECONDS (EVERYTHING INCLUSIVE, ie SYS+USER TIME)WHEREAS IT TAKES AROUND 12 SECONDS AT YOUR MACHINE, WHICH IS OBVIOUSLY SUPPOSED TO BE BETTER THAN MINE. THE JAVA COMPILER, I AM USING IS FOR DOS. CAN YOU PLEASE HIGHLIGHT THE REASON OF SUCH A DRASTICE DIFFERENCE IN PERFORMENCE ???????? IF THE PERFORMANCE OF PROGRAM AT YOUR MACHINE WOULD HAVE REMAINED SAME, IF NOT IMPROVED, I WOULD HAVE BEEN FIRST AT LEAST IN JAVA ENTRIES. ANYWAY I EXPECT SOMETHING FROM YOU AS POSSIBLE REASON FOR ABOVE. >>> POTM-MASTER note (in lower case of course!): The reason for such a >>> drastic difference in performance is that we are running on different >>> machines and using different compilers. I'm sorry I received this >>> note AFTER I sent out the consolation awards - you most definitely >>> would have won an award for something! Seriously - sorry you are >>> perturbed - this thing is purely for fun. ++ COMPANY? TATA UNISYS LTD. ++LOCATION? BOMBAY, INDIA. ++JOB? SYSTEMS ANALYST. ++DO FOR FUN? JUST AS ANOTHER HOBBY. ++INNERMOST SECRET? DIDN'T GET THE Q. ++POTM IDEAS? WOULD LIKE TO CONTRIBUTE IN FUTURE. ================================================================= ============== 102 ====================== guess ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS guess 1879997 83271 549 82722 32 Matt Nelson ============================================== guess floodland.mv.com!ach@caig2.att.att.com Matt Nelson ============================================== ++ Please summarize the algorithm used by guess guess takes the starting milage and makes a "guess" at the answer by adding to the start then constructing the next greater (or equal) unique odometer reading. It repeats the process until an answer is reached. ++ What kind of tricks did guess use to minimize code length? I eliminated whitespace, used short variable names, and removed punctuation that is optional in Perl ( For example { print $foo; } became {print $f} ). ++ COMPANY? LOCATION? JOB? DO FOR FUN? INNERMOST SECRET? POTM IDEAS? I work at Cabletron Systems in Rochester, new Hampshire as a Programmer / Analyst. In my free time I like to program in Perl, read about Math and Physics, and play Magic the Gathering. ================================================================= ============== 103 ====================== AWKward ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS AWKward 1879997 136791 729 136062 28 Ken Kopecky ================= AWKward was submitted by Ken Kopecky at kennk@ihgp.ih.lucent.com ================= ++ Please summarize the algorithm used by AWKward + Initialized odometer and used while[all 10 digits not displayed] loop. + Jump increment miles traveled if any of 4 leftmost digits are the same. + Detect which digits are seen on the odometer [and which are needed by the trip-odometer] + If odometer has 6 unique digits and miles traveled equals or exceeds the smallest 4 digit trip-odometer reading - then break out of the while loop.... else continue the while loop. ++ What kind of tricks did AWKward use to minimize code length? + Used single character variables. + Added 1,000,000 miles to the odometer so that I could use strings/sub-strings of digits and maintain leading zeroes. + Added 0122 miles to input since no trip could be complete until trip-odometer read at least 0123 miles. + Used nested if/then/elses to check for cases where any of the leftmost 4 odometer digits were the same...added 10,123 or 1,012 or 101 or 10 miles accordingly to save useless trips through the primary mileage loop. + Used an array for the digits, 0-9 to determine which digits were displayed on the odometer and which were needed for the trip-odometer. + Took advantage of AWK's ability to change integers to strings and strings to integers ++ Here's what I hated (and loved) about this POTM's scoring: Could not expect AWK to be faster than C. Hoped to just show that AWK could do the job. COMPANY? Lucent Technologies LOCATION? Indian Hill South Naperville IL JOB? 5ESS software regression tester DO FOR FUN? Work with PC/Win95 INNERMOST SECRET? none POTM IDEAS? none at this time. will keep watching for POTM's that might give AWK an advantage over C. ================================================================= ============== 104 ====================== roadtrip ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS roadtrip 1880006 580 400 180 91 Dave Spears Sorry ... no description available for roadtrip ================================================================= ============== 105 ====================== odometer ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS odometer 1904885 651 513 138 43 David Korn Sorry ... no description available for odometer ================================================================= ============== 106 ====================== vvidya ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS vvidya 1904885 937 829 108 83 Vidya Velgapudi Sorry ... no description available for vvidya ================================================================= ============== 107 ====================== mooshikan ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS mooshikan 1904885 2587 963 1624 81 Padma Vellanki =============== mooshikan submitted by Padma Vellanki at padmav@lucent.com =============== ++ Please summarize the algorithm used by mooshikan The algorithm: Find the closest number to the a-reading which has unique numbers. (To obtain the next a-reading with unique numbers, start from the leftmost digit and if the digit is already encountered once, increment it...) Then see if a b-reading can be obtained with the given initial a-reading and the new a-reading, if so, output the answer, else try the next unique a-reading. ++ What kind of tricks did mooshikan use to minimize code length? Eliminate function calls, minimize variable name lengths etc. ++ Here's what I hated (and loved) about this POTM's scoring: I hated this: The code size restriction on the .c file rather than the executable size. ++ COMPANY? LOCATION? JOB? DO FOR FUN? INNERMOST SECRET? POTM IDEAS? Lucent, Red Bank. ================================================================= ============== 108 ====================== NotSoHot ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS NotSoHot 1904885 3088 1303 1785 21 David Rysdam ================= NotSoHot was submitted by David Rysdam at drysdam@az.com ================= ++ Please summarize the algorithm used by NotSoHot Figure out when the main odometer will next have a "fully unique" reading. Get the unused digits from the reading and order them smallest to largest. If the ordered, unused digits form a number SMALLER than the distance to the unique reading, subtract the two and output the difference; else repeat ++ What kind of tricks did NotSoHot use to minimize code length? To minimize code length, I shortened var names to 1 or 2 characters and killed all unnecessary CRLFs (just enough to slip under 80 char limit). After that point I realized that I should have done my code speed optimization first. Then I became unmotivated. ++ Here's what I hated (and loved) about this POTM's scoring: It seems fair enough. ++ COMPANY? LOCATION? JOB? DO FOR FUN? INNERMOST SECRET? POTM IDEAS? Bank Bellingham, WA Read, internet, program it wouldn't be a secret then That wouldn't be fair. ================================================================= ============== 109 ====================== CheeseHead ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS CheeseHead 1904885 4317 1511 2806 64 Mike Buchmann Sorry ... no description available for CheeseHead ================================================================= ============== 110 ====================== yogi ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS yogi 1904885 148073 8961 139112 29 Yogesh Randad ================= yogi was submitted by Yogesh Randad at yogi@idc.tandem.com ================= ++ Please summarize the algorithm used by yogi 1. read input number. 2. increment number by 1 3. does the new number have six diff digits? if yes, store the counter. go to step 4 if no, go to step 2. 4. decrement counter by 1. if zero is reached, go to step 2. /* the counter here is the sum of the two trip meter readings - i) when reset is to be pressed. ii) the miles on it when all ten digits are diff. */ 5. does the new number have diff digits? if yes, go to step six. if no, go to step 4. 6. do the 4 digit number and the six digit number reached have 10 diff digits? if yes, go to step 7. if no, go to step 2. 7. calculate required numbers using simple algebra. write answers. ** the logic of the program took care of special cases. e.g. increment from 999999 by 1 is 000000. ++ What kind of tricks did yogi use to minimize code length? unfortunately, i was not too careful about this. ++ Here's what I hated (and loved) about this POTM's scoring: everything seemed fair. ++ COMPANY? Wipro Ltd. ++ LOCATION? Bangalore, India. ++ JOB? S/W engineer. ++ DO FOR FUN? Hang around. ++ INNERMOST SECRET? I won't tell. POTM IDEAS? Let me recover from the loss, yet. ================================================================= ============== 111 ====================== my.program ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS my.program 1907706 1038 776 262 107 Fan Xiaobo ================= my.program was submitted by Fan Xiaobo at fxb@csnet1.dcs.tsinghua.edu.cn ================= ++ Please summarize the algorithm used by my.program The first is to acquire the nearest base mileage consisting of six different numbers greater than the start as a candidate. To test its validity, the sole necessity is to see whether this mileage minus the second one, which is the smallest composed of the four left numbers, is no less than the starting point. If so, it is the correct answer. Or, find the next candidate according to the dictionary sequence, and test it. ++ What kind of tricks did my.program use to minimize code length? Besides the usual finesse at the expense of poor readability such as reducing length of variables, seperating characters, and so on, I defined the frequently-used reserved-word as a single letter (i.e. #define U continue, I should have defined "for" as "F" to save 8 characters). ++ Here's what I hated (and loved) about this POTM's scoring: It is challenging to all the participants. But the portion of the source length in the scoring is too large. The better, I think, is to divide the length by a constant in order to reduce its weight and ignore the minor variation. ++ COMPANY? LOCATION? JOB? DO FOR FUN? INNERMOST SECRET? POTM IDEAS? Tsinghua University. Beijing, China. The first-year graduate. Yes. "lprof" and "prof" can be used to optimize the execution time, but it is not so effective due to the source length (at least in my program). No. Maybe in the future. ================================================================= ============== 112 ====================== CCC ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS CCC 1931841 2546 1417 1129 20 Claudio Cabaleiro Sorry ... no description available for CCC ================================================================= ============== 113 ====================== Skys.the.limit ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS Skys.the.limit 1933065 50243 1760 48483 35 Linda Licari Sorry ... no description available for Skys.the.limit ================================================================= ============== 114 ====================== waldacj ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS waldacj 1947116 74506 3658 70848 110 Jesse Waldack ================= waldacj was submitted by Jesse Waldack at waldacj@abu.spanlink.com ================= ++ Please summarize the algorithm used by waldacj I started the program out by starting a loop until the solution was found, incrementing both odometers, and sending it into a check function that looked at the 10 digits, checked for dupes, and if one was found, would decrement the trip and loop until trip was 0. I got the right answer, but it would take about a minute to get the answer on a fast UNIX box. (On the box I developed the program on, I always got times about half of the POTM judge got.) I reduced the time it took by first looking at the 6 digit odometer. If there were duplicate digits in this number, I would not put it in the loop to check the trip. This reduced it to about 5 seconds per number. All of my changes from here on was in the function that tested the first 6 digits. My next change was to modify the odometer so no digits are duped if there currently is a dupe. (That is, If odom=1; trip=1, the test would fail, and the next time the test is made odom=12345; trip=12345. Sense the trip has now looped to past 0000 again; the solution is 12345. All that is needed now is to find the trip needed by using the function to test the trip.) This reduced most cases to less than a second. Only one case out of the 10 test numbers (12345) took several seconds to find the right solution. To help this case, I found out what the lowest number the trip needed to be a possible solution (in odom=12345, the lowest digit in trip must be 6. So I check the first digit in the trip (if trip = 12345, the first "digit" is 12) and make sure that it is larger than the smallest digit found. If the first digit is smaller, even though the first 6 digits are unique, the trip test is not run. I would have found more ways to optimize speed, but time ran out. :) ++ What kind of tricks did waldacj use to minimize code length? I did not worry about code length that much. My code was about 3500 bytes. I worked most on speed reduction sense if I saved 1 second for each odometer in the file, I saved 1000 seconds (16 min 20 seconds) overall. ++ Here's what I hated (and loved) about this POTM's scoring: It would have been nice if your computer you tested from was as fast as the computer I tested from. I clocked my program (with the 100 test numbers) at under a minute. You had about 1:40. ++ COMPANY? LOCATION? JOB? DO FOR FUN? INNERMOST SECRET? POTM IDEAS? I work at Spanlink Communications in Minneapolis, Minnesota. I am currently an intern, but plan to get a full time job when my internship is completed. I am 22, married, and BBS for fun (That is how I met my wife). Feel free to check out my home page at http://www.winternet.com/~llaffer (it is not much, but all I have had time to work on) ================================================================= ============== 115 ====================== NumberAngel ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS NumberAngel 1987198 570 453 117 89 Robert Ang Sorry ... no description available for NumberAngel ================================================================= ============== 116 ====================== OnTheRoadAgain ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS OnTheRoadAgain 2461911 1078 432 646 10 Joe Eccles ================= OnTheRoadAgain was submitted by Joe Eccles at joe@mink.mt.att.com ================= ++ Please summarize the algorithm used by OnTheRoadAgain Keep a map of digits used. Starting mileage is set to the input mileage. Starting with the most significant digit, replace it with the smallest yet unused digit that results in a number greater than or equal to the input number. When all six digits are determined (A), construct the smallest possible number from the four remaining digits (B), and determine the reset mileage (A-B). If the reset milage is between the input mileage and A, output A-B and A. Otherwise, incement the starting mileage and try again. ++ What kind of tricks did OnTheRoadAgain use to minimize code length? Just simple stuff - one character variables, one macro, and squeezing out spaces and new-lines. ++ Here's what I hated (and loved) about this POTM's scoring: Just like working on a real project - the requirements are untestable!! ++ COMPANY? LOCATION? JOB? DO FOR FUN? INNERMOST SECRET? POTM IDEAS? Company: AT&T, Middletown, NJ. Job: Systems architecture. ================================================================= ============== 117 ====================== balaji ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS balaji 2554495 2241 1136 1105 111 Balaji Polimera ================= balaji was submitted by Balaji Polimera at balajip@mink.mt.att.com ================= ++ Please summarize the algorithm used by balaji main() { For each Odometer A reading (aRead), { j = -1; tmpA = aRead - 1. while ( j < 0) { increment tmpA by 1. /* * Function checkA takes an integer tmpA as input * parameter and returns the smallest integer greater * than tmpA, which has the 6 least significant digits * all different. */ tmpA = checkA(tmpA) /* * Function checkB takes two input parameters. * First parameter is tmpA which is the return value * of function checkA, and 2nd parameter aRead is * the Odometer reading worked on. This function * then forms the smallest number, num with the 4 digits * which are not present in the 6 least significant * digits of tmpA. It then returns the value * (tmpA - aRead - num). If the return value is greater than * zero, num will be Odometer B reading when all 10 digits * are different, tmpA's 6 least significant digits will be * Odometer A reading when all 10 digits are different, And j * will be the number of miles to travel before resetting * the Odometer B reading. Otherwise, we need to go thru * this while loop till checkB returns a value > 0. */ j = checkB(tmpA, aRead) if (j is greater than 0) { (aRead + j) gives the Odometer A reading at which Odometer B was reset, and the 6 least significant digits of tmpA give the Odometer A reading when all 10 digits are different. } } /* End of while */ } /* End of for */ } /* End of main */ /* * Function checkA takes an integer as input argument,tmpA and * returns the smallest number greater than tmpA such that 6 * least significant digits of the number are all different. * The positions of the digits are counted with the least * significant digit's position as 0. The function works as * follows: For each digit in positions 5 thru 1 of tmpA, if * there is a matching digit in tmpA in a position less than * this digit's position, change the digit such that the increase * in tmpA will be minimum. Repeat this till 6 least significant * digits of tmpA are all different. */ checkA(tmpA) { /* * Below, positions of the digits are counted assuming * that the least significant digit's position is zero. */ while(NOT(6 least significant digits of tmpA are all different)) { For i in 5 to 1 do { For j in (i-1) to 0 do { if the digit in i'th position equals the digit in j'th position, add power(10, (j-1)) to the number. } } } return(tmpA) } /* * Function checkB takes two input arguments tmpA and aRead. * tmpA is a number returned by checkA and has the 6 least * significant digits all different. aRead is the Odomer * reading (read from input file) working on right now. * This function forms the smallest number, num with the four * digits which are not there in the 6 least significant digits * of tmpA. num is a possible value for the Odometer reading. * checkB then returns (tmpA - aRead - num). */ checkB(tmpA, aRead) { pick up the 4 digits not found in the 6 least significant digits of tmpA in to i1, i2, i3, i4 such that i1 < i2 < i3 < i4. num = 1000*i1 + 100*i2 + 10*i3 + i4. return(tmpA - aRead - num). } /* * A very simple example to illustrate how the above algorithm * works. Suppose the input odometer reading is 663489. * * So aRead = 663489. * * main calls checkA(663489) * * Function checkA will add power(10, 4) = 10000 to 663489 * so that the number will be 673489 and returns 673489. * * Now checkB forms the number 0125 using the 4 digits missing * from 673489. checkB returns (673489 - 663489 - 0125) = 9875. * * The return value of checkB is > 0. * So, Odometer B was reset when A read 663489 + 9875 = 673364. * Odometer A reads 673489 when all 10 digits are different. */ ++ What kind of tricks did balaji use to minimize code length? Nothing much except keeping names of functions and variables short. ++ Here's what I hated (and loved) about this POTM's scoring: I feel the score being used is a good one to resolve the ties. ++ COMPANY? LOCATION? JOB? DO FOR FUN? INNERMOST SECRET? POTM IDEAS? COMPANY : Regal Data systems, NJ (Contactor at AT&T Middletown, NJ). JOB : Software Development. DO FOR FUN : Listen to Music, Watch movies. ================================================================= ============== 118 ====================== Frodo ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS Frodo 6274359 751 471 280 52 Austin Green Sorry ... no description available for Frodo ================================================================= ============== 119 ====================== ODOSNAIL ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS ODOSNAIL 6927761 35454 1226 34228 19 Markus Sabadello Sorry ... no description available for ODOSNAIL ================================================================= ============== 120 ====================== odo ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS odo 999999999 897 655 242 57 Matthew Cross ================= odo was submitted by Michael Cross at mcross@sw.stratus.com ================= ++ Please summarize the algorithm used by odo The main utility function was able to, given a ten-digit string representing the two odometers, find the next smallest 10-digit number in which all digits are unique and the upper six digits are different. It would also handle starting from a point where only some of the high-order digits were filled in; this was used after reading in the initial number. The main loop would read in the number, fill in a ten-digit string with as many unique digits it could from the read in mileage, then call the utility function to get the next unique mileage. It then calculated if the distance to that mileage was greater than or equal to the mileage in the lower four digits; if so, that was the answer - print out the upper six digits minus the lower four digits, then the upper size digits. If not, then loop around to call the utility function again and check the answer. ++ What kind of tricks did odo use to minimize code length? I started writing the code out full length as I normally would and debugging that. Then I would progressively make it smaller testing after each set of changes. I started with the easy changes - eliminate white space and comments, don't include files, make all identifiers only one character. Then I would combine code as much as possible, use for loops rather than while loops, make judicious use of the comma operator and the ?: operator, etc. ++ Here's what I hated (and loved) about this POTM's scoring: I enjoy the challenge of misusing C to make the source code as small as possible. I also enjoyed that getting the problem right was mostly straightforward (even though mine didn't work in the end), forcing the emphasis to be on code size and speed. I would rather see the emphasis on speed than on source code size, but it is interesting trying to balance the two. At the same time I find it annoying that being able to make compact code is necessary and I find it difficult to work that way. I would rather see something like a token counter or a whitespace eliminator to count the size, rather than using the raw byte size of the source. It was frustrating not knowing other people's raw scores, only a relative ranking. ++ COMPANY? LOCATION? JOB? DO FOR FUN? INNERMOST SECRET? POTM IDEAS? I work for Stratus Computer, as a software engineer on our proprietary operating system, VOS. For fun, I build small robots (ok, I've only built one so far, and it didn't really work), and other mundane things. I would like to see a competitive POTM, where programs compete against one another directly. Something simple, like checkers, dots-and-lines, or 3D tic-tac-toe. -- Matthew E. Cross E-Mail: mcross@sw.stratus.com Software Engineer Phone: 508-460-2926 Stratus Computer, Inc. Fax: 508-460-0397 ================================================================= ============== 121 ====================== AreWeThereYet ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS AreWeThereYet 999999999 924 395 529 96 Steven Burnap ================= AreWeThereYet was submitted by Steven Burnap at sburnap@wsgc.com ================= ++ Please summarize the algorithm used by AreWeThereYet 1) Start with the current odometer reading. 2) Find the next odometer reading that is "legal" (i.e. has unique digits). 3) Using the remaining digits, find the lowest combination for the tripmeter. 4) Repeat steps 2 and 3 until the tripmeter is less than the difference between the current odometer reading and the written one. 5) Output. Details: 1) Add '123' to the odometer reading (as this is the minimum tripmeter) or '1234' if the first digit of the odometer is '0'. 2) Start with the second digit. For each digit, if there is a prior digit that is the same, increment it and clear the rest of the odometer to all zeros. If this is greater than '9', set to zero, back up one digit and increment that one. Repeat until the last digit is reached. 3) Start at zero. Set each digit in the tripmeter sequentially when an unused digit is found. ++ What kind of tricks did AreWeThereYet use to minimize code length? Reusing variables extensively (including reusing that arguments to 'main' for other purposes. Declaring most things 'int' regardless of wether they were 'char', 'FILE *' or 'int'. Not including 'stdio.h' and fudging on parameters. On long macro for a twice repeated block of code. There are also a lot of syntax tricks: When defining a macro with an argument, you don't need a space between the macro name and definition. The only part of the syntax that requires whitespace is the middle of the declaration. I tried to arrange declarations so that I could use a carriage return (which I was required to use anyway) instead of a space. I used array math when possible (i.e. I used *O and O+1 instead of O[0] and &O[1]) I used ?-: blocks instead of if-thens when possible. If two mathematical expressions (including '?-:' blocks) appeared one after another, I used a ',' instead of a ';' to separate them. This made the two lines one statement so that I could often remove the surrounding curly-braces. ++ Here's what I hated (and loved) about this POTM's scoring: Since the test file was significantly different in length from the final final it was really difficult to determine how well I was doing. The scoring for the test favored code size vs. speed more than the final file will (if it is indeed 10 times as large). The constraints seemed a little artificial. It might have been more interesting if it had been object code size and not source code size that had been used for scoring. Knowing my rank, but not the scores that caused it, made it interesting. ++ COMPANY? LOCATION? JOB? DO FOR FUN? INNERMOST SECRET? POTM IDEAS? I work for Williams-Sonoma as a contract Point of Sale programmer in San Francisco. I read and wonder around the Bay Area with my wife for fun, as well as hacking at the computer (and my innermost secret is that this hacking too often involves nonconstructive (i.e. computer game) activities. Steven Burnap Williams-Sonoma sburnap@wsgc.com (415) 616-8405 (510) 942-0376 ================================================================= ============== 122 ====================== Crazy_Odos ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS Crazy_Odos 999999999 1769 1385 384 123 Wim Decroix Sorry ... no description available for Crazy_Odos ================================================================= ============== 123 ====================== bcrosby ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS bcrosby 999999999 1880 1880 0 79 Brandon Crosby Sorry ... no description available for bcrosby ================================================================= ============== 124 ====================== POSSIBLE ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS POSSIBLE 999999999 2257 395 1862 72 Gerry Scheetz ================= POSSIBLE was submitted by Gerry Scheetz at prof@mt.net ================= ++ Please summarize the algorithm used by POSSIBLE I had a linked list (used an array) that contained the number 0 through 9. From this I calculated out all the possible variations for the odometers. Then for each odometer reading I figured where the reset value was and if it was after the last odometer reading I stored it in an array. I then read through the file and did a search on my array looking for the appropriate answer. ++ What kind of tricks did POSSIBLE use to minimize code length? My original linked list way dynamic, I used an array. In many places where I would normally use a while loop I used a for loop. Used C++ streams for I/0 instead of C standard I/O routines. ++ Here's what I hated (and loved) about this POTM's scoring: Love/hate relationship with the scoring system. I code on a Pentium 90 running Win95. So it was tough to figure out what my score might be if when ran on the test system. ++ COMPANY? LOCATION? JOB? DO FOR FUN? INNERMOST SECRET? POTM IDEAS? BDM Technologies in Helena, MT. Systems Programmer working on a contract for the State of Montana's Department of Public Health and Human services. Play basketball for fun. ================================================================= ============== 125 ====================== tclau ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS tclau 999999999 2396 2385 11 69 Claudiu Tatar Sorry ... no description available for tclau ================================================================= ============== 126 ====================== indy499 ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS indy499 999999999 7737 7322 415 115 Ram Ramachandran Sorry ... no description available for indy499 ================================================================= ============== 127 ====================== SimplyMinded ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS SimplyMinded 999999999 181146 1001 180145 36 Jason Grosland ================= SimplyMinded was submitted by Jason Grosland at jcg3@acpub.duke.edu ================= ++ Please summarize the algorithm used by SimplyMinded My program first found a 6 digit unique number (no digits alike) that was greater than the starting number. It then found the first 10 digit unique number by counting up on a 4 digit number, then checked to see if this new number was withing program specifications. ++ What kind of tricks did SimplyMinded use to minimize code length? I tired to use a nested for loop and divisors to make finding a unique number easier, but apparently this confused things as I didn't come up with a correct total. ++ Here's what I hated (and loved) about this POTM's scoring: Scoring was fine, it would've been nice to get running times for the programs, but there is only so mucha POTM master can do, eh? ++ COMPANY? LOCATION? JOB? DO FOR FUN? INNERMOST SECRET? POTM IDEAS? Currently a second year undergraduate majoring in Computer Science at Duke, and hope to one day change the world... Jason Grosland jcg3@acpub.duke.edu www.duke.edu/~jcg3/resume.html ================================================================= ============== 128 ====================== steer ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS steer 999999999 181714 1585 180129 76 Mark Studebaker ================= steer was submitted by Mark Studebaker at mds@pdn.paradyne.com ================= ++ Please summarize the algorithm used by steer Brute force search; store solutions in table so that duplicates are solved really fast. ++ What kind of tricks did steer use to minimize code length? Just squish all variable names to one character. ++ Here's what I hated (and loved) about this POTM's scoring: Hate the code length restriction and scoring. ++ COMPANY? LOCATION? JOB? DO FOR FUN? INNERMOST SECRET? POTM IDEAS? Paradyne (ex-AT&T!) Largo, FL - MTS Hardware Engineer ================================================================= ============== 129 ====================== FastCounter ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS FastCounter 999999999 182342 2004 180338 60 Jonathan Nicolas Sorry ... no description available for FastCounter ================================================================= ============== 130 ====================== ResetEntry1 ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS ResetEntry1 999999999 183579 2390 181189 68 Guy Oliver Sorry ... no description available for ResetEntry1 ================================================================= ============== 131 ====================== Giraffe96 ============= ================================================================= ENTRY SCORE1 SCORE2 = CHARS+HSEC AGE PROGRAMMERS Giraffe96 999999999 184323 3141 181182 17 Gopalan Balaji Sorry ... no description available for Giraffe96 =================================================================