@@ -0,0 +1,1910 @@
+from collections import Counter%0Afrom collections import deque%0A%0Adef soma_quadrados(n):        %0A    test=0%0A    aux=n%0A    res = %7B0:%5B0%5D, 1:%5B1%5D%7D%0A    if n%3E=0 and n%3C=1:%0A        return res%5Bn%5D%0A    else:%0A        quad=%5B%5D%0A        test=2%0A        while test%3C=aux:%0A            n=test%0A            for q in range(1,n+1):%0A                if q**2%3C=n and q**2 not in quad:%0A                    quad.append(q**2)%0A            if n%3E11:%0A                quad.pop()%0A            entr=n%0A            hel=%5B%5D%0A            k=n%0A            while n not in res.keys() and n!=0:%0A                if quad and n not in quad:%0A                    while k%3E=n and quad and k!=n-k:%0A                        k=quad.pop()%0A                hel.append(k)%0A                n=n-k                %0A            test=test+1%0A            if n==0:%0A                res%5Bentr%5D=hel%0A            else:%0A                res%5Bentr%5D=hel.__add__(res%5Bn%5D)%0A    return res%5Bentr%5D%0A%0A%0Aimport unittest%0A%0A%0Aclass SomaQuadradosPerfeitosTestes(unittest.TestCase):%0A    def teste_0(self):%0A        self.assert_possui_mesmo_elementos(%5B0%5D, soma_quadrados(0))%0A%0A    def teste_1(self):%0A        self.assert_possui_mesmo_elementos(%5B1%5D, soma_quadrados(1))%0A%0A    def teste_2(self):%0A        self.assert_possui_mesmo_elementos(%5B1, 1%5D, soma_quadrados(2))%0A%0A    def teste_3(self):%0A        self.assert_possui_mesmo_elementos(%5B1, 1, 1%5D, soma_quadrados(3))%0A%0A    def teste_4(self):%0A        self.assert_possui_mesmo_elementos(%5B4%5D, soma_quadrados(4))%0A%0A    def teste_5(self):%0A        self.assert_possui_mesmo_elementos(%5B4, 1%5D, soma_quadrados(5))%0A%0A    def teste_11(self):%0A        self.assert_possui_mesmo_elementos(%5B9, 1, 1%5D, soma_quadrados(11))%0A%0A    def teste_12(self):%0A        self.assert_possui_mesmo_elementos(%5B4, 4, 4%5D, soma_quadrados(12))%0A%0A    def assert_possui_mesmo_elementos(self, esperado, resultado):%0A        self.assertEqual(Counter(esperado), Counter(resultado))%0A%0Aif __name__ == '__main__':%0A    unittest.main()%0A

Create soma_quadrados.py