Inspirado por esta pregunta , su objetivo hoy es codificar una URL en brainfuck.
¡Mi navegador ha sido pirateado! La barra de ubicación se ha convertido en un intérprete loco. Necesito un programa que convierta una URL en un programa mental. Mi computadora también es muy lenta, por lo que si el programa Brainfuck es pequeño, es mejor.
Ah, y solo tengo una pestaña de trabajo abierta, mi twitter. Así que solo puedes enviarme el programa en un tweet.
Escriba un programa que se ajuste a un tweet (140 caracteres) en cualquier idioma que tome una cadena como entrada y genere un programa de brainfuck.
Este programa brainfuck se ejecutará sin entrada y generará una salida.
Este resultado se insertará en la barra de ubicación de Google Chrome y se ejecutará.
Si el comportamiento de Google Chrome es idéntico al comportamiento que obtendría al ingresar la cadena de entrada del # 1, entonces la solución es válida. La redirección por acortadores de URL se considera un comportamiento diferente: permanezca al menos en el mismo dominio.
Puede suponer que el intérprete de brainfuck tiene enteros con infinitos signos de precisión en cada celda y una cantidad ilimitada de celdas.
Su puntaje está determinado por la suma de las longitudes de los programas de brainfuck generados para codificar el siguiente conjunto de URL:
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
El puntaje más pequeño gana.
http://www.google.com/
o alguna vez será simplementegoogle.com
? (Ambos son válidos en lo que respecta a Google Chrome, pero su lista solo contiene los formularios completos) PD: Casi deseo escribir una extensión para Chrome que haga esto ...http://www.google.com/
del programa brainfuck produce una salida de mayogoogle.com
,www.google.com
, etc, ya que todo el resultado en la misma página. Pero, por ejemplo,ftp://ftp.freebsd.org/pub/FreeBSD/
no es lo mismo queftp.freebsd.org/pub/FreeBSD/
.ftp://ftp.freebsd.org/pub/FreeBSD/
es lo mismo queftp.freebsd.org/pub/FreeBSD/
en Google Chrome. Esto hace que el desafío sea un poco más fácil de lo que pretendía, pero así es la vida. No cambiaré los requisitos, por lo que es seguro quitarse cualquier cosa antes://
.Respuestas:
Pyth - 118 bytes, puntuación: 154 + 567 + 597 + 620 + 530 + 875 + 1092 =
6630662346534435¡Ahora usando el factor de multiplicación algo!
Este es un algoritmo bastante simple, aunque un poco mejor que los anteriores.
Estaba planeando usar Pyth, pero con el algoritmo actual Python se ajusta a <140 bytes.Primero elimina el
http://
mediante el usosplit("//")
y elwww.
y/
al final. Luego usa la función min para verificar cuál es la mejor de las tres opciones que se consideran:+
o-
para actualizar el valor de celda actual al valor de celda deseado+
'sEntonces siempre pongo un
.
para dar salida a cada char.Próximamente se ofrecerá una explicación detallada del nuevo código. De alguna manera, le di media vuelta al golf, especialmente al despojarlo
www.
y/
al final, pero no me molestan ya que tengo 20 bytes por debajo del límite.Esto sorprendentemente funciona en las
ftp://
URL, ya que es cromo y el cromo se convierte automáticamenteftp.freebsd.org/pub/FreeBSD/
enftp://ftp.freebsd.org/pub/FreeBSD/
Luego planeo usar un diccionario para almacenar los valores de las celdas y ver si el carácter ya está hecho en una celda.
Brainfuck Omnibox Extension
¡Así es! Después de ver el comentario de @ BrainSteel, supe que tenía que hacerlo. Esto no quiere hacerse cargo de la totalidad del cuadro multifunción, sólo cuando lo hace bf, tab. Además, dado que la api del omnibox es extraña, no me permite reenviar el código al omnibox, tengo que manejarlo yo mismo. Entonces hago mi propia
http://
comprobación y luego configuro la URL de la pestaña.Como no tenía ganas de pagar los $ 5 necesarios para poner su extensión en la tienda web, tendrán que instalarla manualmente. Simplemente descargue el zip desde aquí: https://drive.google.com/file/d/0B0qkKIzGc0QiNzBzVUJjZkRIZ0k/view?usp=sharing , descomprima, vaya a la página de extensiones en Chrome, haga clic en el cuadro de opción de modo de desarrollo en la parte superior derecha y cargar la extensión desempaquetada.
¡Espero que lo disfruten! :)
fuente
ftp://
URL.ftp://
. Oh bien.C,
140134132138128139 Bytes263 + 816 + 911 + 955 + 827 + 1355 + 1779 =
72696906 bytesActualización: 6 bytes menos, ¡gracias a nutki!
Actualice nuevamente, 128 bytes. El código es significativamente menos legible. Ahora también intenta eliminar la URL de
ftp://
.Actualice el tercero, a 139 bytes. El código es un poco más legible y eliminó un comportamiento indefinido desagradable. Ahora, si el nombre del sitio está precedido por
www.
, se elimina. Tengo menos de 7k, pero creo que debo cederle a Maltysen con Pyth. Bien hecho.Desenredado un poco:
Este código toma una dirección URL en la línea de comandos, y la convierte en BF utilizando únicamente
.
,-
y+
. El código hace un intento de despojar a la cadena deftp://
,http://
,https://
, ywww.
antes de convertirse al BF. Aquí hay una lista de salidas de las salidas:fuente
for(;c-a;a+=c>a,a-=c<a)p(c>a?43:45)
debería funcionar.Brainfuck, 77 bytes, Puntuación = 31647
La puntuación es la suma de
codepoint+4
cada personaje.(Utiliza la implementación BF con EOF = 0.)
Ejemplo:
fuente
JavaScript (ES6) - 137 bytes, puntaje - 7413
Esto solo usa ., +y -. Puedes probarlo en la consola de Firefox.
Este es mi contador de puntaje:
fuente