Su objetivo es escribir un programa que tome una entrada y, cuando se encadenan juntos N
, realice una "multiplicación secuencial". ¿Qué es la multiplicación secuencial, puedes preguntar? Es una secuencia con una semilla a
definida así:
f(0) = a
f(n+1) = f(n)*(f(n)-1)
Entonces, deja a = 5
. Por lo tanto, f(0) = 5
, f(1) = f(0)*(f(0)-1) = 5*4 = 20
, y f(2) = f(1)*(f(1)-1) = 20*19 = 380
.
Si su programa era ABC
, entonces ABC
debería tomar entrada a
y salida f(1)
. El programa ABCABC
debe salir f(2)
, etc. La serie de su programa solo debe recibir una vez y solo una vez.
Este es un código de golf, por lo que gana el programa más corto en bytes. Las lagunas estándar están prohibidas.
fuente
if
yelse
.CJam, 5 bytes
Pruébalo en línea!
Cómo funciona
fuente
pl, 5 bytes
Pruébalo en línea.
Sería de 4 bytes si no hubiera sido flojo y no implementado "asignar a _" ...
Explicación
fuente
05AB1E , 3 bytes
Código:
Explicación:
Pruébalo en línea!
fuente
GolfScript, 5 bytes
Pruébalo en línea.
De golf y comentado:
El intérprete de GolfScript lee automáticamente la entrada y la coloca en la pila, pero como una cadena, no como un número. Por lo tanto, tenemos que convertir la entrada en un número con
~
, y luego volver a clasificarla con string`
. Al final, el intérprete imprimirá automáticamente el número en cadena en la pila.(Ahora, si el desafío hubiera sido iterar
f(n+1) = f(n)*(-f(n)-1)
, podría haberlo hecho en 4 bytes con~.~*
. Descubrir cómo y por qué eso funciona se deja como ejercicio. :)fuente
JavaScript REPL,
2520 bytesTrabajará para eliminar un REPL
fuente
Lua,
3518 bytes¡Es algo que Lua puede hacer con bastante facilidad por una vez!
Editar: he descubierto muchas cosas en Lua desde que hice esto, así que lo estoy actualizando :)
...
contiene el argumento de la línea de comandos desempaquetado, indicando que usará su primer valor en este caso, ya que no se le permitirá gastar, lo que solo se imprimirán*(n-1)
.fuente
Y , 7 bytes
Pruébalo aquí!
Así es como funciona:
j
toma entrada numérica.z
activa la impresión implícita.C
comienza un nuevo enlace.:
duplica el valor en la pila y lot
disminuye, dejándonos con[a a-1]
. Entonces, salimos[a*a-a]
de*
.!
omite el siguiente comando; en EOF, no hace nada. Cuando se encadenan juntos, omite el comando de entrada y el proceso comienza nuevamente.fuente
Jolf, 6 bytes
Pruébalo aquí!
Explicación
fuente
𝔼𝕊𝕄𝕚𝕟, 5 caracteres / 7 bytes
Try it here (Firefox only).
¿Debo realmente explicar esto? Oh bueno, aquí va ...
Explicación
Básicamente se evalúa
input*=--input;
en JS.fuente
Perl, 23 bytes
Versión alternativa, 10 bytes.
Esto requiere el
-p
cambio. No estoy seguro de si es un juego justo en una pregunta de diseño de fuente .fuente
Haskell,
1411 bytesEjemplo de uso
Quizás esta no sea una función adecuada. Si estás haciendo trampas, puedes ir con
(*)=<<pred$id
(<-hay un espacio al final) para 14 bytes.Editar: @Zgarb reescribió la función usando la función mónada y guardó 3 bytes. ¡Gracias!
fuente
(*)=<<pred$
ahorra 3 bytes. Además, debe tenerse en cuenta que esto realmente no define una función, y el valor de entrada debe colocarse directamente después de él.id
convierte en una función adecuada. He puesto una nota en mi respuesta.Pure bash (sin utilidades), 40
fuente
TI-Basic,
65 bytesSe ejecuta en calculadoras TI-83/84
Este programa funciona debido al hecho de que se imprime una expresión en la última línea de un programa en lugar del
Done
texto normal .fuente
:Ans²-Ans
Mathcad, 39 "bytes"
Desde la perspectiva del usuario, Mathcad es efectivamente una pizarra en 2D, con expresiones evaluadas de izquierda a derecha, de arriba a abajo. Mathcad no admite una entrada de "texto" convencional, sino que utiliza una combinación de texto y teclas especiales / barra de herramientas / elementos de menú para insertar una expresión, texto, diagrama o componente. Por ejemplo, escriba ":" para ingresar el operador de definición (que se muestra en la pantalla como ": ="), "[" para ingresar un índice de matriz o "ctl-]" para ingresar un operador de bucle while (incluidos los marcadores de posición para el condición de control y una expresión corporal). Lo que ves en la imagen de arriba es exactamente lo que aparece en la interfaz de usuario y como "tipeado".
Para fines de golf, el recuento de "bytes" es el número equivalente de operaciones de teclado requeridas para ingresar una expresión.
Una cosa de la que estoy aún menos seguro (desde un punto de vista de equivalencia de "byte") es cómo contar la creación de una nueva región (por ejemplo, a: = 5 o k: = 0..n-1). He equiparado cada movimiento a una nueva región como igual a una nueva línea y, por lo tanto, 1 byte (en la práctica, uso el mouse para hacer clic donde quiero la región).
Solo he incluido las declaraciones activas y no los comentarios, y he incluido 2 bytes cada uno para las entradas ayn, pero no los valores en sí (5 y 7 en el ejemplo).
fuente
Haskell, 72 bytes
Este desafío no es amigable para Haskell. Sin embargo, lo siguiente funciona si la entrada es unaria y el código se ejecuta en GHCI:
Explicación:
Unary siempre es impar, por lo que la primera aplicación se convertirá a decimal.
x*(x-1)
siempre es par, de lo contrario vuelvex*(x-1)
, dondex
está la entrada. Debido a que Haskell está fuertemente tipado y los símbolos 'especiales' no se pueden llamar así&1
, creo que esta es prácticamente la única forma de completar esto en Haskell, a menos que uno use variables globales o un formulario de entrada aún más extraño.fuente
C ++ (gcc) , 173/176 bytes
Ambas versiones tienen una nueva línea crucial al final.
Versión macro, 173 bytes
Pruébalo en línea!
Versión de plantilla, 176 bytes
Algo más C ++ ish:
Pruébalo en línea!
fuente
Burlesque - 5 bytes
fuente