Fibonacci + FizzBuzz = Fibo Nacci!
¡Su desafío es crear un programa Fibo Nacci!
- Un programa Fibo Nacci genera los primeros 100 números de Fibonacci (a partir de 1).
- Si el número de Fibonacci es divisible por 2 y 3 (es decir, es divisible por 6), entonces genera FiboNacci en lugar del número.
- De lo contrario, si el número de Fibonacci es divisible por 2, entonces genera Fibo en lugar del número.
- De lo contrario, si el número de Fibonacci es divisible por 3, entonces genera Nacci en lugar del número.
Reglas
- El programa no debe tomar ninguna entrada.
- El programa debería generar una nueva línea (
\n
) después de cada entrada. - El programa no debe imprimir nada en STDERR.
- El programa debe generar las primeras 100 entradas de Fibo Nacci (a partir de 1).
- Las lagunas estándar no están permitidas (por defecto).
- Este es el código de golf, ¡el código más corto en bytes gana!
Aquí está el resultado esperado:
1
1
Fibo
Nacci
5
Fibo
13
Nacci
Fibo
55
89
FiboNacci
233
377
Fibo
Nacci
1597
Fibo
4181
Nacci
Fibo
17711
28657
FiboNacci
75025
121393
Fibo
Nacci
514229
Fibo
1346269
Nacci
Fibo
5702887
9227465
FiboNacci
24157817
39088169
Fibo
Nacci
165580141
Fibo
433494437
Nacci
Fibo
1836311903
2971215073
FiboNacci
7778742049
12586269025
Fibo
Nacci
53316291173
Fibo
139583862445
Nacci
Fibo
591286729879
956722026041
FiboNacci
2504730781961
4052739537881
Fibo
Nacci
17167680177565
Fibo
44945570212853
Nacci
Fibo
190392490709135
308061521170129
FiboNacci
806515533049393
1304969544928657
Fibo
Nacci
5527939700884757
Fibo
14472334024676221
Nacci
Fibo
61305790721611591
99194853094755497
FiboNacci
259695496911122585
420196140727489673
Fibo
Nacci
1779979416004714189
Fibo
4660046610375530309
Nacci
Fibo
19740274219868223167
31940434634990099905
FiboNacci
83621143489848422977
135301852344706746049
Fibo
Nacci
El catálogo
El fragmento Snack Stack en la parte inferior de esta publicación genera el catálogo a partir de las respuestas a) como una lista de la solución más corta por idioma yb) como una tabla de clasificación general.
Para asegurarse de que su respuesta se muestre, comience con un título, usando la siguiente plantilla de Markdown:
## Language Name, N bytes
¿Dónde N
está el tamaño de su envío? Si mejora su puntaje, puede mantener los puntajes antiguos en el título, tachándolos. Por ejemplo:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Si desea incluir varios números en su encabezado (por ejemplo, porque su puntaje es la suma de dos archivos o desea enumerar las penalizaciones de la bandera del intérprete por separado), asegúrese de que el puntaje real sea el último número en el encabezado:
## Perl, 43 + 2 (-p flag) = 45 bytes
También puede hacer que el nombre del idioma sea un enlace que luego aparecerá en el fragmento:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
fuente
Respuestas:
Pyth, 37 bytes
Recorro los números de Fibonacci en lugar de generarlos de antemano, ya que es muy corto de hacer.
Pruébalo en línea.
fuente
Python 2, 62 bytes
No muy diferente del FizzBuzz estándar, realmente.
fuente
C ++ 11 metaprogramación, 348 bytes
Porque, porque no. Se compila con
warning C4307: '+': integral constant overflow
, funciona bien, pero los números 93+ de Fibonacci no se muestran correctamente (debido al desbordamiento), por lo que esta entrada no es válida (pero no pude ganarla con esa cantidad de bytes)Sin golf
fuente
template <char H, char ...T>
) en sus plantillas para (teóricamente) manejar valores de longitud arbitraria. Entonces solo sería cuestión de examinar los últimos 2 caracteres en cada cadena para determinar la divisibilidad entre 2 y / o 3.__uint128_t
, tal vez.C #,
175 171 152145 bytesSin comprimir:
fuente
==0
s con>0
e invirtiendo los terrarios:class c{static void Main(){for(System.Numerics.BigInteger a=1,b=1,c=0;c++<100;b=a+(a=b))System.Console.WriteLine(a%6>0?a%2>0?a%3>0?a:(object)"Nacci":"Fibo":"FiboNacci");}}
decimal a=1,b=1
adynamic a=1m,b=a
y luego se puede perder el(object)
:)Oracle SQL, 212 bytes
No es un lenguaje de golf, pero tuve que intentarlo ...
Concatenando todas las filas con
\n
:SQLFIDDLE
O con una entrada de la secuencia por fila (162 bytes):
fuente
The program should output a new line (\n) after every entry
lo dejaré como el código más largo, pero el más corto podría hacerse compatible (sin depender de una CLI) agregando||CHR(13)
antes de la finalFROM
para 171 personajes."\n"
? Parece funcionar en MySQL. (La ejecuciónselect length("\n")
devuelve 1 y la ejecuciónselect "\n"
no regresan
, como ocurre con lasselect "\p"
devolucionesp
debido a un escape no válido)SELECT LENGTH('\n') FROM DUAL
salidas2
en Oracle como'\n'
no se convierte aCHR(13)
.ShapeScript , 83 bytes
Pruébalo en línea!
fuente
Java,
407398351308 bytesLo jugué con la ayuda de @Geobits y @SamYonnou
Difundir la palabra:
Verbose == Java
Versión sin golf:
fuente
java.math.*
lugar de todo. Use las constantes paraONE
y enZERO
lugar denew
BigIntegers. Eliminar elpublic
de la clase. Empaque todo, excepto laprintln
declaración en elfor
cuerpo dentro de la declaración del bucle, etc. Recomiendo revisar los consejos de golf de Java en general.BigInteger
y sus diversas técnicas de golf.import java.math.*;class A{public static void main(String[]w){BigInteger a=BigInteger.ZERO,b=a.flipBit(0),c,z=a,t=a.flipBit(1),h=t.flipBit(0),s=t.flipBit(2);for(int i=0;i<100;i++){System.out.println(b.mod(s).equals(z)?"FiboNacci":b.mod(t).equals(z)?"Fibo":b.mod(h).equals(z)?"Nacci":b);c=a;a=b;b=c.add(b);}}}
BigInteger
siempre regresaBigInteger.ZERO
cuando alguna operación comoadd(...)
evalúa a cero para que pueda usar en==
lugar de.equals(z)
, también puede eliminar el almacenamientos=t.flipBit(2)
(6) y en su lugar hacer una asignación interna inteligente como esta:import java.math.*;class A{public static void main(String[]w){BigInteger a=BigInteger.ZERO,b=a.flipBit(0),c,d,z=a,t=a.flipBit(1),h=t.flipBit(0);for(int i=0;i<100;i++){System.out.println((c=b.mod(t)).add(d=b.mod(h))==z?"FiboNacci":c==z?"Fibo":d==z?"Nacci":b);c=a;a=b;b=c.add(b);}}}
estos cambios lo reducen a 280Verbose.isEqualTo(Java)
Mathematica, 80 bytes
Adaptación de mi antigua solución FizzBuzz.
fuente
Echo
conPrint
.Ruby,
7166 bytessin golf:
fuente
f,n=%w[Fibo Nacci]
,f,n='Fibbo','Nacci'
yf='Fibbo';n='Nacci'
todos tienen el mismo número de caracteres. +1[b,f='Fibo',n='Nacci',f,b,f+n][~b%6]
y dos más quitando los paréntesisa=b+b=a
.~
operador. Nunca lo había visto antes. Y ahora sé por qué los índices negativos son parte de ruby :)puts [
lugar deputs[
?> <> , 116 bytes
Pruébalo en línea!
fuente
3%
seccionesPyth, 39
Muy similar a la solución estándar de fizzbuzz, solo con un generador para los números de Fibonacci.
Pruébalo aquí
fuente
C #,
498392320 bytesSolo quería hacer esto con linq, lástima que tuve que escribir mi propia función de suma para BigInteger que realmente lo mató :-(
Sin golf:
Editar: hasta 320 bytes gracias a LegionMammal978 por la sugerencia agregada y gracias a la respuesta de C # de olegz para la taquigrafía x% 6 para X% 2 && x% 3, así como el uso de operadores ternarios en una sola declaración WriteLine.
fuente
Aggregate
función LINQ?Python 2,
171121 bytes"Enfoque de fuerza bruta".
fuente
Javascript,
93 9086 Bytesfuente
a=[b,b=a+b][0]
ab=a+b,a=b-a
. Además, en una nota completamente no relacionada, me gusta la forma en que respondes como realmente rápido en Stack Overflow jeje Que tengas un buen díaPython 2, 100 bytes
Para los números grandes, agrega un
L
al final que muestra que es un número largo.Si eso es un problema, aquí hay una solución de 104 bytes
fuente
for
ciclo con este consejo: codegolf.stackexchange.com/a/5047/42736 . En particular, laexec
punta se ve bien.exec <program_string>*n
truco. ¡Agradable!Javascript (ES6),
137134bytesFunción recursiva que calcula fibonnacci, la coloca en una matriz y luego genera Fibo, Nacci o el número y se llama a sí mismo para calcular el siguiente hasta 100.
Se rompe en 73 debido a la precisión del número de JavaScript. La única forma de evitarlo sería agregar mi propio cálculo de bits.
fuente
5527939700884757 + 8944394323791464 = 14472334024676220
lo que debería ser14472334024676221
porque JavaScript usa flotadores de precisión de 16 bits y eso requiere 17 bits de precisión. También debe imprimir1
dos veces.QBasic,
144141 bytesNo es particularmente pequeño, pero supera a C ++ y C #
No hay declaraciones, se usa
:
siempre que sea posible porque es 1 byte más barato queCRLF
. Prefijado un 0 al contador de bucle: Basic se desbordará en el 47. ° carácter de Fibonacci, por lo que compensó el byte adicional que debería estar allí.EDITAR: Neil me ahorró 3 bytes: 141 bytes.
fuente
a$+
ya que se sabe que es la cadena vacía en este punto.Wolfram Language, 84 bytes
Tipo de trampa, por supuesto, debido a la construcción
Fibonacci
.Ejemplo de comando para ejecutar el script
fuente
Perl, 74 bytes
Requiere la siguiente opción de línea de comando:,
-lMbigint
contada como 8.Uso de muestra
Perl, 79 bytes
Igual que el anterior, sin requerir ninguna opción de línea de comando.
fuente
GolfScript, 47 bytes
Explicación
fuente
PARI / GP,
7673 bytesGuardado tres bytes por cortesía de Mitch Schwartz .
Uso de muestra
fuente
for(i=b=!a=1,99,b=a+a=b; ...
fibo
;)> <>,
128119 bytesYo
descaradamente robadoprestado un programa FizzBuzz programa existente y lo modificó para trabajar por la secuencia de Fibonacci Nacci.Produce números para siempre.Ahora es fijo, es decir, solo genera 100 números. Probarlo aquí .fuente
Pyth, 51 bytes
Genera la secuencia de Fibonacci y luego decide qué imprimir.
Para probar, intente esto (solo los primeros 20 números)
fuente
Clojure, 127 bytes
Sin golf:
Algunos trucos utilizados:
def
que le da a la secuencia de Fibonacci en sí es robado descaradamente de Konrad Garus .str
puede tomar símbolos como entrada. Loco, ¿verdad?if
en algunos casos.fuente
lazy-cat
?[1 1]
) con el resultado de sumar cada elemento en la secuencia de Fibonacci con el elemento que le sigue.fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
?CJam, 44 bytes
Pruébelo en línea en el intérprete de CJam .
fuente
dc,
1008979 bytesInspirado por http://c2.com/cgi/wiki?DeeCee
fuente
Javascript (ES2015), 99 bytes
Sin golf:
fuente
alert
lugar deconsole.log
; Afeita algunos bytes.F #,
202 163149 bytesEste es un archivo FSX (secuencia de comandos F #)
fuente
PHP, 75 bytes
Sorprendentemente competitivo. Requiere PHP v5.5 o superior. Asumo la configuración predeterminada, ya que no tienen un .ini (puede deshabilitar su .ini local con la
-n
opción).Uso de muestra
fuente
-n
bcadd
no funciona incluso cuandobcmath
está instalado. Sin-n
muchas cosas se emite en stderr.Prólogo, 182 bytes
Pruébelo en línea aquí
Para ejecutar el programa, use la consulta:
fuente