As pessoas continuam me dizendo que o quadrado de um número é o número multiplicado por ele mesmo. Isto é obviamente falso. A maneira correta de colocar um número ao quadrado é transformá-lo em um quadrado, empilhando-o em cima de si várias vezes igual ao número de dígitos que possui e, em seguida, lendo todos os números do quadrado resultante, ambos horizontalmente (de somente da esquerda para a direita) e verticalmente (somente de cima para baixo) e, em seguida, adicionando-os. Portanto, para o número 123, você primeiro cria o quadrado:
123
123
123
Em seguida, você pega todas as linhas e colunas do quadrado e as adiciona:
123+123+123+111+222+333
O que nos dá um resultado de 1035
.
Para números negativos, você empilha normalmente (lembre-se de contar apenas o número de dígitos , para que o sinal negativo não seja incluído no comprimento) e, em seguida, leia os números horizontais normalmente (com sinais negativos) e ignore os sinais negativos para os números verticais. Então, para o número -144
, obtemos o quadrado:
-144
-144
-144
O que nos dá -144-144-144+111+444+444
, que é igual a567
Para números com apenas um dígito, o quadrado é sempre igual ao número dobrado (leia uma vez na horizontal e outra na vertical). Então 4
nos dá
4
O que nos dá 4+4
, o que é igual 8
.
Para números com partes decimais, empilhe normalmente (lembre-se de que apenas os dígitos são contados no número de vezes que você empilha o número e, portanto, o ponto decimal não é contado) e ignore os símbolos decimais ao ler os números verticais. Por exemplo, o número 244.2
nos dá
244.2
244.2
244.2
244.2
O que nos dá 244.2+244.2+244.2+244.2+2222+4444+4444+2222
, o que é igual 14308.8
.
Números fracionários ou complexos não podem ser elevados ao quadrado.
Sua tarefa:
Estou cansado de quadrilhar números do meu jeito com a mão, então decidi automatizar o processo. Escreva-me um programa ou função que pegue um float ou string, conforme sua preferência, como entrada e retorne o resultado de quadrá-lo do meu jeito.
Exemplos:
123 -> 1035
388 -> 3273
9999 -> 79992
0 -> 0
8 -> 16
-6 -> 0
-25 -> 27
-144 -> 567
123.45 -> 167282.25
244.2 -> 14308.8
2 -> 4
-0.45 -> 997.65
0.45 -> 1000.35
Pontuação:
Minhas mãos estão ficando apertadas de escrever todos esses quadrados, e meu computador não suporta copiar / colar, então a entrada com a menor quantidade de código para eu digitar (medida em bytes por algum motivo?) Vence!
244.2
não é um número flutuante. Não pode ser convertido para a sequência "244.2"
.