Hilo de policías
En este hilo, su tarea es crear un programa / función basado en recursividad para generar cualquier serie entera. Los ladrones intentarán encontrar una solución no recursiva más corta en el hilo de los ladrones .
Sinopsis del desafío
En muchos idiomas, las funciones recursivas pueden simplificar significativamente una tarea de programación. Sin embargo, la sobrecarga de sintaxis para una recursión adecuada puede limitar su usabilidad en code-golf.
Los policías crearán un programa o función tomando un solo entero n
, que generará las primeras n
entradas de una serie de enteros, utilizando solo la recursividad 1 . También deben asegurarse de que haya una forma más corta y no recursiva de generar la secuencia para marcar su entrada como segura.
Los ladrones intentarán encontrar un programa o función más cortos en el mismo idioma, generando la misma serie entera, sin recurrencia 2 .
Si la presentación de la policía no se resuelve en diez días (240 horas), el policía demostrará que, de hecho, era posible tener un enfoque no recursivo más corto al revelar su propia solución. Luego pueden marcar su presentación como segura .
El ganador del desafío de policías será la presentación basada en recursión más corta (según el código de golf ) marcada como segura.
El ganador del desafío de los ladrones será el ladrón que descubrió la mayor cantidad de soluciones.
1: solo necesita ser recursivo en sintaxis; no necesita preocuparse, por ejemplo, por la optimización de llamadas de cola.
2: De nuevo, no recursivo en sintaxis; por lo que no puede publicar una solución recursiva y reclamar que está compilada en un bucle gracias a la optimización de la cola de llamadas.
Requerimientos de la sumisión
Cada envío tendrá un solo entero n
(cero o uno). La presentación generará o devolverá las primeras n
entradas de una serie entera de elección. (tenga en cuenta que esta serie entera no debe depender de n
). El método de entrada y salida puede diferir entre el enfoque recursivo y el no recursivo. La serie entera puede ser cualquier serie determinista con una longitud de al menos 5. La serie debe explicarse correctamente.
Su envío no tiene que funcionar para arbitrariamente grande n
, pero debería funcionar por lo menos n=5
. El enfoque no recursivo debe ser capaz de funcionar hasta al menos lo mismo n
que el enfoque recursivo, o hasta n=2^15-1
, lo que sea menor.
Recursividad
En aras de este desafío, la recursión se define como la creación de la secuencia deseada utilizando una función (o construcción similar a una función ) que se llama a sí misma (o llama a una secuencia de funciones que termina llamándose a sí misma; esto incluye construcciones como el combinador Y). La profundidad de recursión debe ir al infinito como n
va al infinito. El enfoque no recursivo es cualquier cosa que no sea recursiva.
fuente
for
se hace recursivamente detrás, esfor
recursivo o en bucle?n
si es teóricamente correcto, pero no se puede ejecutar debido a limitaciones de tiempo o memoria?n=5
debe calcularsexfor
esté disponible a través de algún tipo de importación), por lo que quizás este idioma no pueda competir.Respuestas:
Python 3 , 65 bytes (Seguro)
Pruébalo en línea!
Otro intento en Python.
La secuencia es "la cantidad de formas de llenar un tablero de 2 por n con fichas de dominó en tres colores, de modo que no se toquen dos fichas de dominó del mismo color". No en OEIS.
Digamos Vamos
n=6
. El tablero se ve así:y estos son tiros de dominó válidos en tres colores (
1-3
representan un color cada uno):pero estos no lo son (dos fichas de dominó del mismo color se tocan entre sí):
La secuencia cuenta todas las posibles inclinaciones de dominó que satisfacen las reglas para cada una
n
.Solución prevista, 58 bytes
Pruébalo en línea!
Desafortunadamente, parece que nadie se molestó en simplificar la relación de recurrencia, que se mostró claramente en el código recursivo. Hacer un programa con la doble recurrencia dada tal cual no funciona ya que es Python 3.
fuente
Octava , 47 bytes, agrietada por l4m2
Pruébalo en línea!
Como ejemplo, aquí hay una entrada de octava que genera los primeros
n
enteros positivos, https://oeis.org/A000027 .fuente
l4m2
te ganó.Python 3 , 75 bytes, descifrado por xnor
Pruébalo en línea!
Los famosos números de Hamming, también conocidos como 5 números lisos ( A051037 ).
Solución agrietada, 51 bytes
Pruébalo en línea!
Solución prevista, 74 bytes
Pruébalo en línea!
fuente
Adelante (gforth) , 39 bytes, descifrado por NieDzejkob
Pruébalo en línea!
fuente
[1,2,...,n]
, ¿lo sabes, verdad?Röda , 40 bytes
Pruébalo en línea!
Esta función proporciona la siguiente secuencia finita (los 90 primeros números de Fibonacci):
Sé que puede generar más números de Fibonacci, pero para los propósitos de este desafío es suficiente producir estos números.
fuente
JavaScript (Node.js) , 91 bytes, descifrado por l4m2
Pruébalo en línea!
Imprime los primeros n términos de la secuencia OEIS A022559 (comenzando desde i = 1).
l4m2 encajó 3 para bucles en
7472 bytes y descifró mi publicación de policía:Sin embargo, mi respuesta prevista en realidad solo tiene 2 para bucles:
Pruébalo en línea!
fuente
Función x86 .COM, 12 bytes, Agrietada por NieDzejkob
Entrada DX, Salida [DI] ~ [DI + 2 * DX-1]
La solución del cracker:
Solución prevista:
fuente
Python 3 , 62 bytes, agrietado por mwchase
Pruébalo en línea!
Siento que este será demasiado fácil ...
La secuencia es la secuencia de Fibonacci
f(n) = f(n-1) + f(n-2)
conf(0) = f(1) = 1
fuente
Gol> <> , 15 bytes, descifrado por mbomb007
Pruébalo en línea!
La serie es
0,1,2,3,4,5
pero cada elemento es seguido por esa cantidad de ceros.Por ejemplo, los primeros valores son:
fuente
JavaScript, 63 bytes, agrietado
Pruébalo en línea!
Devuelve los primeros n elementos en una matriz invertida
fuente
Windows .BAT, 80 bytes
Uso:
La versión de bucle puede asumir en el diccionario actual, pero debe iniciar o restablecer
fuente
Python, 82 bytes; agrietado
Esta es una implementación recursiva de Python de la secuencia OEIS A004001 en 82 bytes. Se puede encontrar más información sobre esta serie en Wolfram's Mathworld .
Los primeros 30 números en esta secuencia son:
fuente