Dado N (2 <= N ), imprima N líneas de la serie de letras de Fibonacci como esta (es decir, N = 5) Primero, comience con a
y b
:
a
b
Luego, agregue las dos líneas.
a
b
ab
Sigue agregando las dos últimas líneas.
a
b
ab
bab
Sigue adelante...
a
b
ab
bab
abbab
Y ya hemos terminado.
Recuerda, este es el código de golf , por lo que gana el código con la menor cantidad de bytes.
Respuestas:
Python 2, 41 bytes
Guardado 3 bytes gracias a @xnor
Prueba de ideona
Simplemente sigue la definición recursiva.
fuente
a,b="ab";exec"print a;a,b=b,a+b;"*input()
.Haskell,
293532 bytesRecurrencia simple
Como referencia: la versión anterior (una adaptación de esta respuesta ) concatenaba las cadenas en el orden incorrecto, así que tuve que agregar una
flip(...)
que la hizo demasiado larga (35 bytes).fuente
["b","a","ab","aba","abaab"]
05AB1E ,
1211 bytes¡Gracias a Emigna por guardar un byte!
Utiliza la codificación CP-1252 . Pruébalo en línea!
fuente
̓
podría ser loG
mismo que no estás usandoN
:)Jalea ,
1110 bytesPruébalo en línea!
Cómo funciona
fuente
”a”b;@Ṅ
parte hacia abajo, pero no podía entender a dónde ir desde allí ... ahora sé :-)Java 7, 69 bytes
sin golf
fuente
a
yb
. Sin embargo, no estoy seguro de si los parámetros"a"
y"b"
deben contarse para el recuento de bytes, ya que la pregunta establece específicamente que debe usara
yb
. No es que Java gane alguna vez de todos modos. ;)"a"
y"b"
) en lugar de 69 porque el desafío solicitó específicamentea
yb
, y el método de código cortado actualmente utiliza Una entrada variable. No estoy seguro de cuáles son las reglas con respecto a algo como esto, pero personalmente creo que debería contarse. De lo contrario, en algunos idiomas podría tener una función que ejecute una función de parámetro, y luego simplemente dar la función de desafío completa en el parámetro sin contar sus bytes. Suena como un tipo de regla de escapatoria estándar.Emacs,
26, 25 pulsaciones de teclasPrograma
#npara ser leído como clave con dígitos (s) n :
ARETBRETF3UPUPC-SPACEC-EM-WDOWNDOWNC-Y UPC-AC-SPACEC-EM-WDOWNC-EC-YRETF4C-#(n-2)F4
Explicación
Con n = 10
fuente
JavaScript (ES6),
4342 bytesGuardado un byte gracias a @Arnauld
fuente
CJam,
1917 bytesexplicación
fuente
p
debería ser a;
. Puede deshacerse de las comillas alrededor de la salida si usa enn
lugar dep
. Finalmente,'a'b
guarda dos bytes"a""b"
.V , 18 bytes
Pruébalo en línea!
O, la versión más legible:
Explicación:
fuente
MATL , 14 bytes
Pruébalo en línea!
fuente
Python 2, 55 bytes
fuente
Retina , 33 bytes
Pruébalo en línea!
¡ Ahorró 10 (!) Bytes gracias a @ MartinEnder !
Explicación
Convierte la entrada en unario, resta
2
y suma ela
y elb
, luego reemplaza recursivamente los1
s restantes con la concatenación de las dos cadenas anteriores.fuente
$%`
! y esa otra captura fue una mala planificación ... ¡Increíble, gracias!Lote,
10293 bytesAfortunadamente, las variables se expanden para cada línea antes de que las asignaciones surtan efecto, por lo que puedo establecer ambas
a
yb
usar sus valores anteriores sin necesidad de una temporal. Editar: Guardado 9 bytes gracias a @ nephi12.fuente
for /l %%i in (2,1,%1) etc..
@set a=a&set b=b
como lo hizo con el último. aunque técnicamente todos podrían estar en la misma línea ... pero eso sería feo ... hmm ...Apila mi golf, 63 bytes
Obtenga mi idioma aquí: https://github.com/cheertarts/Stack-My-Golf .
Probablemente haya un camino más corto, pero este es el más obvio.
fuente
Perl,
3635 bytesIncluye +3 para
-n
Dar cuenta de STDIN
fibo.pl
fuente
Perl, 45 +1 = 46 bytes
+1 byte para la bandera -n
Ligera mejora sobre la solución existente de 49 bytes, pero desarrollada por separado. Los paréntesis para
say($a)
son necesarios porque, de lo contrario, se interpreta$a,($a,$b)=($b,$a.$b)
como el argumento desay
que genera más basura de la que necesitamos.Perl, 42 bytes
Un enfoque separado de la solución anterior:
Todavía no estoy convencido de que no pueda combinar la transliteración y el reemplazo en una sola operación más corta. Si encuentro uno, lo publicaré.
fuente
Swift 3, 76 bytes
fuente
Perl, 48 bytes
Código de 47 bytes + 1 para
-n
.Enfoque simple Intente usar un segmento de matriz originalmente,
$a[@a]="@a[-2,-1]"
pero eso requiere$"=""
o similar :(. ¡Ahorre 1 byte gracias a @ Dada !Uso
fuente
@;
lugar de@a
para que pueda omitir el punto y coma final (¿entiende a qué me refiero?). (Lo sé, un byte es bastante barato, pero no tenía una idea mejor ...)perl -pe '@;=(a,b);$;[@;]=$;[-2].$;[-1]for 3..$_;say for@' <<< 5 syntax error at -e line 1, at EOF Execution of -e aborted due to compilation errors.
pero no pensé que sería justo agregar una respuesta si no pudiera ¡que funcione!-pe
lugar de-nE
? De todos modos, funciona en el mío, por lo que probablemente esté relacionado con su versión o sistema perl ... ¡Pero créanme, lo probé y funciona! ;)-nE
(¡no sé de dónde-pe
vino! Debe ser viernes ...) ¡Lo actualizaré cuando tenga un mes! ¡Gracias por compartir!SOML , 8 bytes (no competitivos)
explicación:
La razón por la que esto no compite es porque este lenguaje todavía está en desarrollo y agregué un par de nuevas funciones mientras escribía esto.
Además, 1er post en PPCG!
fuente
05AB1E, 15 bytes
fuente
C , 156 bytes (sin sangría)
Dos buffers (u & v) almacenan las dos últimas líneas. La línea más nueva (seguida con dos punteros: inicio = c, final = d) se agrega a la más antigua (inicio = a, final = b). Intercambiar (a, b) y (c, d) y bucle. Preste atención al tamaño del búfer antes de solicitar demasiadas líneas. No tan corto (como se esperaba de un lenguaje de bajo nivel), pero fue divertido de codificar.
fuente
5
pero debe ser entrada del usuarioGiven N (2 <= N), print N lines of the letter Fibonacci series like this (i.e. N = 5)
N
y no fijo. O el usuario puede ser alguien que use su función / programa.PHP,
6362 bytesVersión recursiva:
fuente
return
Pyth , 17 bytes
Un programa que toma la entrada de un número entero e imprime el resultado.
Pruébalo en línea!
Cómo funciona
fuente
Pyth -
1615 bytesPruébelo en línea aquí .
fuente
APL, 30 bytes.
⎕IO
debe ser1
.fuente
Mathematica, 49 bytes
Define una función que
g
toma la entrada numérica única; devuelve una lista de cadenas. Implementación recursiva directa, utilizando el operador de unión de cadenas<>
.Mathematica, 56 bytes
Función sin nombre, mismo formato de entrada / salida que el anterior. Esta solución utiliza una forma alternativa de generar las cadenas: cada cadena de la lista es el resultado de reemplazar simultáneamente, en la cadena anterior, todas las apariciones de "a" con "b" y todas las apariciones de "b" con "ab".
fuente
Groovy, 79 bytes
fuente
PHP, 53 bytes
fuente
$b
la cadena.C ++ 11,
8998 bytes+7 bytes para todas las líneas, no solo la última. +2 bytes más por
N
ser el número de líneas impresas, no algunas cosas basadas en 0.Uso:
fuente
Ruby (1.9+) 46 bytes
fuente