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

Home > Algorithms
Base Conversion Conclusion (Posted on 2014-07-04) Difficulty: 3 of 5
Devise an algorithm to determine the direct conversion of a positive integer from base A to base B, without going through base 10.

No Solution Yet Submitted by K Sengupta    
No Rating

Comments: ( Back to comment list | You must be logged in to post comments.)
Thoughts Comment 1 of 1
First thoughts:
If B=10 it is of course easy, but why?  Because we think and do arithmetic in base 10.  So I think our algorithm needs the ability to "think" and do arithmetic in any base.
Also I believe the input in base A, call it "a", probably has to be read in as a string.  Not doing so would disallow bases greater than 10, plus I think just storing it as a number would be storing the base 10 version of the same sequence of digits.
But the bases A and B presumably need to be in base 10 or we would not know what bases are intended.  Any number in its own base just looks like "10".

Construct functions that do basic integer math operations in any base, such as:
Add(n,m,base) which takes strings "n" and "m" and manipulates them according to the rules of addition in base "base" and then outputs a string representation of the result in that same base.

Similarly for Subtract, Multiply, Divide, Power etc.
Also:  Increment(n,base) and Decrement(n,base).

We probably need a string array where the elements are the string version of the various digits:  "0,1,2,3,4,5,6,7,8,9,A,B,C,D, ..." etc.

I would prefer an algorithm that takes the sequence of digits, "a" and the bases A and B, marches through one digit at a time and converts to the new base on the fly, but I have not been able to solve that.

But the following pseudo code should get the answer, assuming the functions work
Input:  a   ; as string
Input:  A, B   ; as base 10 integers
Start_value_a = a
b = 0
Loop
{
    IF(a=0)
        break
    Decrement(a,A)
    Increment(b,B)
}
Print "Initial value " Start_value_a " in base " A "  has been converted to " b " in base " B
Exit
  Posted by Larry on 2014-07-07 11:33:46
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 (2)
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