Inspiré par cette question , votre objectif aujourd'hui est de coder une URL en brainfuck.
Mon navigateur a été piraté! La barre d'emplacement a été transformée en un interprète enculé. J'ai besoin d'un programme qui transforme une URL en un programme de brainfuck. Mon ordinateur est également très lent, donc si le programme brainfuck est petit, c'est mieux.
Oh et je n'ai qu'un seul onglet de travail ouvert, mon twitter. Vous ne pouvez donc m'envoyer le programme que dans un tweet.
Écrivez un programme qui tient dans un tweet (140 caractères) dans n'importe quelle langue qui prend une chaîne en entrée et génère un programme brainfuck.
Ce programme de brainfuck sera exécuté sans entrée et générera une sortie.
Cette sortie sera insérée dans la barre d'emplacement de Google Chrome et exécutée.
Si le comportement de Google Chrome est identique au comportement que vous obtiendriez en saisissant la chaîne d'entrée à partir de # 1, alors la solution est valide. La redirection par raccourcisseurs d'URL est considérée comme un comportement différent - restez au moins sur le même domaine.
Vous pouvez supposer que l'interprète brainfuck a des entiers signés de précision infinie dans chaque cellule et un nombre illimité de cellules.
Votre score est déterminé par la somme des longueurs des programmes brainfuck générés pour coder l'ensemble d'URL suivant:
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
Le plus petit score l'emporte.
http://www.google.com/
ou le sera-t-elle jamais simplementgoogle.com
? (Les deux sont valables en ce qui concerne Google Chrome, mais votre liste ne contient que les formulaires complets) PS J'ai presque envie d'écrire une extension pour chrome qui fait cela ...http://www.google.com/
du programme brainfuck elle produit sortie peutgoogle.com
,www.google.com
, etc, car ils ont tous fait la même page. Mais par exemple, ceftp://ftp.freebsd.org/pub/FreeBSD/
n'est pas la même chose queftp.freebsd.org/pub/FreeBSD/
.ftp://ftp.freebsd.org/pub/FreeBSD/
effet la même chose queftp.freebsd.org/pub/FreeBSD/
dans Google Chrome. Cela rend le défi un peu plus facile que je ne le pensais, mais telle est la vie. Je ne changerai pas les exigences, il est donc sûr de simplement retirer quoi que ce soit avant://
.Réponses:
Pyth - 118 octets, score: 154 + 567 + 597 + 620 + 530 + 875 + 1092 =
6630662346534435Maintenant, en utilisant l'algo de multiplication des facteurs!
Il s'agit d'un algorithme assez simple, bien que légèrement meilleur que les précédents.
Je prévoyais d'utiliser Pyth, mais avec l'algorithme actuel, Python convient à <140 octets.Il enlève d'abord le
http://
en utilisantsplit("//")
et lewww.
et/
à la fin. Il utilise ensuite la fonction min pour vérifier quelle est la meilleure des trois options envisagées:+
ou-
pour mettre à jour la valeur de cellule actuelle à la valeur de cellule souhaitée+
« sJ'ai ensuite toujours mis un
.
pour sortir chaque char.Une explication détaillée du nouveau code sera bientôt disponible. J'ai en quelque sorte à moitié joué au golf, en particulier au
www.
et/
la fin, mais je ne peux pas être dérangé car j'ai 20 octets sous la limite.Cela fonctionne étonnamment sur les
ftp://
urls car il s'agit de chrome et le chrome fait automatiquementftp.freebsd.org/pub/FreeBSD/
transforme enftp://ftp.freebsd.org/pub/FreeBSD/
Je prévois d'utiliser ensuite un dictionnaire pour stocker les valeurs des cellules et voir si le caractère a déjà été créé dans une cellule.
Extension Brainfuck Omnibox
C'est vrai! Après avoir vu le commentaire de @ BrainSteel, j'ai su que je devais le faire. Cela ne prend pas sur toute omnibox, que lorsque vous faites bf, tab. De plus, comme l'api omnibox est bizarre, cela ne me permet pas de transmettre le code à l'omnibox, je dois le gérer moi-même. Je fais donc ma propre
http://
vérification, puis je définis l'URL de l'onglet.Comme je n'ai pas envie de payer les 5 $ nécessaires pour mettre votre extension sur la boutique en ligne, vous devrez l'installer manuellement. Téléchargez simplement le zip à partir d'ici: https://drive.google.com/file/d/0B0qkKIzGc0QiNzBzVUJjZkRIZ0k/view?usp=sharing , décompressez, accédez à la page des extensions en chrome, cliquez sur la case d'option du mode dev en haut à droite et charger l'extension déballée.
J'espère que vous apprécierez! :)
la source
ftp://
URL.ftp://
. Tant pis.C,
140134132138 138128139 Octets263 + 816 + 911 + 955 + 827 + 1355 + 1779 =
72696906 octetsMise à jour: 6 octets de moins, grâce à nutki!
Mettre à jour à nouveau, 128 octets. Le code est nettement moins lisible. Il tente maintenant de supprimer l'URL de
ftp://
.Mettez à jour le troisième, à 139 octets. Le code est un peu plus lisible et s'est débarrassé de certains mauvais comportements indéfinis. Maintenant, si le nom du site est précédé de
www.
, il est supprimé. J'ai moins de 7k, mais je pense que je dois concéder à Maltysen avec Pyth. Bien joué.Démêlé un peu:
Ce code prend une URL à la ligne de commande, et le convertit en BF en utilisant uniquement
.
,-
et+
. Le code fait une tentative pour enlever la chaîne deftp://
,http://
,https://
, etwww.
avant la conversion de BF. Voici une liste des sorties des sorties:la source
for(;c-a;a+=c>a,a-=c<a)p(c>a?43:45)
devrait fonctionner.Brainfuck, 77 octets, score = 31647
Le score est la somme de
codepoint+4
pour chaque personnage.(Utilise l'implémentation BF avec EOF = 0.)
Exemple:
la source
JavaScript (ES6) - 137 octets, score - 7413
Cela utilise uniquement ., +et -. Vous pouvez le tester dans la console Firefox.
Voici mon compteur de score:
la source