DEV Community

Discussion on: Daily Challenge #14 - Square into Squares

Collapse
 
matrossuch profile image
Mat-R-Such

Python solution:

def decompose(n):
    if n == 0:
        return -1
    elif n == 1:
        return [1]

    array_power=[pow(i,2) for i in range(1,n)]          #array with powers [1^2,2^2,3^2...,(n-1)^2]
    array_power=array_power[::-1]
    array_help,power,i,j=[],pow(n,2),0,n-1              # power= n^2, i=element(array), j= base of the power

    while power > 0:
        if power >= array_power[i]:
            power-=array_power[i]
            array_help.append(j)
        i+=1
        j-=1
        if i == n-1 and power > 0:
            return [n]
    return array_help[::-1]


print(decompose(1)) 
Enter fullscreen mode Exit fullscreen mode
Collapse
 
yagnesh_raja profile image
YAGNESH RAJA

Once try for 50 You should get[1,3,5,8,49],