All about flooble | fun stuff | Get a free chatterbox | Free JavaScript | Avatars    
perplexus dot info

Home > Just Math
A skilfull erasure (Posted on 2011-06-27) Difficulty: 3 of 5
37383940...9394 is a concatenation of all integers from 37 to 94.
From this 116-digit number you are requested to erase 77 digits to leave the biggest number possible.
Please provide both the result and the reasoning to get it.

No Solution Yet Submitted by Ady TZIDON    
No Rating

Comments: ( Back to comment list | You must be logged in to post comments.)
Solution computer assisted solution | Comment 1 of 2

CLS
FOR i = 37 TO 94
  s$ = s$ + LTRIM$(STR$(i))
NEXT
PRINT s$, LEN(s$)
PRINT : PRINT

s1$ = s$
startPos = 1
goalLen = LEN(s$) - 77
DO
  FOR i = 9 TO 1 STEP -1
    c$ = LTRIM$(STR$(i))
    ix = INSTR(MID$(s1$, startPos), c$)
    IF ix > 0 THEN
      chars = startPos - 1 + LEN(MID$(s1$, startPos)) - (ix - 1)
      IF chars >= goalLen THEN
        expunge$ = MID$(s1$, startPos, ix - 1)
        s1$ = LEFT$(s1$, startPos - 1) + MID$(s1$, startPos + LEN(expunge$))
        PRINT "erase "; expunge$, "leaving "; s1$: PRINT
        startPos = startPos + 1
        EXIT FOR
      END IF
    END IF
  NEXT
LOOP UNTIL LEN(s1$) = goalLen
PRINT s1$

The goal of the program is to retain one more character at a time by erasing up to the highest possible digit so long as that digit is not so far away as to exceed the specified number of erasures.


erase 37383   leaving
94041424344454647484950515253545556575859606162636465666768697071727374757677787
9808182838485868788899091929394

erase 4041424344454647484   leaving
99505152535455565758596061626364656667686970717273747576777879808182838485868788
899091929394

erase 5051525354555657585   leaving
9996061626364656667686970717273747576777879808182838485868788899091929394

erase 6061626364656667686   leaving
999970717273747576777879808182838485868788899091929394

erase         leaving 999970717273747576777879808182838485868788899091929394

erase 0       leaving 99997717273747576777879808182838485868788899091929394

erase 17273747576777        leaving 999977879808182838485868788899091929394

999977879808182838485868788899091929394 is the remaining number.

The only quizzical line being the one that erases nothing, as the next digit, 7 of the number 70, remains in place as any 8's or 9's are too far away to leave enough digits (i.e., we'd have to erase too many).

So at the end of each phase, we have left (built) 9, then 99, 999,9999, 99997, 999977, 9999778...., at which point the erasures have added up to the requisite 77 characters.


  Posted by Charlie on 2011-06-27 16:37:01
Please log in:
Login:
Password:
Remember me:
Sign up! | Forgot password


Search:
Search body:
Forums (0)
Newest Problems
Random Problem
FAQ | About This Site
Site Statistics
New Comments (0)
Unsolved Problems
Top Rated Problems
This month's top
Most Commented On

Chatterbox:
Copyright © 2002 - 2024 by Animus Pactum Consulting. All rights reserved. Privacy Information