El objetivo es calcular todos los cuadrados hasta xcon suma y resta.
Reglas:
- El código debe ser una función que tome el número total de cuadrados para generar y devuelva una matriz que contenga todos esos cuadrados.
- Puede no utilizar cadenas, estructuras, multiplicación, división, o funciones integradas para calcular cuadrados.
- Solo puede usar matrices, enteros (números enteros), suma, resta. ¡No se permiten otros operadores!
Esta es una pregunta de código de golf , por lo que gana el código más corto en bytes.

Respuestas:
APL - 10
Ejemplo de uso:
ngn APL demo
fuente
+\1+⍳+⍳C,
5552 bytessimplemente suma números impares
n: número de cuadrados para calcularr: matriz de salida para almacenar los resultadosj: toma los valores sucesivos 1, 3, 5, 7, ...i: se incrementajen cada iteraciónEditar
Se pueden guardar 4 caracteres utilizando la declaración int implícita (> C99), pero esto cuesta 1 carácter porque los
forinicializadores no pueden contener una declaración en> C99. Entonces el código se convierteUso
Salida
fuente
GolfScript, 17 caracteres
Uso (ver también ejemplos en línea ):
Nota:
*es un bucle y no el operador de multiplicación.fuente
,toma la entrada y la convierte a la matriz[0 1 ... n-1]. Luego*inyecta el bloque de código dado en la matriz. Este bloque primero duplica el elemento actual (.+) resta uno (() y luego agrega el resultado anterior1$+(en otras palabras, suma2j-1al número cuadrado anterior).[]encierra todo para devolver una nueva matriz.Lote de Windows, 115 bytes
Esto debe colocarse en un archivo por lotes en lugar de ejecutarse desde cmd, y genera la lista en la consola. Se necesita el número de cuadrados para crear desde el primer argumento de línea de comandos.
&Sin embargo, en su mayor parte utiliza en lugar de líneas nuevas, todavía se necesita una y cuenta como dos bytes.Necesita expansión variable retardada habilitada, esto se puede hacer con
cmd /v:on. Asumiendo que no es así,setlocal enabledelayedexpansion&se necesitaba un extra al inicio (sin él, el script tiene 83 bytes).fuente
Haskell - 30
Esto usa el hecho de que
(n+1)^2=n^2+2n+1fuente
Perl, 27 bytes
Matemáticas:
Script para llamar a la función para imprimir 10 cuadrados:
Resultado:
Ediciones:
popen lugar deshift(−2 bytes, gracias skibiranski )fuente
JavaScript: 32 caracteres
Asume que
xexiste una variable y crea una matrizade cuadrados para los valores1..x.ECMAScript 6 - 27 caracteres
Las llamadas
f(x)llenarán la matrizbcon los cuadrados para los valores0..x.fuente
i+++ial final ...?k+=i+++ies lo mismok += i + (++i)que lok+=i+i+1seguido pori=i+1b=[f=i=>b[i]=i&&i+--i+f(i)]. Ej .).Julia - 33
Cualquier número cuadrado se puede escribir mediante una suma de números impares:
fuente
C ++
9981788078mi primer intento en code-golf
este código se basa en
un xn = 2 - 1
, donde n es el recuento plazo y una es n º plazo en la siguiente serie
1, 3, 5, 9, 11, 13, .....
suma de 2 primeros términos = 2 al cuadrado
suma de los primeros 3 términos = 3 al cuadrado
y así sucesivamente ...
fuente
{}después delforciclo, ya que solo hay una declaración. Esto puede reducir el recuento de carbón por 2addition, subtraction, solo estoy usando esosConjunto DCPU-16 (90 bytes)
Escribí esto en ensamblado para un procesador ficticio, porque ¿por qué no?
Se espera que el número esté en el registro X, y se espera que otros registros sean 0. Los resultados se envían a la pila, se romperá una vez que llegue a 65535 debido a la arquitectura de 16 bits. Es posible que desee agregar un
SUB PC, 1al final para probarlo. Compilado, el programa debe tener 20 bytes (10 palabras).fuente
Haskell
Básicamente, esto inventa la multiplicación, la usa y la mapea sobre todos los números.
f 10=[0,1,4,9,16,25,36,49,64,81]. Tambiénf 91=[0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,484,529,576,625,676,729,784,841,900,961,1024,1089,1156,1225,1296,1369,1444,1521,1600,1681,1764,1849,1936,2025,2116,2209,2304,2401,2500,2601,2704,2809,2916,3025,3136,3249,3364,3481,3600,3721,3844,3969,4096,4225,4356,4489,4624,4761,4900,5041,5184,5329,5476,5625,5776,5929,6084,6241,6400,6561,6724,6889,7056,7225,7396,7569,7744,7921,8100].fuente
Haskell, 34/23
o, si las importaciones están bien:
Salida:
fuente
Javascript 47
function f(n,a){return a[n]=n?f(n-1,a)+n+n-1:0}r=[];f(12,r);console.log(r)devoluciones :[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144]fuente
f=(n,a)=>a[n]=n?f(n-1,a)+n+n-1:0.Smalltalk, 52
Devuelve una nueva matriz (es decir, no se llena o agrega a una existente).
llamada:
valor f: 10
-> # (1 4 9 16 25 36 49 64 81100)
fuente
pitón - 39
Reemplazar
5con cualquier valor. ¿Alguna sugerencia?fuente
Bash -
928562615957Resultado:
Editar: Reemplacé el bucle interno con el algoritmo de la solución Haskell de @ mniip.
fuente
Mismo método que el anterior, en APL y J:
APL:
F←{+\1+V+V←¯1+⍳⍵}(17 caracteres) funciona con la mayoría de las variantes de APL (pruébelo aquí )e incluso menos (solo 14 caracteres) con NGN APL:
F←{+\1+V+V←⍳⍵}(ver aquí )J:
f=:+/\@(>:@+:@:i.)(18 caracteres)editar: mejor solución en APL:
F←{+\¯1+V+V←⍳⍵}(15 caracteres)fuente
C # (82)
fuente
C # - 93
Cuando se llama desde otro método de la misma clase, devolverá la matriz -
[1,4,9,16,25,36...], hasta ellelemento th.fuente
int[]ysq? No sé C #, pero creo que debería funcionar.int[]sqlugar deint[] sqy enint[]reslugar deint[] res. Esto te ayuda a guardar dos caracteres, y no obtuve ningún error de compilación con eso. También debe usar identificadores de un solo carácter parasqyrescomo sugirió.Fortran II | IV | 66 | 77,
134122109105Editar: eliminó el bucle interno y usó el algoritmo Haskell de @mniip en su lugar.
Editar: Verificado que la subrutina y el controlador son válidos Fortran II y IV
Conductor:
Resultado:
fuente
Python - 51
Aquí estoy definiendo una función según lo solicitado por las reglas.
Uso
sumde números impares:Esto solo usa
sum(un builtin que realiza la suma) yrange(un builtin que crea matrices usando la suma). Si se oponesum, podemos hacer esto conreduce:fuente
PHP, 92 bytes
Esto debe tener habilitada la opción "etiquetas cortas", por supuesto (para eliminar 3 bytes al inicio).
Salida:
fuente
Adelante - 48 bytes
Uso:
Salida:
fuente