Hackerrank - String Formatting Solution

Given an integer, , print the following values for each integer  from  to :

1. Decimal
2. Octal
4. 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)