Escriba un programa que se conecte a este sitio, descargue la respuesta en la que está publicado, extraiga su propio código fuente y lo imprima. La salida debe ser idéntica al código fuente. El código más corto (en bytes) gana.
Reglas:
- No se permiten acortadores de URL.
- La respuesta debe tener un formato regular: un encabezado con el nombre y tamaño del idioma, descripción opcional, bloque de código, descripción opcional y explicación. No se permiten delimitadores no naturales.
- El resultado debe originarse en el bloque de código real publicado en el sitio.
- La funcionalidad no debe depender de la posición en la lista de respuestas; debería funcionar incluso si hay varias páginas y la respuesta no está en la primera.
- Nuevo: nota especial para las respuestas que se supone que deben ejecutarse en un navegador: está bien exigir que se ejecuten en el dominio codegolf (para obedecer la política del mismo origen), pero el dominio y la ruta deben incluirse en la solución para hazlo justo.
code-golf
quine
internet
self-referential
aditsu
fuente
fuente
Respuestas:
Bash + coreutils + navegador Lynx, 61 bytes
Gracias a @FDinoff por los consejos:
fuente
codegolf.stackexchange.com/posts/28164/body
E ignora los comentarios. También creo que está dentro de las reglas que puedes usarlo ...Rubí,
15518619514813811097 caracteresTuve que hacerlo una línea, porque de lo contrario, generaría nuevas líneas como en
\n
lugar de nuevas líneas reales.+31 caracteres porque no noté que algunos personajes se estaban escapando.+9 personajes para deshacerte de la molesta barra invertida.La explicación
Vamos a embellecer esto un poco primero. Sin embargo, voy a tener que usar una notación algo ... interesante en este código. No puedo usar punto y coma en absoluto en esta publicación, por razones explicadas más adelante, por lo que usaré
{SEMI}
en lugar de punto y coma.Muy bien, ahora pasemos por esto. Las primeras dos líneas se explican por sí mismas: obtienen el texto HTML de esta respuesta.
Ahora, la última línea es la interesante aquí. ¿Ves ese punto y coma aparentemente inútil al final del código? Es absolutamente necesario, y he aquí por qué.
Primero,
resp.match
extrae el código a imprimir. La expresión regular se utiliza para esto es el truco:/req.+{SEMI}/
. Toma el inicio del códigoREQuire'net/http'
, al buscarreq
(re
tomaría miREputation
). Luego, encuentra el final del código buscando un punto y coma. Como+
es codicioso por defecto, continuará hasta que encuentre el punto y coma que significa el final del código. ¿Ves por qué ya no puedo usar punto y coma?Después de eso, no tengo que escapar de nada gracias a la solución de Ventero de no usarYa no hay necesidad de esto debido a la nueva URL. ¡Después de eso, el código original ha sido recuperado! (Nota: tampoco puedo usar el ampersand, porque eso se codifica en HTML, lo que hace que se cree un punto y coma).\
más. Todo lo que tengo que hacer es arreglar el{AMPERSAND}
cambio{AMPERSAND}amp{SEMI}
, lo que se puede lograr simplemente quitando laamp{SEMI}
pieza.fuente
puts
; se podría arreglar conprint
pero meh. Solo finja que hay una nueva línea final en el código, aunque SE no podrá mostrarlo.http://codegolf.stackexchange.com/a/28159
daría el mismo resultado que el suyo y ahorraría algunos caracteres.PowerShell -
6962fuente
irm
es el aliasInvoke-RestMethod
y se introdujo con PowerShell v3 core. computerperformance.co.uk/powershell/powershell3-alias.htmJavaScript -
1231221019592918786114Se ejecuta en la consola de su navegador web en esta página. Probado en los últimos Chrome
y Firefox.editar: +28 bytes para agregar el dominio completo.
A Firefox ya no le gusta mi truco de URL de Regex con esta actualización :(
Aquí está la solución de 86 bytes que rompe las reglas:
fuente
codegolf.stackexchange.com/
a la URL.Ruby + wget +
gunzip,159868271Usando la punta de @FDinoff para usar
http://codegolf.stackexchange.com/posts/28173/body
.Probado Gracias a @ace y @Bob por la optimización de la línea de comandos.
fuente
wget
, como enwget -qO- url
. Además, en bash no necesita las comillas dobles para la URL, por lo que esto también puede funcionar para usted.http://
.CJam - 53
Estoy haciendo este wiki de la comunidad ya que estoy respondiendo mi propia pregunta y realmente no quiero competir: p
Créditos a FDinoff para la elección de URL.
fuente
);
no me parece muy sonriente ...Rebmu, 91 caracteres
Debido al Catch-22, tengo que publicar para obtener la URL de esta respuesta. :-/ Ok, lo tengo.Rebmu es un dialecto de Rebol, y puedes leer todo sobre él . El Rebol equivalente aquí sería:
PARSE de Rebol es una especie de respuesta altamente alfabetizada a RegEx. Comienza una posición de analizador de la entrada (que puede ser cualquier serie, incluidos bloques estructurales ... datos binarios ... o tipos de cadena) . Las reglas son un lenguaje sobre cómo se mueve la posición de análisis.
Las etiquetas y las URL son realmente solo cadenas debajo del capó en el idioma. Pero tienen "sabor", y como Rebol se escribe dinámicamente, puede verificar ese tipo. READ, por ejemplo, sabe que si le da una cadena con sabor a URL, debe enviarla a un controlador de esquema para que realice la lectura. (En este caso, el registrado para HTTP). Obtiene los bytes UTF-8 de forma predeterminada, por lo que usamos to-string para decodificar eso y obtener una serie de puntos de código en una cadena Unicode normal.
En el caso del dialecto de análisis, encontrar un tipo de etiqueta solo coincide como si fuera una cadena que se parecía a la etiqueta. THRU es una instrucción que significa "omitir hasta que coincida la regla resultante, y luego colocar la posición de coincidencia al final de lo que acaba de coincidir". (TO es el análogo que coincide, pero deja la posición de análisis antes del elemento).
Así que corremos más allá del
<a name="28154">
. Luego pasamos rápidamente a la siguiente aparición de<code>
, con nuestra posición de análisis ahora ubicada justo después de>
. El comando COPY de PARSE nos permite copiar datos a otra regla, en este caso esa regla es[TO </code>]
... así que ingresamos a la variable C todo hasta justo antes de eso<
.Genial , ¿eh? :-)
Técnicamente, podría ahorrar más, por ejemplo, al buscar
TO "</"
y eso ahorra tres caracteres: no hay necesidad de hacer coincidir toda la</code>
etiqueta final cuando</
lo haría. Argumentos similares podrían hacerse para la etiqueta de inicio. Pero Rebmu tiene que ver con el golf alfabetizado ... ¡aunque parezca extraño al principio!ACTUALIZACIÓN : el
/body
truco está fuera de la bolsa, pero igualmente lo dejaré como está ... porque creo que es más educativo de esta manera.fuente
Java ahora 634, 852, era 1004
El código ha sido actualizado; Gracias por las sugerencias. Golfizado: ahora reemplaza & gt con>
Sometiéndome a prueba, lo editaré e intentaré jugar golf en breve. Necesitaba cambiar x> 1 a x> 2 porque la cadena de prueba también está en mi código. Nota: El código de golf reemplaza> símbolo a & gt.
fuente
//bacchus
?*
importaciones para guardar una gran cantidad de código.throws Exception
lugar de tratar de manejar cualquier cosa. Además, creo que usar un escáner en lugar de un BufferedReader sería más simple, especialmente porque podría establecer el delimitador//bacchus
, lo que facilitaría las cosas ...Python,
175167 bytesEsto usa dos bibliotecas externas; No leí que no estaba autorizado.
Código más largo pero más bonito:
fuente
questions
en la url se puede reemplazar conq
:http://codegolf.stackexchange.com/q/28154
bs4, requests
(línea 1) se puede eliminar para reducir 1 byte.JavaScript, 228
Se ejecuta en esta página.
fuente
if(this.readyState == this.DONE)
función dentro.Haskell,
563613bytesProbado Tiene soporte de página a través de la función "publicaciones más antiguas". Utiliza una estructura de línea de quine para encontrar qué imprimir. El
import Control.Monad
es solo porque se>>=
genera>
en HTML.fuente
Javascript + jQuery,
87, 67No estoy seguro de si puedo usar jQuery, pero:
Javascript + jQuery, si se supera en esta página:
27, 25Por diversión, si se superaría aquí:
$('[id$=28268] pre').html()
fuente
$('body').load('//codegolf.stackexchange.com/posts/28268/body pre')
w3m 45 caracteres
fuente
Dart, 164
Pensé que probaría esto en Dart, es bastante divertido de usar imo.
Esto se puede ejecutar en la consola en DartEditor, pero requiere el paquete http agregado en pubspec.yaml
Versión sin golf:
fuente
R 114 caracteres
No hay magia real aquí: toma el valor del campo entre las etiquetas html
<code></code>
. Utiliza la bibliotecaXML
(como se puede ver en el código, obviamente). Emite el resultado como stdout.fuente
Java,
300294Una versión mejorada de la respuesta de bacchusbeale que:
Scanner
para evitar tener que pasar por la entradaActualizado:
<code>[...]</code>
como delimitador para buscar (en realidad usando la expresión regular "./?[cfont>ode\W", para evitar tener que decodificar<
y>
- la "\ W" es necesaria en lugar de la más corta "." para evitar que una parte de la URL coincida con la publicación, desafortunadamente, que cuesta 2 caracteres, y los corchetes alrededor de c evitan que la expresión regular coincida).fuente
w3m 55 bytes
Basado en @DigitalTrauma
fuente
Rubí,
237215146132fuente
Procesamiento, 90
Editar: ¡ Finalmente lo tengo!
fuente
bash + awk, 71 bytes
fuente
http://
.Javascript, 138
Esto funciona suponiendo que la página se cargue en menos de 99 ms. También debe ejecutarse a través de una consola abierta en una página codegolf.SE, debido a la misma política de origen.
fuente
http://codegolf.stackexchange.com/a/28160
lugar dehttp://codegolf.stackexchange.com/a/28160/12551
Perl 5.10,
155127122117 bytesUtilizando
XML::LibXML
.fuente
Shell y xmllint, 82 bytes
fuente
Pitón, 164
Funciona extrayendo el texto entre las etiquetas de código. Es bastante largo, pero siempre funcionará correctamente a menos que la página html se edite directamente o se agregue un nuevo bloque de código antes del siguiente (tener un bloque de código después no debería tener ningún efecto en la salida del programa).
fuente