Inspirado por essa pergunta , seu objetivo hoje é codificar um URL no cérebro.
Meu navegador foi invadido! A barra de localização foi transformada em um intérprete cerebral. Eu preciso de um programa que transforme uma URL em um programa de foda cerebral. Meu computador também é muito lento, por isso, se o programa brainfuck for pequeno, é melhor.
Ah, e só tenho uma aba de trabalho aberta, meu twitter. Então você só pode me enviar o programa em um tweet.
Escreva um programa que caiba em um tweet (140 caracteres) em qualquer idioma que use uma string como entrada e produza um programa de foda cerebral.
Este programa brainfuck será executado sem entrada e irá gerar uma saída.
Esta saída será inserida na barra de localização do Google Chrome e executada.
Se o comportamento do Google Chrome for idêntico ao que você obteria inserindo a sequência de entrada do número 1, a solução será válida. O redirecionamento por encurtadores de URL é considerado um comportamento diferente - permaneça pelo menos no mesmo domínio.
Você pode presumir que o intérprete de cérebro com números infinitos assinados com precisão infinita em cada célula e uma quantidade ilimitada de células.
Sua pontuação é determinada pela soma dos comprimentos dos programas de troca de cérebro gerados para codificar o seguinte conjunto de URLs:
https://www.google.com/
/codegolf/47895/
http://www.golfscript.com/golfscript/examples.html
http://en.wikipedia.org/wiki/Percent-encoding
ftp://ftp.freebsd.org/pub/FreeBSD/
https://github.com/isaacg1/pyth/blob/master/doc.txt#L92
http://ftp.gnu.org/non-gnu/nethack/nethack-3.4.0.tar.gz.back-RSN.README
Menor pontuação ganha.
http://www.google.com/
ou será simplesmentegoogle.com
? (Ambos são válidos na medida em que o Google Chrome está em causa, mas a sua lista contém apenas os formulários completos) PS Eu quase tenho um desejo de escrever uma extensão para o Chrome que faz isso ...http://www.google.com/
do programa brainfuck que produz saída podegoogle.com
,www.google.com
, etc, porque todos eles resultam na mesma página. Mas, por exemplo,ftp://ftp.freebsd.org/pub/FreeBSD/
não é o mesmo queftp.freebsd.org/pub/FreeBSD/
.ftp://ftp.freebsd.org/pub/FreeBSD/
é o mesmo queftp.freebsd.org/pub/FreeBSD/
no Google Chrome. Isso torna o desafio um pouco mais fácil do que eu pretendia, mas a vida é assim. Não vou mudar os requisitos, por isso é seguro retirar tudo antes://
.Respostas:
Pitão - 118 bytes, pontuação: 154 + 567 + 597 + 620 + 530 + 875 + 1092 =
6630662346534435Agora usando o fator de multiplicação algo!
Este é um algoritmo bastante simples, embora um pouco melhor que o anterior.
Eu estava planejando usar o Pyth, mas com o algoritmo atual o Python se encaixa <140 bytes.Primeiro, retira o
http://
usandosplit("//")
ewww.
oe/
no final. Em seguida, ele usa a função min para verificar qual é a melhor das três opções consideradas:+
ou-
para atualizar o valor atual da célula para o valor desejado da célula+
'sEu sempre coloco um
.
para gerar cada caractere.Uma explicação detalhada do novo código está disponível em breve. Eu meio que avaliei o golfe, especialmente a retirada
www.
e/
o final, mas não posso me incomodar, pois estou com 20 bytes abaixo do limite.Surpreendentemente, isso funciona nos
ftp://
URLs, pois esse é o chrome e o chrome transforma automaticamenteftp.freebsd.org/pub/FreeBSD/
emftp://ftp.freebsd.org/pub/FreeBSD/
Planejo usar o dicionário para armazenar os valores das células e verificar se o caractere já foi criado em uma célula.
Extensão Brainfuck Omnibox
Está certo! Depois de ver o comentário do @ BrainSteel, soube que precisava fazê-lo. Isso não assumir todo o omnibox, somente quando você faz bf, tab. Além disso, como a API da omnibox é estranha, ela não me permite encaminhar o código para a omnibox, eu tenho que lidar com isso sozinho. Então, faço minha própria
http://
verificação e defino o URL da guia.Como não estava com vontade de pagar os US $ 5 necessários para colocar sua extensão na loja virtual, vocês terão que instalá-la manualmente. Faça o download do zip aqui: https://drive.google.com/file/d/0B0qkKIzGc0QiNzBzVUJjZkRIZ0k/view?usp=sharing , descompacte, vá para a página de extensões no chrome, clique na caixa de opção do modo dev no canto superior direito e carregue a extensão descompactada.
Espero que vocês gostem! :)
fonte
ftp://
URL.ftp://
. Ah bem.C,
140134132138128139 Bytes263 + 816 + 911 + 955 + 827 + 1355 + 1779 =
72696906 bytesAtualização: 6 bytes a menos, graças ao nutki!
Atualize novamente, 128 bytes. O código é significativamente menos legível. Agora, ele também tenta extrair o URL
ftp://
.Atualize o terceiro, em 139 bytes. O código é um pouco mais legível e se livrou de um comportamento indefinido desagradável. Agora, se o nome do site for precedido por
www.
, ele será removido. Eu tinha menos de 7k, mas acho que devo conceder a Maltysen com Pyth. Bem feito.Desvendou um pouco:
Este código tem um URL na linha de comando, e converte-lo em BF usando apenas
.
,-
e+
. O código faz uma tentativa para tirar a corda doftp://
,http://
,https://
, ewww.
antes de converter a BF. Aqui está uma lista de saídas das saídas:fonte
for(;c-a;a+=c>a,a-=c<a)p(c>a?43:45)
deve funcionar.Brainfuck, 77 bytes, Pontuação = 31647
Pontuação é a soma de
codepoint+4
para cada personagem.(Usa implementação BF com EOF = 0.)
Exemplo:
fonte
JavaScript (ES6) - 137 bytes, pontuação - 7413
Este usa apenas ., +e -. Você pode testá-lo no console do Firefox.
Este é o meu contador de pontuação:
fonte