El rompecabezas
Debe escribir un programa o función p (n) que devuelva el cuadrado de lo que se ingresó y puede suponer que la entrada es un número entero no negativo. En términos más simples, devuelve n 2 .
Reglas
- No está permitido usar
*
o/
(o cualquier otro operador de energía o de raíz cuadrada, comoPOW
oSQRT
, si su idioma contiene tales funciones) - No puede usar un bucle, o usar construcciones que sean similares a un bucle. Ejemplo de bucle como construcciones son
GOTO
y recursividad.
Ejemplo
Function p(n)
Dim r()
ReDim r(n)
p = Len(Join(r, Space(n)))
End Function
Sea creativo y (ab) use las funciones y características que le da su idioma de elección.
*editar
Las estructuras tipo bucle son bucles que le permiten repetir 1 o más instrucciones.
-si pudieras agregar un stdout "1"
código a tu código y terminarías repitiendo esa salida n veces, contará como un bucle
m*n
lugar den*n
usar el*
. Ver codegolf.stackexchange.com/a/18283/14485Respuestas:
CJam, se pone sus lentes
Entrada a través de STDIN
Prueba el código aquí
Tenga
*
en cuenta que en el código no se usa como multiplicador, sino como operador de uniónTambién tenga en cuenta que la parte interesante del código no es solo una cadena, sino que la mitad es el código involucrado en la búsqueda del cuadrado. Entonces ... TRATE CON ÉL
Esto te ayudará a lidiar con esto:
fuente
Rubí
fuente
FromDigits[{1, 0, 0}, Input[]]
. Lo mismo en CJam:4Ybl~b
APL? ∊⍵⍵
Esta respuesta está dedicada a todas aquellas personas que dicen "∊⍵⍵" cada vez que ven los símbolos APL :-)
Ejemplos
Explicación
fuente
+/
en otros idiomas se llamasum()
y veo muchas respuestas usándolo. Por el mismo razonamiento que no podrías usar*
en CJam.Abusar de algunas funciones en Mathematica
El doble del área de un triángulo rectángulo isósceles
El área de un cuadrado. ¡Por supuesto!
La misma idea, en una forma diferente:
El número de elementos en una matriz cuadrada:
o
o
o
etc ...
fuente
k[n_] := Integrate[n, {x, 0, n}]
:?Integrate
muy agradable pero itera, lo que creo que es una forma de bucle.Area
y los amigos son la multiplicación implícita (pero también permitió)C
Nota:
int
se utiliza para reducir el recuento de caracteres y para los puntos de estilo.fuente
Mathematica
Otra respuesta usando algunas características divertidas de Mathematica
Un gráfico completo con
n
vértices tienebinom(n,2) = n(n-1)/2
aristas (que también es el enésimo número triangular). Entonces, el resultado es simplemente el doble, más la entrada.fuente
Python 2
Puramente matemático, evitando cualquiera de las operaciones prohibidas:
Este es el
exp(ln(x)*y)
truco habitual adaptado a este problema:ln(x)+ln(x)
para deshacernos de la multiplicación.math.exp()
era un poco demasiado cerca de la prohibida "POW" por el juego limpio, así que en vez todo el asunto se convierte en compleja y la identidad de Euler se utiliza para reemplazar elexp()
concos()
ysin()
i
se necesita multiplicación / división explícita por ,complex()
se utiliza la función en su lugar.fuente
math.log
acmath.log
puedes manejar números negativos. Tampoco es necesarioimport math
entonces.input
no hace lo que piensas en Python 2, y en Python 3print
es una función en lugar de una declaración.input
hace en Python 2? ;-). Ciertamente escribiría esto de manera diferente si fuera a ser un código de producción, pero para los propósitos de este desafío está bien, siempre que la entrada sea una expresión numérica bien formada. Entiendo que hay una evaluación implícita allí, y su potencial maldad.Pure Bash
No hay bucles explícitos o aritméticos:
Utiliza las expansiones bash para crear dos listas 1-n y las expande entre paréntesis y muestra el tamaño de la matriz resultante.
Método similar, pero haciendo uso de coreutils en su lugar:
fuente
R, deliciosa ineficiencia con Monte Carlo
La expectativa
E[x]
para la parametrización de forma / escala de la Distribución Gamma esshape*scale
.No veo
mean
ser prohibido, así que aquí está la solución de muestra conmean()
Sin usar
mean()
, es posible usarmode[x]
, que es igual a(shape-1)*scale
, pero esto implica escribir unaadd.one
función para omitir y+1
luego escribir otraMode
función para tabular el modo.La precisión no está garantizada, pero la ley de gran número debería entrar en vigencia para 1,000,000,000 de muestras, lo que me ha dado los resultados correctos para todos mis casos de prueba.
fuente
Java
Primera entrada, ¿es así como funciona?
fuente
C#
Crea una cadena con n caracteres y luego reemplaza cada carácter con la cadena de n caracteres. Esto produce una cadena con una longitud de n * n.
Pruébelo aquí: http://ideone.com/lubIFg .
fuente
Matlab
una advertencia: esto se basa principalmente en matemáticas, así que no esperes código fuente elegante
Tenga en cuenta que
a = n^2
ifflog(a) = log(n)*2
ifflog(log(a)) = log(log(n))+log(2)
. Entonces, esta función es solo encontrar el cero de la funciónf(a) = log(log(n))+log(2) - log(log(a))
que obviamente está ena = n^2
.Aquí algunas otras funciones no muy creativas:
Aquí el programa sumará el número
1+2+3+...+n = 1/2 * (n^2+n)
dos veces y restarán
, por lo que el resultado es siempren^2
Esta función crea una
n x n
matriz de números aleatorios (entre 0 y 1) y luego devuelve el número de elementos.La siguiente función crea una matriz vandermonde del vector
(0,0,n)
y genera la entrada que consiste enn^2
Esta función crea el inverso de una matriz hilbert de tamaño
n
donde el elemento superior izquierdo siempre están^2
fuente
g=@(n)nnz(nan(n));
por razones de eficiencia y brevedad. ;-)function s = g(n); a = inv(hilb(n)); s = a(1); end
. Pero, de nuevo, su solución es más corta; PC
Funciona hasta INT_MAX en tiempo constante y sin asignación de memoria.
Ejemplo:
muestra
fuente
Java
Esta es la primera respuesta que realmente no usa bucles o recursividad.
fuente
System.out.print(1)
quem
, el programa imprimirá1
exactamente 32 veces, no n veces.GolfScript
Histocrat ha mostrado una forma de usar la conversión de base: aquí hay otra.
Disección
fuente
Emacs Lisp
Una macro simple que se expande
(square-it 5)
en(+ 5 5 5 5 5)
. Por supuesto, la entrada debe ser una constante de tiempo de compilación.fuente
Javascript
fuente
Haskell
Hay muchas posibilidades si
[x..y]
se permiten rangos , algunos de ellos son:Los dos últimos usan la instancia Monad de listas. para listas
xs
,ys
retenciones quexs>>ys
seys
agregan a sí mismaslength xs
veces.otro truco es solo
esta función, cuando se le da un argumento 'apropiado' (que por supuesto son de la clase de tipo
Num
) devuelve su cuadrado.Product 3 :: Num a => Product a
es un ejemplo de tal argumento.Básicamente, esta función cuando se aplica
Product a
, (que en laNum
clase iffa
está en i)mappend
s sí mismo y devuelveProduct (a*a)
.si somos más estrictos sobre qué es un número / en qué números debería funcionar nuestra función, podemos definir
f
comofuente
Java
Esto es demasiado largo para poner en la respuesta, pero básicamente una de las líneas de código ocurre una cantidad de veces aproximadamente igual al sqrt de
Integer.MAX_VALUE
(que es 46340). :RESin comentarios ni saltos de línea, el código escrito sería de 1.112.155 caracteres.
fuente
R
Esta función se basa en contar todas las combinaciones posibles de dos secuencias que van del 1 al
n
. El valor 0 se trata por separado.fuente
Clojure
Secuencia infinita de todos los cuadrados a partir de 0. La función:
fuente
J
Un poco de arte ascii ...
fuente
perl:
fuente
SQL (PostGIS)
Haciendo uso del área y haciendo funciones de envolvente en la extensión PostGIS a PostGreSQL para crear una geometría cuadrada y devolver su área. Podría cambiarse para devolver el cuadrado de carrozas también.
En uso;
fuente
Pitón
Utiliza matemáticas simples. Basado en la suma de una progresión aritmética.
Explicación:
Aunque la suma y el rango probablemente contienen bucles implícitos,
pero según la especificación de la pregunta, no hay forma de insertar una declaración de impresión aquí para que se repita, así que ... :)
fuente
Golpetazo
Solo funciona si n <256.
fuente
PHP
funciona con un entero en el rango [0; 46340]
Editar: acabo de ver el código @thebestone y es básicamente el mismo
fuente
Perl
el programa espera que el número de entrada se cuadre en forma unaria (es decir, base 1). La salida también es unaria. Simplemente reemplaza cada dígito con el número entero.
Ejemplo de uso:
fuente
Scala:
fuente
Scala:
fuente