Hackerrank - String Formatting Solution
Given an integer, , print the following values for each integer from to :
- Decimal
- Octal
- Hexadecimal (capitalized)
- Binary
The four values must be printed on a single line in the order specified above for each from to . Each value should be space-padded to match the width of the binary value of .
Input Format
A single integer denoting .
Constraints
- 1<=n<=99
Output Format
Print lines where each line (in the range ) contains the respective decimal, octal, capitalized hexadecimal, and binary values of . Each printed value must be formatted to the width of the binary value of .
Sample Input
17
Sample Output
1 1 1 1
2 2 2 10
3 3 3 11
4 4 4 100
5 5 5 101
6 6 6 110
7 7 7 111
8 10 8 1000
9 11 9 1001
10 12 A 1010
11 13 B 1011
12 14 C 1100
13 15 D 1101
14 16 E 1110
15 17 F 1111
16 20 10 10000
17 21 11 10001
Solution in Python
def print_formatted(n):o
binn = bin(n).replace("0b","")
for i in range(1,n+1):
deci = str(i)
deci = (len(binn)-len(deci))*" "+deci
octa = oct(i).replace("0o","")
octa = (len(binn)-len(octa))*" "+octa
hexi = hex(i).replace("0x","").upper()
hexi = (len(binn)-len(hexi))*" "+hexi
bina = bin(i).replace("0b","")
bina = (len(binn)-len(bina))*" "+bina
print(deci,octa,hexi,bina)
if __name__ == '__main__':
n = int(input())
print_formatted(n)