Ecrivez un programme qui se connecte à ce site, télécharge la réponse même dans laquelle il est posté, extrait son propre code source et l’imprime. La sortie doit être identique au code source. Le code le plus court (en octets) l'emporte.
Règles:
- Aucun raccourcisseur d'URL autorisé.
- La réponse doit avoir un format standard - un en-tête avec le nom et la taille de la langue, une description facultative, un bloc de code, une description facultative et une explication. Aucun délimiteur non naturel n'est autorisé.
- La sortie doit provenir du bloc de code affiché sur le site.
- La fonctionnalité ne doit pas dépendre de la position dans la liste de réponses; cela devrait fonctionner même s'il y a plusieurs pages et que la réponse ne soit pas la première.
- Nouveau: remarque spéciale pour les réponses supposées être exécutées dans un navigateur: il est correct d’exiger de les exécuter sur le domaine codegolf (pour obéir à la politique de même origine), mais le domaine et le chemin doivent être inclus dans la solution afin de: rendez-le juste.
Réponses:
Navigateur Bash + coreutils + Lynx, 61 octets
Merci à @FDinoff pour les astuces:
la source
codegolf.stackexchange.com/posts/28164/body
Et ça ignore les commentaires. Je pense aussi que c'est dans les règles que vous pouvez l'utiliser ...Ruby,
15518619514813811097 caractèresJe devais en faire une ligne, car sinon, les nouvelles lignes seraient générées au
\n
lieu des nouvelles lignes réelles.+31 caractères parce que je n'avais pas remarqué que certains caractères étaient échappés.+9 caractères pour se débarrasser de la barre oblique inverse agaçante.L'explication
Embellissons ceci un peu en premier. Cependant, je vais devoir utiliser une notation un peu ... intéressante dans ce code. Je ne peux pas utiliser de points-virgules du tout dans cet article, pour des raisons expliquées plus tard, je vais donc les
{SEMI}
remplacer par des points-virgules.Bon, passons maintenant à travers cela. Les deux premières lignes sont assez explicites - elles récupèrent le texte HTML de cette réponse.
La dernière ligne est celle qui est intéressante ici. Vous voyez ce point-virgule apparemment inutile à la fin du code? C'est absolument nécessaire, et voici pourquoi.
Tout d'abord,
resp.match
extrait le code à imprimer. L'expression rationnelle utilise pour cela est l'affaire:/req.+{SEMI}/
. Il saisit le début du codeREQuire'net/http'
, en cherchantreq
(re
prendrait monREputation
). Ensuite, il trouve la fin du code en recherchant un point-virgule! Puisque+
est glouton par défaut, il continuera jusqu'à ce qu'il trouve le point-virgule qui signifie la fin du code. Voyez pourquoi je ne peux plus utiliser de point-virgule?Après cela, je n'ai plus rien à enlever grâce à la solution de Ventero qui consiste à ne plus utiliserPlus besoin de ça à cause d'une nouvelle URL. Après cela, le code original a été récupéré! (Remarque: je ne peux pas utiliser l'esperluette non plus, car le code HTML utilisé est codé, ce qui entraîne la création d'un point-virgule.)\
du tout. Tout ce que j'ai à faire est de corriger le{AMPERSAND}
changement en{AMPERSAND}amp{SEMI}
, ce qui peut être réalisé simplement en retirant laamp{SEMI}
pièce.la source
puts
; il pourrait être résolu avecprint
mais meh. Imaginez qu'il y ait une fin de ligne dans le code, même si SE ne pourra pas le montrer.http://codegolf.stackexchange.com/a/28159
donnerait le même résultat que le vôtre et économiserait des caractères.PowerShell -
6962la source
irm
est l'alias deInvoke-RestMethod
PowerShell v3 core et a été introduit avec celui-ci. computerperformance.co.uk/powershell/powershell3-alias.htmJavaScript -
1231221019592918786114S'exécute dans la console de votre navigateur Web sur cette page. Testé sur les derniers Chrome
et Firefox.edit: +28 octets pour ajouter le domaine complet.
Firefox n'aime plus mon tour d'URL Regex avec cette mise à jour :(
Voici la solution révolutionnaire de 86 octets:
la source
codegolf.stackexchange.com/
à l'URL.Ruby + wget +
gunzip,159868271Utiliser la pointe de @FDinoff à utiliser
http://codegolf.stackexchange.com/posts/28173/body
.Testé. Merci à @ace et @Bob pour l'optimisation en ligne de commande.
la source
wget
, comme danswget -qO- url
. De plus, dans bash, vous n'avez pas besoin des guillemets doubles pour l'URL, cela peut donc également fonctionner pour vous.http://
.CJam - 53
Je fais ce wiki de communauté depuis que je réponds à ma propre question et que je ne veux pas vraiment concurrencer: p
Crédits à FDinoff pour le choix de l'URL.
la source
);
n'a pas l'air trop souriant pour moi ...Rebmu, 91 caractères
En raison du Catch-22, je dois poster pour obtenir l'URL de cette réponse. :-/ OK, j'ai compris.Rebmu est un dialecte de Rebol et vous pouvez tout lire à ce sujet . L'équivalent de Rebol serait ici:
PARSE de Rebol est une sorte de réponse hautement alphabétisée à RegEx. Il commence une position d'analyse de l'entrée (qui peut être n'importe quelle série, y compris les blocs structurels ... données binaires ... ou les types de chaîne) . Les règles sont une langue pour la façon dont la position d'analyse se déplace.
Les balises et les URL ne sont en réalité que des chaînes cachées dans la langue. Mais ils sont "parfumés", et comme Rebol est typé dynamiquement, vous pouvez vérifier ce type. READ, par exemple, sait que si vous lui donnez une chaîne de caractères à base d'URL, il devrait alors être envoyé à un gestionnaire de schéma pour effectuer la lecture. (Dans ce cas, celui enregistré pour HTTP). Vous récupérez les octets UTF-8 par défaut. Nous utilisons donc to-string pour le décoder et obtenir une série de points de code dans une chaîne Unicode normale.
Dans le cas du dialecte d'analyse, la recherche d'un type de balise correspond simplement à une chaîne ressemblant à la balise. THRU est une instruction qui signifie "sauter jusqu'à ce que la règle suivante soit mise en correspondance, puis placez la position du match à la fin de ce que vous venez de faire correspondre". (TO est l'analogue qui correspond, mais laisse la position d'analyse avant l'élément).
Nous passons donc le long de la
<a name="28154">
. Nous passons ensuite à la prochaine occurrence de<code>
, notre position d’analyse étant maintenant située juste après le>
. La commande COPY de PARSE nous permet ensuite de copier les données dans une autre règle. Dans ce cas, cette règle est[TO </code>]
... nous introduisons donc dans la variable C tout jusqu'à maintenant<
.Cool , hein? :-)
Techniquement, je pourrais en
TO "</"
économiser plus, par exemple en cherchant et en sauvegardant trois caractères - il n'est pas nécessaire de faire correspondre la</code>
balise de fin entière quand cela</
conviendrait. Des arguments similaires pourraient me être faits pour la balise de début. Mais Rebmu concerne le golf lettré ... même si vous pensez que ça a l'air bizarre au début!UPDATE : le
/body
truc est sorti du sac, mais je vais pareillement le laisser tel quel ... parce que je pense que c'est plus éducatif de cette façon.la source
Java maintenant 634 852, était 1004
Le code a été mis à jour. merci pour les suggestions. Golfé: remplace maintenant & gt par>
En soumettant pour le test, je vais éditer et essayer de jouer au golf sous peu. Nécessaire pour changer x> 1 en x> 2 car la chaîne de test est également dans mon code. Remarque: le code golf remplace le symbole> par & gt.
la source
//bacchus
?*
importations pour économiser beaucoup de code.throws Exception
plutôt que d'essayer de gérer quoi que ce soit. De plus, je pense que l'utilisation d'un scanner plutôt que d'un lecteur BufferedReader serait plus simple, d'autant plus que vous pouvez définir le délimiteur sur//bacchus
, ce qui faciliterait un peu les choses ...Python,
175167 octetsCela utilise deux bibliothèques externes; Je n'ai pas lu que c'était non autorisé.
Code plus long, mais plus joli:
la source
questions
dans l'URL peut être remplacé parq
:http://codegolf.stackexchange.com/q/28154
bs4, requests
(ligne 1) peut être supprimé pour réduire 1 octet.JavaScript, 228
Fonctionne sur cette page.
la source
if(this.readyState == this.DONE)
dans la fonction.Haskell,
563613 octetsTesté. Possède un support de page via la fonctionnalité "messages les plus anciens". Utilise une structure en quine-lignes pour trouver les éléments à imprimer. Le
import Control.Monad
est seulement parce que>>=
génère>
en HTML.la source
Javascript + jQuery,
87, 67Je ne suis pas sûr de pouvoir utiliser jQuery, mais:
Javascript + jQuery, si exécuté dans cette page:
27, 25Pour le plaisir, si cela devait être exécuté ici:
$('[id$=28268] pre').html()
la source
$('body').load('//codegolf.stackexchange.com/posts/28268/body pre')
w3m 45 caractères
la source
Dart, 164
Je pensais que j'essayerais cela dans Dart, c'est assez amusant d'utiliser imo.
Ceci peut être exécuté dans la console dans DartEditor, mais nécessite le package http ajouté dans pubspec.yaml.
Version non-golfée:
la source
R 114 caractères
Pas de vraie magie ici: il prend la valeur du champ entre les balises html
<code></code>
. Utilise la bibliothèqueXML
(comme on peut le voir dans le code bien évidemment). Affiche le résultat en tant que sortie standard.la source
Java,
300294Une version améliorée de la réponse de bacchusbeale qui:
Scanner
pour éviter d'avoir à boucler l'entréeMis à jour:
<code>[...]</code>
comme délimiteurs à rechercher (en utilisant en fait l'expression régulière "./?[c]ode\W", afin d'éviter de devoir décoder<
et>
- le "\ W" est nécessaire plutôt que le plus court "." pour éviter de faire correspondre une partie de l'URL à la publication, ce qui coûte malheureusement 2 caractères, et les crochets entourant c empêchent la regex de se correspondre).la source
w3m 55 octets
Basé sur @DigitalTrauma
la source
Ruby,
237215146132la source
Traitement, 90
Edit: enfin obtenu!
la source
bash + awk, 71 octets
la source
http://
.Javascript, 138
Cela fonctionne en supposant que la page se charge en moins de 99 ms. Il doit également être exécuté via une console ouverte sur une page codegolf.SE, en raison de la même stratégie d'origine.
la source
http://codegolf.stackexchange.com/a/28160
au lieu dehttp://codegolf.stackexchange.com/a/28160/12551
Perl 5.10,
155127122117 octetsUtilisation
XML::LibXML
.la source
Shell et xmllint, 82 octets
la source
Python, 164
Fonctionne en extrayant le texte entre les balises de code. Il est assez long mais il fonctionnera toujours correctement à moins que la page html ne soit directement modifiée ou qu'un nouveau bloc de code ne soit ajouté avant celui ci-dessous (un bloc de code après ne devrait avoir aucun effet sur la sortie du programme).
la source