Escriba un fragmento de código JavaScript que llame alert
con una matriz que contenga los primeros 50 números de Fibonacci en orden. Sólo puede utilizar los siguientes caracteres: +!()[]
.
Como referencia, su código debe ser funcionalmente igual al siguiente:
var fib = [], a = 1, b = 1;
for (var _ = 0; _ < 50; _++) {
fib.push(a);
var t = a; a = b; b = t + a;
}
alert(fib);
No puede asumir ningún contenido en la página web; su programa se ejecutará en la consola el about:blank
. Del mismo modo, no puede 'engañar' y almacenar ninguna configuración en cookies, configuraciones u otros datos. Su solución debe funcionar en cualquier instalación nueva de la última versión de Google Chrome o Firefox en cualquier sistema operativo. En caso de duda, trate de mantenerse lo más portátil posible.
El código fuente más pequeño en bytes gana.
Respuestas:
7.576 caracteres
Firefox / Safari 9 (WebKit todas las noches)
El principal protector de bytes es
fill()
La mayoría de los caracteres no alfanuméricos (especialmente
;
y>
) son muy caros, así que realmente estoy tratando de minimizar su uso.Guión
Cromo (11,605)
Original:
;
es muy caro.Guión: Pastebin .
fuente
falsefalse
como nombre de variable es menor número de caracteres quet
of
ni nada, podría ayudar a afeitarse un poco más de descuento! Es una pena que no podamos producir más números que 50 porque50
es más corto que48
....pop()
,.shift()
y.splice()
todos agregan demasiados caracteres! ¡Piensa que @vihan lo tiene cubierto! Sialert()
en cada etapa es aceptable, podría ser posible omitir el reverso por completo, pero creo que eso es un poco infringir las reglas ...15,943 bytes
Acabo de codificar los valores y utilicé el compilador JScrewit .
Código original
Código JSFuck:
Aunque la codificación dura es más larga que un generador de golf en js normal, los números son (comparativamente; P) fácilmente representados en JsFuck.
fuente
302871241912288 BytesGolf original:
Unshift y Reverse son más baratos que Push para un ligero ahorro:
No encaja! ¡Límite de 30K caracteres! Pastebin aquí.Intenté jsfuck.com pero eso me dio 62399 bytes.
Siguiendo la sugerencia de Stefnotch, cambió la compatibilidad a Chrome solamente y redujo drásticamente el recuento. JSFuck generado por jscrew.it :
fuente
122851218312069113991125211105 BytesCódigo original:
Después de quitar el punto y coma y reemplazarlo con '\ n': (Gracias Dom Hasting ).
Usando 'concat' en lugar de 'push' para guardar algunos bytes:
Código actualizado:
Eliminar espacio vacío:
Eliminar espacio vacío después de '+':
Código JSFuck:
fuente
falsefalse
yfalse0
como los nombres de las variables en lugar det
yf
y\n
es un menor número de caracteres que;
(según jscrew.it de todos modos) para que mgiht ser capaz de reemplazar las de un ahorro también. Si es posible mostrar los primeros 52 números, 50 es la mitad del tamaño de 48 también ... ¡Espero que ayude!for(i=0;i<48;)
yf.push
para ahorrar más y reemplazar los nombres de las variables definitivamente guardará algunosf
=(![]+[])[+[]]
vs.falsefalse
=![]+[![]]
yi
=([![]]+[][[]])[+!![]+[+[]]]
vs.false0
=![]+[+[]]
.concat
¡Era la única otra forma que podía ver para ayudar a reducir ese método también!Firefox, 7446 bytes
Fuente:
fuente
14.097 bytes
La primera vez que hago uno de estos o codifico en este idioma, así que volveré y veré si puedo hacerlo más pequeño
Código original:
Código JSFuck:
fuente