A recompensa acabou, o desenvolvedor php vence com Game of Life de Conway
Hoje, a plataforma da Web está avançando rapidamente. Características como animações CSS3 , transforma , sombras e gradientes , <canvas>
, <audio>
e <video>
tags, SVG , WebGL , e muitos mais significa que você pode fazer muito mais no browser, e em muito menos código, do que nunca. Obviamente, muitos desenvolvedores não conseguem usar esses novos recursos, porque os sites e aplicativos em que trabalham precisam ser compatíveis com os navegadores antigos, como o IE6.
Então, o que acontece se você tirar o cinto? Permita-se usar todos e quaisquer novos recursos que você gosta? Viva um pouco, enlouqueça, use recursos estranhos que apenas 1% dos usuários poderão tirar proveito?
Obviamente, com recursos ilimitados e a capacidade de conversar com um servidor, você pode fazer todo tipo de coisa - carregar megabytes de código, bibliotecas e vídeos etc. - mas os desafios não são muito interessantes sem restrições. A principal restrição para este concurso é: o que você pode fazer em um único URI de 4k, independente e independentedata:
? Independente significa que não deve se referir a nenhum recurso externo, conectar-se a qualquer servidor usando WebSockets ou XHR ou qualquer coisa do tipo. Se você deseja incorporar recursos como PNGs ou MP3s, sinta-se à vontade para incluir URIs de dados em seus URIs de dados ou crie outra maneira inteligente de incorporar sub-recursos. 4k significa 4096 bytes, texto ASCII codificado corretamente em URI (você pode usar um URI de dados codificados em base64, se preferir, para evitar a codificação de URI, mas geralmente o texto codificado em URI será menor que o base64 para texto sem formatação).
Para inspirar, o tema do concurso é memes do StackOverflow . Crie um jogo de justos de unicórnios, um gerador de fatos Jon Skeet, um programa de desenho baseado em círculos à mão livre ou qualquer coisa a ver com um dos populares memes StackOverflow e meta.so.
Eu incentivaria entradas interativas de alguma maneira; não apenas uma animação simples ou uma imagem estática, eles devem responder à entrada do usuário, seja através de eventos, passagem do cursor do mouse, rolagem, redimensionamento da janela do navegador ou de qualquer outra maneira que você possa imaginar. Este não é um requisito difícil, no entanto; grandes demonstrações que não são interativas serão consideradas, embora a interatividade seja a preferida.
Sua entrada deve ser executada em pelo menos uma versão pública de pelo menos um dos cinco principais navegadores (IE, Firefox, Chrome, Safari, Opera). Somente liberações de linha principal (não compiladas a partir de ramificações ou compilações que exigem correções), sem configurações especiais, plug-ins ou qualquer outra coisa que não vem com o navegador de ações são permitidas. Compilações noturnas, betas e candidatos a lançamento são bons. Especifique em sua entrada com quais navegadores você testou sua entrada. Não há limitações sobre quais tecnologias você pode usar dentro dessas restrições; você pode fazer uma animação SVG pura, uma animação CSS pura, algo em JavaScript usando WebGL ou heck, até algo que use XML e XSLT se isso lhe agradar. Se você pode transformá-lo em um URI de dados válido, sem dependências externas, e obter um navegador para executá-lo, é um jogo justo.
To add to the competition here, on Monday, March 21, I will open a bounty on this question. How can I afford a bounty when I have only 101 rep? Well, all rep I gain from upvotes to this question between now and Monday will go into the bounty (up to the limit of 500 allowed for a single bounty; it would be pretty hard for me to hit that limit, though, given the rep cap). Entries will be accepted for 6 days after that; all entries must be in at least 24 hours before the bounty expires, to give me time to check them all out and evaluate them. At that point, I will accept the highest voted answer, and give the bounty to my favorite answer (which may or may not be the same as the highest voted). My criteria for awarding the bounty will include beauty, fun, clever technique, interesting use of new features, interactivity, and size. People should vote based on any criteria they want, as long as the entries meet the rules.
Aqui estão algumas fontes de inspiração para você começar:
- Experiências do Chrome , uma coleção de demonstrações da moderna plataforma da web
- Mozilla Hacks , um blog sobre a moderna plataforma web com muitas demos de novos recursos no Firefox 4
- JS1k , um concurso para demonstrações de 1k em JavaScript
- 10k Apart , um webapp no concurso 10k
- gl64k , um concurso de demonstração atualmente em execução para demonstrações de 64k WebGL
- Shader Toy , um conjunto de demos sobre o que você pode fazer com os shaders WebGL
Formato para entradas:
Nome da entrada
data: text / html, Your% 20data% 20URIFunciona no Firefox 4 RC, Chrome 10 e Opera 11
Descrição da sua entrada; o que faz, por que é legal, que técnicas inteligentes você usou.
<script> // code in expanded form to more easily see how it works </script>
Quaisquer créditos para inspirações, qualquer código que você possa ter emprestado, etc.
(StackExchange parece não aceitar URIs de dados em links, portanto, você precisará incorporá-lo diretamente em uma <pre>
tag)
fonte
Respostas:
SO meme: Tudo é um meme
Jogo da vida de Conway, HTML5 + CSS3 + JS,
3.5433.5613.555 bytesEste é o jogo da vida de Conway, escrito por mim mesmo para HTML5 com canvas e CSS3. Escrevi por diversão durante o período da competição 10K Apart, mas não a enviei para a competição.
A versão codificada em Base64 abrange mais de 4,61 KB de dados, enquanto a versão original é ~ 3543 bytes.
Para compactar o tamanho : código Javascript minificado pelo compressor on-line da YUI e depois pelo empacotador de Dean Edwards . Código CSS reduzido pelo compressor online YUI .
Usa a biblioteca jQuery da Biblioteca da API do Google.HTML5 e CSS3 válidos (versão experimental do validador w3).Jogar:
<Start>
para executar a simulação,<Stop>
pausar e<Next>
mostrar o próximo passoA versão legível por humanos (os robôs devem morrer):
Uma aula de história:
fonte
/>
sequências que poderão ser substituídas,>
pois você não está escrevendo XHTML. Além disso, lembre-se de codificar corretamente o resultado com URI; Embora os navegadores possam aceitar espaços nos URIs, eles não são tecnicamente válidos.<html>
,<head>
e<body>
tags (nem suas marcas de fechamento). Eles estão implícitos em HTML e serão adicionados nos locais apropriados pelo navegador.Desculpe desenterrar um tópico antigo, mas vi esse desafio na barra lateral e simplesmente não pude resistir. Não me importo que o desafio tenha acabado, foi divertido descobrir alguma coisa.
Talvez possamos ter outra rodada?
Enfim, minha submissão:
Editar
Desculpe desenterrar isso de novo , mas estava me incomodando há anos que eu não conseguia isso com menos de 1 KB. Agora eu consegui!
Cubo sombreado interativo:
960
987 1082 1156 1182 1667 1587bytes !, HTML + CSS3 + JSMova o mouse.
Funciona no Chrome (18.algo, mas deve funcionar nos mais recentes).
Joguei muito bem isso, salvei alguns personagens usando um truque que achei bem legal: digamos que você tenha o seguinte:
caracteres podem ser salvos retornando a função dentro de si e fazendo o seguinte:
A economia depende de quantas chamadas de função você possui. Isso provavelmente é melhor para ofuscação do que para golfe.
Também salvei um personagem substituindo
1000
por1e4
, dando àMath
classe e algumas de suas funções aliases. Usando variáveis para seqüências de caracteres repetidas (é bastante difícil encontrar algumas dessas opções). Além disso, eu tinha a palavrastyle
no meu código algumas vezes; alguns deles eram strings e outros eram identificadores comoelement.style.whatever
. Atribuir a string a uma variável (D='style
) me permitiu substituir as strings porD
e substituir os identificadores dessa maneiraelement[D].whatever
.Última edição: desculpe trazer um comp antigo, mas algumas idéias de como encurtar isso vieram até mim!
fonte
onmousemove
poderia ser modificado:onmousemove=function(e){U=K-e.pageX;J=e.pageY-K};
. Dessa forma, o cubo irá rolar em direção ao ponteiro do mouse (mais intuitivo).function g(x){alert("hello "+x+"!");return g} g("dave")("martin")("alice")("rose")("bob")("helen")("jo");
pode se tornarg=x=>alert("hello "+x+"!"),g;g("dave")("martin")("alice")("rose")("bob")("helen")("jo");
JavaScript 489 chars
Isso joga Adivinha um jogo de números.
Eu trabalhei com este código:
fonte