DEV Community

dev.to staff
dev.to staff

Posted on

Daily Challenge #161 - Square into Squares

Task

Given a positive integral number n, return a strictly increasing sequence (list/array/string depending on the language) of numbers, so that the sum of the squares is equal to .

If there are multiple solutions (and there will be), return as far as possible the result with the largest possible values:

Examples

decompose(11) must return [1,2,4,10].

Note that there are actually two ways to decompose:

11², 11² = 121 = 1 + 4 + 16 + 100 = 1² + 2² + 4² + 10² but don't return [2,6,9], since 9 is smaller than 10.

For decompose(50) don't return [1, 1, 4, 9, 49] but [1, 3, 5, 8, 49] since [1, 1, 4, 9, 49] doesn't form a strictly increasing sequence.

Note

Neither [n] nor [1,1,1,…,1] are valid solutions. If no valid solution exists, return nil, null, Nothing, None (depending on the language) or [] (C) ,{} (C++), [] (Swift, Go).

The function "decompose" will take a positive integer n and return the decomposition of N = n² as:

  • [x1 ... xk] or
  • "x1 ... xk" or
  • Just [x1 ... xk] or
  • Some [x1 ... xk] or
  • {x1 ... xk} or
  • "[x1,x2, ... ,xk]"

depending on the language (see "Sample tests")

Note for Bash

decompose 50 returns "1,3,5,8,49"
`decompose 4 returns "Nothing"

Hint
Very often xk will be n-1.


This challenge comes from g964 on CodeWars. Thank you to CodeWars, who has licensed redistribution of this challenge under the 2-Clause BSD License!

Want to propose a challenge idea for a future post? Email yo+challenge@dev.to with your suggestions!

Top comments (1)

Collapse
 
avni999 profile image
Avni999

I am like to getting fortnitefree skins game forever see it.