Este será um desafio relativamente desafiador ao código-golfe.
Entrada: Qualquer URL, deve ter o protocolo anexado, por exemplo, http://codegolf.stackexchange.com (que será nosso caso de teste)
Saída: um código QR gerado que representa esse URL que, quando verificado por um dispositivo inteligente, leva você a esse URL no navegador do dispositivo inteligente.
Regras para este Código-Golfe
- Como sempre, o menor código vence.
- Não há recursos externos da web, bibliotecas ou plugins para gerar o código para você. Seu código deve calcular a imagem do código QR.
- A saída pode ser apresentada por uma imagem, gerada por HTML5 / CSS3, ou mesmo usando blocos Unicode apropriados, ou se o ASCII da sua plataforma estiver disponível, através de caracteres ASCII que podem formar o código QR (este último é direcionado ao Commodore 64 Basic, Usuários Amiga QBasic, Amstrad Basic, etc), mas deve gerar uma saída de código QR para que eu possa digitalizar o código.
- As entradas do código devem ser seguidas com a saída gerada, por uma captura de tela da saída após a execução do código ou por um link que mostre a saída (o que melhor se adequar à situação)
- Você deve testar seu código com o URL " http://codegolf.stackexchange.com " e relatar a saída de acordo com as Regras 3 a 4.
- Você também deve testar seu código com um URL de sua escolha e relatar a saída de acordo com as Regras 3 a 4.
Referências:
1) http://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders
2) http://www.pclviewer.com/rs2/calculator.html
3) http://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction
4) http://en.wikipedia.org/wiki/QR_code
5) http://www.qrstuff.com/ para inspiração ...;)
code-golf
graphical-output
browser
WallyWest
fonte
fonte
Respostas:
Caracteres do Python 3: 974 [nb]
Para bater ainda mais com o bastão feio, veja o caderno no GH-Gist . O Python 3 possui codificação ASCII-85 embutida, que ajuda com o molho compactado. Os algoritmos de compressão incorporados (LZMA) mais avançados da 3 parecem não funcionar bem com coisas tão pequenas.
O zíper é muito inconstante quanto à mudança de caracteres, quase tentava escrever algo que tentasse aleatoriamente nomes diferentes de uma letra para variáveis para minimizar o tamanho do zíper.
Python 2:
1420 1356 10851077 caracteresEu li o primeiro argumento passado quando chamado, que pode ser uma cadeia de caracteres com até 106 caracteres. A saída é sempre um código QR da versão 5-L e uma máscara 4, o que significa que possui 37x37 módulos grandes e pode suportar apenas ~ 5% de dano.
As únicas dependências do programa são
numpy
(manipulações de matriz) ematplotlib
(somente exibição); toda a codificação Reed-Solomon, empacotamento de dados e layout do módulo são manipulados dentro do código fornecido . Para o RS, basicamente roubei as funções da Wikiversidade ... ainda é uma espécie de caixa preta para mim. De qualquer forma, aprendi muito sobre o QR.Aqui está o código antes de eu vencê-lo com o bastão feio:
Depois de:
(contando com uma guia para contar como 4/8 / qualquer número de espaços> = 2., não tenho certeza de quão bem ele será copiado)
Por ser tão longo, podemos compactá-lo (vi alguém fazer isso em outro lugar, esqueceu quem :() para salvar mais alguns personagens, diminuindo o total para
10851077, porquepylab
é imundo:Se você substituir a última linha pela seguinte (ela adiciona 62 caracteres), obtém uma saída quase perfeita, mas a outra ainda digitaliza, o que for.
fonte
struct
chamada e alguns pouco desnecessária empurrando por apenas truncar o meu 'string mestre' ...