Many times when you wish to bash a problem with 'programming-bash', changing base of a number is needed. Of course we can use wolfram, but it'll get irritating if there are too many numbers.
So here, Python comes to our help!
I've written this program in Python 2.7, for getting a decimal number in some other base...
(cb stands for change_base )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
frommathimportlogdefcb(n,m):"""Returns decimal integer n in base m"""ifm<1orm>36orint(m)!=m:return0ifm==1:return'1'*nk=''y=int(log(n,m))whilenoty<0:p=n/m**yifp<10:k+=str(p)ifp>=10:letters=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']k+=letters[p-10]n=n-p*m**yy-=1returnk
This works for bases 1 to 36.
First I had written that using the while loop for n, got pretty bad...
It left zeroes that come in between, and also I couldn't efficiently assign Alphabets to digits greater than 9.
But now, I've made it shorter and efficient with the while loop for y.
Here's the program for the other way, changing a number from other way, into decimal!
1
2
3
4
5
6
7
8
9
10
11
12
defbasedecode(string,m):"""Input string in base m, outpt decimal equivalent!"""k=list(string.upper())p=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']whileany(iinkforiinp)isTrue:foriinp:ifiink:k[k.index(i)]=str(p.index(i)+10)u=0foriinxrange(len(k)):u+=int(k[i])*m**(len(k)-i-1)returnu
I want to know if there are any improvements that you can spot, thanks!
This discussion board is a place to discuss our Daily Challenges and the math and science
related to those challenges. Explanations are more than just a solution — they should
explain the steps and thinking strategies that you used to obtain the solution. Comments
should further the discussion of math and science.
When posting on Brilliant:
Use the emojis to react to an explanation, whether you're congratulating a job well done , or just really confused .
Ask specific questions about the challenge or the steps in somebody's explanation. Well-posed questions can add a lot to the discussion, but posting "I don't understand!" doesn't help anyone.
Try to contribute something new to the discussion, whether it is an extension, generalization or other idea related to the challenge.
Stay on topic — we're all here to learn more about math and science, not to hear about your favorite get-rich-quick scheme or current world events.
Markdown
Appears as
*italics* or _italics_
italics
**bold** or __bold__
bold
- bulleted - list
bulleted
list
1. numbered 2. list
numbered
list
Note: you must add a full line of space before and after lists for them to show up correctly
# I indented these lines
# 4 spaces, and now they show
# up as a code block.
print "hello world"
# I indented these lines
# 4 spaces, and now they show
# up as a code block.
print "hello world"
Math
Appears as
Remember to wrap math in \( ... \) or \[ ... \] to ensure proper formatting.
2 \times 3
2×3
2^{34}
234
a_{i-1}
ai−1
\frac{2}{3}
32
\sqrt{2}
2
\sum_{i=1}^3
∑i=13
\sin \theta
sinθ
\boxed{123}
123
Comments
@Aditya Raut Can you please give me some further sources than Codecademy. I guess you also learnt from there at first. But I want to know if there is any "advanced" source like CA. The course at CA is quite limited.
@Aditya Kumar
–
Well thats now worth a LOL, I am neither bio student nor cs student! officially , I've taken 'Electronics' as a subject for my 12th std board exam...
Easy Math Editor
This discussion board is a place to discuss our Daily Challenges and the math and science related to those challenges. Explanations are more than just a solution — they should explain the steps and thinking strategies that you used to obtain the solution. Comments should further the discussion of math and science.
When posting on Brilliant:
*italics*
or_italics_
**bold**
or__bold__
paragraph 1
paragraph 2
[example link](https://brilliant.org)
> This is a quote
\(
...\)
or\[
...\]
to ensure proper formatting.2 \times 3
2^{34}
a_{i-1}
\frac{2}{3}
\sqrt{2}
\sum_{i=1}^3
\sin \theta
\boxed{123}
Comments
@Aditya Raut Can you please give me some further sources than Codecademy. I guess you also learnt from there at first. But I want to know if there is any "advanced" source like CA. The course at CA is quite limited.
Log in to reply
I didn't learn from codeacademy, I learnt from 1-2 books and mainly, experimenting...
Log in to reply
@Aditya Raut r u a bio student or a cs student. u once posted about a cockroach.
Log in to reply
Log in to reply
That is great. Experimenting is the best way to learn. Especially in programming. I learn programming the same way.
@Brock Brown @Agnishom Chattopadhyay @Pranjal Jain @Raghav Vaidyanathan
There is a typo in cb(n,m) line 7. It should be
return '1'*n
The standard way to convert a string in base b to an integer is
int(string,b)
,by the wayLog in to reply
What is just happening!
So all I did was nothing but an exercise of no real use, just use
int(str,b)
..... Why does this keep happening with me!Thank you btw, for telling this amazing shortcut, where'd you learn that?
Log in to reply
I don't exactly remember but I guess stackoverflow.
An excellent article, I hope that you will read mine that I publish on https://freebooksummary.com/how-does-shakespeare-portray-macbeths-guilt-in-act-2-scene-2-20802 this educational platform where students from all over the world can find a lot of useful information.
Aditya, what's' your rank in JEE advanced?
Why don't you check your mail.
Log in to reply
he's in 12th now