Écrivez un logiciel qui imprime sur stdout le nombre de réponses et le nombre de commentaires (visibles et regroupés des questions et réponses) de cette question / page.
Votre script doit s'exécuter avec cette page fermée au démarrage.
Exemple de sortie attendue:
A12C40
Où A représente les réponses et C les commentaires.
Réponses:
Perl,
91 9692 caractèresQuelques trucs juste pour casser les solutions des autres ha ha ha :-P
afficher 93 autres commentaires
href
nt = "99" (ha ha crash @Fez Vrasta)
a, montrer 99 montrer 99 ha ha
href href href ha ha haha :-D
jeeez, vient de casser ma propre réponse! J'ai découvert que l'une des astuces ci-dessus, que je pensais ne rien faire, commencerait à fonctionner après que cette réponse ne soit pas modifiée pendant un certain temps! Vos solutions ne fonctionneront donc que pendant un certain temps. C'est pourquoi vous aviez vu +1 réponse de plus dans vos solutions .. C'est une bombe chronométrée! Ma réponse y est déjà sujette :-) Aaah, a trouvé un moyen de le lancer MAINTENANT ...
la source
perl -E
. Suppression de mon commentaire. Vous pouvez également supprimer votre référence à ma réponse, car vous ne laXQuery,
169,160, 165Plus lisible (avec des espaces):
BaseX a été utilisé comme processeur XQuery.
la source
doc()
fonction) si cette page serait XML valide ...$d//*[@class="comments-link"]/b
VISE (dans la balise <b> le nombre de commentaires cachés est affiché)Python 3, 180
Je suppose que cette question n'aura pas plusieurs pages de réponses.
la source
A13C20
. Inclure un support incliné dans l'expression régulière et je pense que cela devrait être bon, car ceux-ci sont échappés.,sep=''
BASH + AWK
163,144,138,111,110,114,131,132, 105C'est la même chose que cela, mais sans rediriger vers un fichier:
Sortie courant
Explication
boucleTransférez une URL.
-s
encurl
est pour le silence. Et-L
pour suivre les redirections.Pour analyser le fichier. Comme certaines réponses avaient du code pour casser d'autres réponses, l'analyse a été modifiée de sorte qu'elle analyse depuis le début de la ligne
(^
) pour s'assurer qu'elle n'est pas rompue.-F'[<>]'
définissez les séparateurs de champ sur<
ou>
. De cette façon, le texte peut être analysé correctement pour "afficher XXX autres commentaires"./^[\t]*>show <b>/{c+=$4}
sur les lignes contenant "espaces ....> afficher", obtenez le 4ème champ (basé sur<
,>
séparateurs) et ajoutez la valeur au compteur de commentaires./^[ ]*<tr.*s="comm/{++c}
sur les lignes contenant "espaces .../^<td.*rcell">/{++a}
sur les lignes contenant "", incrémentez le compteur des réponses.END{print "A"a"C"c}
imprimer la sortie.la source
m
etf
dans votre code:echo "A$(grep -c 'rcell">' m)C$(grep -c 'mment">' f)"
devrait êtreecho "A$(grep -c 'rcell">' f)C$(grep -c 'mment">' f)"
, non?PHP qui fonctionne réellement (302 caractères)
Contrairement à toutes les autres réponses jusqu'à présent, cela renvoie la bonne réponse même lorsque la question se répand sur plusieurs pages.
la source
(count($i)-1)
corrige le décompte pour ne pas inclure la question.[]
au lieu dearray()
pour initialiser$i
a plus de 100 éléments. (Ma propre version de la même chose en rubis n'a pas cette limitation. Bien qu'il soit vrai qu'elle peut se heurter aux limites de l'API. ;-))R, 326
Avec indentation et explications:
Testé avec cette page , il donne le bon nombre de commentaires (y compris cachés) sur la première page et le bon nombre de réponses, ie
A23C63
.Et voici une solution à 482 caractères qui saisit le bon nombre de commentaires si la question finit par s'étaler sur plusieurs pages:
Dentelé:
Essayé sur cette question et émis:
A125C499
.la source
HTML, 37
Désolé, l'abus flagrant des règles suit!
Explication
q0x.eu/1
redirige vers: http: //api.stackexchange.com/2.1/questions/20277/comments? site = codegolf & callback = ...où le rappel est:
q0x.eu/2
redirige vers http: //api.stackexchange.com/2.1/questions/20277/answers? site = codegolf & callback = ...et
q0x.eu/3?n=...
redirige vers http: //api.stackexchange.com/2.1/answers/.../comments? site = codegolf & callback = ...J'essayais à l'origine de le faire légitimement et je pourrais peut-être encore y aller, mais c'était quand même amusant!
la source
q0x.eu/1
alors? PS: les solutions légitimes ne peuvent pas battre Perl de toute façon ;-) (défi flagrant)curl q0x.eu/1
ou quelque chose, mais c'était trop paresseux ...Ruby 175 (compte sur plusieurs pages, en utilisant l'API au lieu du DOM)
C'est 242 sans l'URL raccourcie:
Réponse précédente 291:
Remerciements à Peter Tailor pour l'idée d'utiliser l'API et à Charles pour avoir pointé vers une meilleure API.
la source
Python avec stackpy 160
la mise en oeuvre
Sortie
Remarque
Hier, j'ai envisagé d'utiliser l'API stackexchange, mais j'ai mis du temps à comprendre comment cela fonctionne. Aujourd'hui, j'ai vu qu'il y avait quelques réponses sur le même thème. Pour rendre ma réponse un peu différente, j'ai pensé à utiliser une bibliothèque externe.
Sachez également que d'autres réponses qui reposent sur l'analyse de modèles comme
sont susceptibles de se casser à tout moment, donc une réponse plus définitive est de s'appuyer sur une méthode robuste comme celle-ci.
la source
R 239
Après avoir posté ma réponse, la sortie est:
la source
F("div","answer")
etF("td","comment-text")
ne fonctionne pas pour moi (Error in F("div", "answer") : (list) object cannot be coerced to type 'double'
). Ne doit pas la valeur par défaut pourf
être aufunction(x)length(xmlValue(x))
lieu delength
, ou quelque chose de similaire?xpathSApply(...,length)
devrait renvoyer un vecteur, pas une liste. Je ne sais pas pourquoi vous obtiendriez une liste. Et non, je veux vraiment utiliserlength
et nonfunction(x)length(xmlValue(x))
: le but est d'obtenir un vecteur de1
s, un pour chaque commentaire ou réponse.xpathSApply
peut prendre d'autres fonctions (commelength
) que des fonctionsxmlValue
similaires est une nouveauté de la version 3.94 du paquet (si je comprends bien leur changelog). C'est peut-être pourquoi cela n'a pas fonctionné pour moi. Oui, j'ai eu l'idée que vous vouliez un vecteur de 1, mais avec ma version du package, je ne peux y parvenir qu'avecfunction(...
au lieu de justelength
.Je ne peux pas croire que personne ne l'a inventé jusqu'à présent! Solution la plus directe à utiliser :-)
jQuery,
116101 caractères (hors compétition)Peut-être que cela ne va pas avec les règles, je le garde juste pour le plaisir - la solution jQuery ne peut pas manquer :) Au moins comme référence pour tester vos scripts !!! ;-)
Essayez d'exécuter à partir de la console FireBug:
Si vous avez une connexion lente, augmentez le délai :-) Merci @Fez Vrasta pour la bonne idée de cliquer sur les liens "afficher plus"!
Quelques autres trucs pour casser la solution des autres, class = "comment" et la bombe chronométrée ha ha
la source
PHP:
184172Explication:
Pour la première fois, PHP bat d'autres langages dans les scripts de golf: ')
Quelques balises supplémentaires à ce sujet pour éviter les "tricheurs" regex:
Afficher 9 999 autres commentaires
la source
Noeud, 403
Ne frappe l'API qu'une seule fois ... peut probablement être raccourci, mais je suis nouveau sur Node.
la source
153151147, Requête C # & CsC # avec CsQuery:
Programme complet:
118 C # & CsQuery dans LINQPad ou à Roslyn
Si l'exécution via LINQPad est autorisée, alors:
Produit:
Un peu plus de plaisir.
F # avec CsQuery, 143:
la source
RÉPONSE NON VALIDÉE INVALIDE - ICI JUSTE POUR LE PLAISIR
Javascript + jQuery - 155
Collez-le simplement dans votre console. Suppose qu'il n'y aurait qu'une seule page:
la source