La secuencia más-menos
La secuencia más-menos es una que comienza con dos semillas, a(0)
y b(0)
. Cada iteración de esta secuencia es la suma y resta de los dos miembros anteriores de la secuencia. Es decir, a(N) = a(N-1) + b(N-1)
y b(N) = a(N-1) - b(N-1)
.
Objetivo Producir la secuencia más-menos, en infinitud o los primeros K
pasos dados K
. Puede hacer esto usando un programa de salida infinita, un generador o una función / programa que dé los primeros K
pasos. El orden de salida no importa, siempre que sea coherente. (Es decir, b(K) a(K)
o a(K) b(K)
con algún separador no numérico, no de nueva línea en el medio). La salida debe comenzar con la entrada.
Casos de prueba
Para entradas 10 2
(de a(0) b(0)
, esta es una salida posible para el primer enfoque K (o una subsección del enfoque infinito):
10 2
12 8
20 4
24 16
40 8
48 32
80 16
96 64
160 32
192 128
320 64
384 256
640 128
768 512
1280 256
1536 1024
2560 512
3072 2048
5120 1024
6144 4096
10240 2048
12288 8192
20480 4096
24576 16384
40960 8192
49152 32768
81920 16384
98304 65536
Para entradas 2 20 10
( a(0) b(0) k
):
2 20
22 -18
4 40
44 -36
8 80
88 -72
16 160
176 -144
32 320
352 -288
Este es un código de golf , por lo que gana el programa más corto en bytes.
a
yb
ser una nueva línea?Respuestas:
Jalea , 5 bytes
Este es un enfoque recursivo. Debido a la optimización de la cola de llamadas, el único límite es la capacidad de encajar ambos enteros en la memoria. La salida es una lista por línea.
Pruébalo en línea!
Cómo funciona
fuente
Main link
realmente?¶
y los avances de línea se pueden usar indistintamente. Puede usar ambos en modo UTF-8, pero solo hay\x7f
que representarlos en la página de códigos de Jelly.Python 2, 31 bytes
Imprime para siempre. Bueno, eventualmente excedes el límite de recurrencia, pero eso es una limitación del sistema.
fuente
sys.setrecursionlimit
while
bucle se comporta de manera diferente a lo que estás haciendo.f=lambda a,b:print(a,b)or f(a+b,a-b)
)MATL , 10 bytes
Esta versión generará un número infinito de elementos en la secuencia más-menos.
Pruébalo en línea! (deténgalo después de ejecutarlo debido al bucle infinito)
Explicación
fuente
Haskell, 19 bytes
Produce una secuencia infinita de números. Ejemplo de uso:
fuente
Pyth,
109 bytesGracias a @isaacg por 1 byte.
Imprime una secuencia infinita de pares.
fuente
Q
s se pueden eliminar: Pyth las rellenará implícitamente.C, 81 bytes
fuente
05AB1E , 7 bytes
Utiliza el método first-k . Ingrese lo siguiente para:
Código:
Explicación:
Utiliza la codificación CP-1252 . Pruébalo en línea!
fuente
k, 12
.
También podría llamarse en forma de
fuente
APL, 37 caracteres
Puede ser utilizado como
o
fuente
MathGolf , 8 bytes
Pruébalo en línea!
Toma la entrada en orden inverso, pero eso es simplemente porque así es como se empujan a la pila. De lo contrario, sería 1 byte más. 2-3 bytes provienen de la salida. Sin la necesidad de imprimir realmente un par por línea, el programa podría ser
æ`‼+-∟
(llena la pila con los elementos de la secuencia indefinidamente) oÉ‼+-∟
(imprime todos los elementos de la secuencia excepto el primero para depurar, siempre que la-d
bandera esté activa) .Explicación
fuente
ABC
, recibo un error en líneastdin = StdIn(line)
en el código de Python ..'ABC'
o"ABC"
. Internamente,ast.literal_eval
se utiliza para analizar la entrada. Todavía hay algunas peculiaridades que deben ser resueltas, pero debería poder hacer esto .ABCDEF
a[AB, CD, EF]
?2ô_2<\1>]
(codificado para la longitud de entrada 6 y dividido en partes de tamaño 2, ya que eso era lo que necesitaba, pero probablemente debería ser modificable para trabajar con tamaños de entrada genéricos y tamaños de parte)./
Python 3.5,
5543 bytes:Imprime la secuencia correcta aparentemente para siempre. ¡He podido dejar que esto continúe durante unos 30 minutos sin que se produzca ningún error, y el programa imprimió 2301 dígitos para el primer número y 1150 dígitos para el segundo! Basado en esto, supongo que, si se le proporciona suficiente hardware para ejecutar, esto puede continuar por MUCHO más tiempo e imprimir MUCHO más dígitos, y también teóricamente no tiene límite de recursión, ¡cortesía del
while
ciclo!fuente
a
yb
hacer coincidir la pregunta.while
y una llamada recursiva ahora ...Reng v.3.2, 9 bytes (auto-respuesta, no competitiva)
Toma dos entradas (
a b
) y salidasb a
. Pruébalo aquí!i
toma la entrada dos veces,¤
duplica la pila,æ
imprime un número y un espacio (y lo hace dos veces, hay dos),ö
imprime una nueva línea,±
hace lo que podría esperar y2.
omite los siguientes dos caracteres, envolviendo la entrada obteniendo caracteres.fuente
Python 2.7,
56, 42 bytes:Bucle simple que se imprime para siempre (ish).
fuente
a,b=input()
, puede eliminar la sangría.Lote, 54 bytes
Tenga en cuenta que CMD.EXE está limitado a enteros con signo de 32 bits, por lo que se desbordará rápidamente e imprimirá mensajes basura y de error.
fuente
Julia, 25 bytes
Máximo abuso de sintaxis. Julia es rara . Pruébalo en línea!
Versión alternativa, 29 bytes.
Tenga en cuenta que la salida eventualmente se desbordará a menos que llame
<|
a un BigInt . Desafortunadamente,show
prefijará cada matriz conBigInt
en este caso. A costa de cuatro bytes más, podemos generar resultados separados por espacios en blanco para todos los tipos numéricos.Pruébalo en línea!
Cómo funciona
Definimos el operador binario
<|
para fines externos. No está definido en las versiones recientes de Julia, pero el analizador aún lo reconoce como operador. Si bien\
(no está definido explícitamente para enteros) es un byte más corto, su alta prioridad requeriría reemplazarsea+b<|a-b
con(a+b)\(a-b)
(+3 bytes) o\(a+b,a-b)
(+2 bytes).Cuando
a<|b
se ejecuta, comienza llamandoshow
a print [ab] a STDOUT. Luego,a+b<|a-b
recurrentemente recurre<|
a la suma o la diferencia.Como la recursividad es (se supone que es) infinita, la comparación
<
nunca se realiza; Su único propósito es encadenar las dos partes del código. Esto ahorra dos bytes sobre la alternativa más sencilla([a b]|>show;a+b<|a-b)
.fuente
Perl 6 , 23 bytes (infinito)
Editar: gracias a JoKing, la versión de secuencia ahora es la más corta (también eliminada
.say
por aclaración de OP:TIO: InfiniteSeq
Antigua respuesta funcional
TIO: InfiniteFunc
Tenga en cuenta que Perl 6 no tiene límite de recursión per se, se basa únicamente en la memoria disponible, por lo que alcanzará los millones antes de bombardear.
fuente
Factor, 62 bytes
recursive
, o bien la pila de llamadas se agota demasiado rápido.fuente
Rubí, 25 bytes
Basado en la solución Python de xnor . Quizás haga un generador en otra respuesta, pero esto imprimirá
a
, luegob
, lo nuevoa
, luego lo nuevob
, hasta el infinito.fuente
Python 3, 42 bytes
Quería escribir un generador para esta función, y así lo hice.
En Python 3, la secuencia se genera de esta manera:
fuente
Lisp común, 57
Usos
psetf
, que afectan los valores de las variables en paralelo, y laloop
sintaxis simple .fuente
bash + GNU coreutils, 75 bytes
Invocación:
fuente
CP / M 8080, 47 bytes
z80 mnemónicos pero nada que no tenga el 8080, comentó la fuente una vez que decidí contar la salida en lugar de la entrada, pero conservaron los nombres de funciones concisos, ensamblados a mano, así que perdone los 'xx' donde sé la cantidad de bytes pero no funcionó las direcciones de salida o compensaciones:
fuente
Clojure, 44 bytes
Función que produce una secuencia perezosa infinita.
fuente
Perl 5, 40 bytes
requiere
-E
(gratis)o (misma longitud)(He tachado este último porque debería tener errores de redondeo para algunas iteraciones).
Punta de sombrero.
Pero sospecho que debe haber una solución Perl 5 más corta.
fuente
RETORNO , 21 bytes
Try it here.
Operador recursivo-lambda. Uso:
Explicación
fuente
> <> , 26 bytes
Llamada con
a
,b
,n
en la pila, donden
es el número de vueltas o un valor negativo para la salida infinito. Salidasa
yb
separadas por un espacio.Como explicación, así es como evoluciona la pila durante el tiempo de ejecución:
Puede probarlo en el intérprete en línea con una cantidad positiva de turnos, pero deberá usar el intérprete oficial de Python para probar el modo infinito.
fuente
Fuzzy Octo Guacamole ,
1716 bytes(no competidor, utiliza características posteriores al desafío)
Esto fue difícil de hacer, debido a errores del lado del cliente. Pero lo tengo!
Tutorial:
fuente
:
al comienzo del ciclo y eliminar la necesidad de imprimir dos veces?En serio, 12 bytes
Emite un flujo infinito, el formato es
b(n) a(n)
, un par de salidas por línea.No hay enlace en línea porque TryItOnline no funciona muy bien con bucles infinitos.
Explicación:
fuente
J,
1612 bytesProduce solo los primeros k valores para la secuencia en función de las semillas dadas.
Guardado 4 bytes usando el truco (o azúcar sintáctico) que muestra @randomra en este comentario .
Uso
fuente
C #, 50 bytes
Fuente completa, incluido el caso de prueba:
El tipo de datos BigInteger se usa para que los números no se desborden y se conviertan en 0. Sin embargo, dado que es una solución recursiva, espere un desbordamiento de la pila.
fuente