(basé sur ce post et la discussion qui a suivi sur le chat - également, merci beaucoup à Dennis pour TIO!)
Le défi
Choisissez une langue actuellement disponible sur le site TryItOnline , par exemple PowerShell . Écrivez du code dans cette langue sur cette page, sans aucune saisie. Par exemple, lorsque vous cliquez sur le bouton Exécuter , la sortie de cette page est exactement la même que celle du champ "URL simple" lorsque vous cliquez sur Enregistrer / Enregistrer. le bouton est cliqué à la place.
Pour un exemple fictif, supposons qu'il s'agisse aaa
du code d'une solution à cela dans PowerShell. Ensuite, le résultat de cliquer sur Exécuter avec aaa
comme code sur https://tio.run/#powershell
doit sortir https://tio.run/##K8gvTy0qzkjNyfn/PzEx8f9/AA
, qui est également le champ "URL simple" lorsque le bouton Enregistrer / Enregistrer est cliqué.
Notation
L' URL résultante est votre soumission à ce défi. Le gagnant est l'URL la plus courte mesurée en octets. Pour l'exemple ci-dessus, l'URL https://tio.run/##K8gvTy0qzkjNyfn/PzEx8f9/AA
est la soumission au défi, à 44 octets . L'URL la plus courte qui remplit le reste de ce défi remporte le défi et gagne des points brownie (points non échangeables). Étant donné qu'il existe une longueur minimale possible distincte, si deux soumissions sont égales, la soumission la plus ancienne l'emporte.
Génération d'URL
C’est le début de l’algorithme de génération d’URL dans le référentiel. Vous pouvez voir comment la zone de code principale est prise, tous les éléments supplémentaires sont ajoutés, la chaîne est dégonflée et convertie en Base64, puis ##
ajoutée au début, etc. Je n'entrerai pas dans les détails ici; Une partie du défi consiste à analyser et à comprendre comment les URL sont générées afin d'exploiter les bizarreries potentielles dans ledit algorithme.
Règles / Clarifications
- Le code réel ne doit prendre aucune entrée et produire uniquement l'URL quine en sortie.
- Cela signifie que les seuls champs de texte qui doit être rempli lorsque vous cliquez dans l'URL sontCode
,Header
,Footer
ou champs correspondants « Drapeau du compilateur »; les champsInput
etArguments
sont interdits et doivent rester vides / non utilisés. Cliquer sur le bouton Exécuter ne devrait changer que leOutput
champ. Pour ce défi, leDebug
champ est ignoré dans toutes les situations. - Les règles quine habituelles s'appliquent au code dans la mesure du possible (par exemple, le code ne peut pas lire son propre code source via
.code.tio
). - Veuillez inclure une description du fonctionnement du code dans votre soumission.
- Il est interdit de soumettre une requête "cheaty" en soumettant une requête Git Pull au référentiel TIO afin de créer une URL "astuce", un raccourci ou autre.
- De même, l'envoi d'une demande d'extraction pour mettre à jour une langue particulière afin de générer une URL "astuce" n'est pas autorisé.
- S'il vous plaît, soyez gentil avec les serveurs de Dennis et ne les abusez pas et ne tentez pas d'exploiter au nom de ce défi.
la source
https://tio.run/##a+a
correspond à un programme quihttps://tio.run/##a+a
génère des résultats , est-il valable même si le lien généré parsaveState
aurait étéhttps://tio.run/##a@a
Réponses:
Python 2 , longueur de l'URL = 170 octets
Essayez-le en ligne!
Cela repose sur trois coïncidences:
=
caractère de remplissage.+
caractère.la source
Bash ,
174166165157 octetsCeci code le programme Bash suivant.
Essayez-le en ligne!
Merci à @ jimmy23013 pour avoir joué 8 octets sur mon approche originale, pour une approche qui a économisé un octet supplémentaire, et pour jouer au golf pour 8 autres octets sur cette approche!
la source
base64 | tr -d \\n
dans mon terminal ... Merci!Pyth , longueur de l'URL = 134 octets
Code:
Essayez-le en ligne!
Utilise la bibliothèque intégrée zlib de Pyth (
.Z
) et une implémentation en ligne de base64.Comment ça fonctionne
La scène extérieure:
L'étape interne, obtenue en remplaçant les espaces dans la chaîne
J
par des guillemets:(C'est dommage que le champ "Entrée" ne soit pas autorisé ou j'aurais une solution de 118 octets .)
la source
PowerShell, 274 octets
Tout cela grâce à l'extrait suivant:
Essayez-le en ligne!
la source
JavaScript (Node.js) , 214 octets
Essayez-le en ligne!
la source