Escreva um código JavaScript que chame alert
com uma matriz contendo os 50 primeiros números de Fibonacci em ordem. Você só pode usar os seguintes caracteres: +!()[]
.
Como referência, seu código deve ser funcionalmente igual ao seguinte:
var fib = [], a = 1, b = 1;
for (var _ = 0; _ < 50; _++) {
fib.push(a);
var t = a; a = b; b = t + a;
}
alert(fib);
Você não pode assumir nenhum conteúdo na página da Web - seu programa será executado no console em about:blank
. Da mesma forma, você não pode 'trapacear' e armazenar configurações em cookies, configurações ou outros dados. Sua solução deve funcionar em qualquer nova instalação do Google Chrome ou Firefox mais recente em qualquer sistema operacional. Em caso de dúvida, tente permanecer o mais portátil possível.
O menor código fonte em bytes vence.
Respostas:
7.576 caracteres
Firefox / Safari 9 (WebKit noturno)
O principal economizador de bytes é
fill()
A maioria dos caracteres não alfanuméricos (especialmente
;
e>
) são muito caros, por isso estou tentando minimizar o uso deles.Roteiro
Chrome (11.605)
Original:
;
é muito caro.Script: Pastebin .
fonte
falsefalse
como um nome de variável é menos caracteres do quet
ouf
nem nada, pode ajudá-lo a fazer a barba um pouco mais off! Pena que não pode produzir mais números de 50, porque embora50
é mais curto do que48
....pop()
,.shift()
e.splice()
mas todos eles adicionar muitos caracteres! Think @vihan tem tudo a ver! Sealert()
ing em cada fase é aceitável poderia ser possível para ignorar o reverso inteiramente embora, mas eu sinto que é um pouco regra-breaky ...15.943 bytes
Eu apenas codifiquei os valores e usei o JScrewit Compiler .
Código original:
Código JSFuck:
Embora a codificação física seja mais longa que um gerador de golfe em js normais, os números são (comparativamente; P) facilmente representados em JsFuck.
fonte
302871241912288 bytesGolfe original:
Desvio e Reversão são mais baratos que o Push para uma economia ligeira:
Não cabe! Limite de 30K caracteres! Pastebin aqui.Eu tentei o jsfuck.com, mas isso me deu 62399 bytes.
Após a sugestão de Stefnotch, alterou a compatibilidade apenas para o Chrome e reduziu drasticamente a contagem. JSFuck gerado por jscrew.it :
fonte
12.2851218312069113991125211105 BytesCódigo original:
Após remover o ponto-e-vírgula e substituí-lo por '\ n': (Obrigado Dom Hasting .)
Usando 'concat' em vez de 'push' para salvar alguns bytes:
Código atualizado:
Removendo espaço vazio:
Removendo o espaço vazio após '+':
Código JSFuck:
fonte
falsefalse
efalse0
como os nomes das variáveis em vez det
ef
e\n
é menos caracteres do que;
(de acordo com jscrew.it de qualquer maneira) para que mgiht ser capaz de substituir aqueles para uma poupança também. Se é possível mostrar os primeiros 52 números, 50 também é metade do tamanho de 48 ... Espero que ajude!for(i=0;i<48;)
ef.push
para salvar mais e substituir os nomes das variáveis definitivamente salvará algunsf
=(![]+[])[+[]]
vs.falsefalse
=![]+[![]]
ei
=([![]]+[][[]])[+!![]+[+[]]]
vs.false0
=![]+[+[]]
.concat
foi a única outra maneira que pude ver para ajudar a reduzir esse método também!Firefox, 7446 bytes
Fonte:
fonte
14.097 bytes
Primeira vez que você faz um desses códigos ou codifica neste idioma, então voltarei para ver se consigo diminuí-lo
Código original:
Código JSFuck:
fonte