(com base neste post e na discussão subsequente sobre bate-papo - também, muito obrigado a Dennis pelo TIO!)
O desafio
Escolha um idioma atualmente disponível no site TryItOnline , por exemplo, PowerShell . Escreva o código nesse idioma nessa página, que não receba nenhuma entrada, de modo que, quando o botão Executar for clicado, a saída nessa página seja exatamente igual à do campo "URL simples" quando o botão Salvar / armazenar botão é clicado.
Para um exemplo fictício, suponha que esse aaa
seja o código para uma solução para isso no PowerShell. Em seguida, o resultado de clicar em Executar com aaa
como código https://tio.run/#powershell
deve ser exibido https://tio.run/##K8gvTy0qzkjNyfn/PzEx8f9/AA
, que também é o campo "URL simples" quando o botão Salvar / Armazenar é clicado.
Pontuação
O URL resultante é a sua submissão a este desafio. O vencedor é o URL mais curto medido em bytes. Para o exemplo acima, a URL https://tio.run/##K8gvTy0qzkjNyfn/PzEx8f9/AA
é o envio para o desafio, em 44 bytes . O URL mais curto que cumpre o restante deste desafio vence o desafio e ganha pontos brownie (pontos não resgatáveis). Dado que existe um comprimento mínimo possível distinto, se dois envios tiverem o mesmo comprimento, o envio anterior vence.
Geração de URL
Este é o início do algoritmo de geração de URL no repositório. Você pode ver como a área principal do código é ocupada, quaisquer elementos extras são acrescentados, a string é desinflada e Base64 convertida e, em seguida ##
, anexada , etc. Não vou entrar em detalhes aqui; parte do desafio é analisar e entender como os URLs são gerados, a fim de explorar quaisquer peculiaridades em potencial no referido algoritmo.
Regras / Esclarecimentos
- O código real não deve receber entrada e produzir apenas o URL quine como saída.
- Isso significa que os únicos campos de texto que deve ser preenchido Ao clicar na URL são osCode
,Header
,Footer
ou correspondentes campos "Bandeira Compiler"; os camposInput
eArguments
são proibidos e devem permanecer vazios / sem uso. Clicar no botão Executar deve alterar apenas oOutput
campo. Para esse desafio, oDebug
campo é ignorado em todas as situações. - Regras usuais de quine se aplicam ao código na medida do possível (por exemplo, o código não pode ler seu próprio código-fonte via
.code.tio
). - Inclua uma descrição de como o código funciona no seu envio.
- Enviar um quine "barato" enviando uma solicitação pull do Git ao repositório TIO para criar um URL ou "atalho" de truque "ou algo semelhante não é permitido.
- Da mesma forma, não é permitido enviar uma solicitação pull para atualizar um idioma específico para produzir um URL de "truque".
- Por favor, seja gentil com os servidores de Dennis e não os abuse ou tente explorar por causa desse desafio.
fonte
https://tio.run/##a+a
que liga para um programa que saídashttps://tio.run/##a+a
, é válida mesmo duro o link gerado pelasaveState
teria sidohttps://tio.run/##a@a
Respostas:
Python 2 , comprimento da URL = 170 bytes
Experimente online!
Isso se baseia em três coincidências:
=
caractere de preenchimento.+
caractere.fonte
Bash ,
174166165157 bytesIsso codifica o seguinte programa Bash.
Experimente online!
Obrigado a @ jimmy23013 por jogar 8 bytes de fora da minha abordagem original, por uma abordagem que salvou outro byte e por jogar mais 8 bytes dessa abordagem!
fonte
base64 | tr -d \\n
no meu terminal ... Obrigado!Pitão , comprimento do URL = 134 bytes
Código:
Experimente online!
Usa o zlib builtin (
.Z
) do Pyth e uma implementação embutida de base64.Como funciona
O estágio externo:
O estágio interno, obtido substituindo o espaço em branco na cadeia de caracteres
J
por aspas duplas:(Pena que o campo "Entrada" não seja permitido, ou eu teria uma solução de 118 bytes .)
fonte
PowerShell, 274 bytes
Tudo graças ao seguinte snippet:
Experimente online!
fonte
JavaScript (Node.js) , 214 bytes
Experimente online!
fonte