Schreiben Sie eine Software, die auf stdout die Anzahl der Antworten und die Anzahl der Kommentare (sichtbar und reduziert von Frage und Antworten) dieser Frage / Seite druckt.
Ihr Skript muss ausgeführt werden, wenn diese Seite geschlossen ist.
Erwartete Beispielausgabe:
A12C40
Wobei A für Antworten und C für Kommentare steht.
Antworten:
Perl,
91 9692 ZeichenManche Sachen nur, um Lösungen anderer zu brechen ha ha ha :-P
zeigen 93 weitere Kommentare
href
nt = "99" (ha ha crash @Fez Vrasta)
a, zeige 99 zeige 99 ha ha
href href href ha ha haha :-D
jeeez, habe gerade meine eigene Antwort gebrochen! Ich entdeckte , dass eine der oben genannten Tricks, die ich dachte , tut nichts, wird anfangen zu arbeiten , nachdem diese Antwort für einige Zeit nicht bearbeitet! Ihre Lösungen funktionieren also nur für einige Zeit. Aus diesem Grund haben Sie in Ihren Lösungen +1 Antwort mehr gesehen. Es ist eine Zeitbombe! Meine Antwort ist bereits anfällig dafür :-) Aaah, habe einen Weg gefunden, wie ich es JETZT starten kann ...
quelle
perl -E
. Meinen Kommentar löschen. Sie können auch Ihren Verweis auf meine Antwort löschen, da Sie es nicht mehr vermitteln :)XQuery,
169,160, 165Mehr lesbar (mit Leerzeichen):
BaseX wurde als XQuery-Prozessor verwendet.
quelle
doc()
Funktion), wenn diese Seite gültiges XML wäre ...$d//*[@class="comments-link"]/b
ist es, wofür (im <b> -Tag wird die Anzahl der ausgeblendeten Kommentare angezeigt)Python 3, 180
Ich gehe davon aus, dass diese Frage nicht über mehrere Seiten mit Antworten verfügt.
quelle
A13C20
. Fügen Sie eine spitze Klammer in die Regex ein, und ich denke, es sollte gut sein, da diese ausgeblendet werden.,sep=''
BASH + AWK
163,144,138,111,110,114,131,132, 105Welches ist das gleiche wie das, aber ohne in eine Datei umzuleiten:
Aktueller Output
Erläuterung
lockenÜbertragen Sie eine URL.
-s
incurl
ist für schweigen. Und-L
Weiterleitungen zu folgen.Die Datei analysieren. Da einige Antworten Code zum Unterbrechen anderer Antworten enthielten, wurde die Syntaxanalyse so geändert, dass sie vom Zeilenanfang
(^
an analysiert wird , um sicherzustellen, dass sie nicht beschädigt wird.-F'[<>]'
Feldtrennzeichen setzen als<
oder>
. Auf diese Weise kann der Text korrekt analysiert werden, um "XXX weitere Kommentare anzeigen" zu lassen./^[\t]*>show <b>/{c+=$4}
auf den Linien „Räume ....> show“, erhalten die vierte Feld (basierend auf enthalten<
,>
Zähler Separatoren) und fügen Sie den Wert auf die Kommentare./^[ ]*<tr.*s="comm/{++c}
in Zeilen mit "Leerzeichen .../^<td.*rcell">/{++a}
In Zeilen, die "" enthalten, erhöhen Sie den Zähler der Antworten.END{print "A"a"C"c}
Ausgabe drucken.quelle
m
undf
in Ihrem Code:echo "A$(grep -c 'rcell">' m)C$(grep -c 'mment">' f)"
sollteecho "A$(grep -c 'rcell">' f)C$(grep -c 'mment">' f)"
nein sein?PHP, das tatsächlich funktioniert (302 Zeichen)
Im Gegensatz zu allen bisherigen Antworten wird hiermit die richtige Antwort zurückgegeben, auch wenn die Frage auf mehrere Seiten verteilt ist.
quelle
(count($i)-1)
Korrigiert die Anzahl, um die Frage nicht einzuschließen.[]
anstattarray()
zu initialisieren$i
über 100 Elemente hat. (Meine eigene Version von Ruby hat diese Einschränkung nicht. Allerdings kann es passieren, dass die API-Limits überschritten werden. ;-))R 326
Mit Einrückung und Erläuterungen:
Getestet mit dieser Seite , gibt es die richtige Anzahl von Kommentaren (einschließlich ausgeblendeter) auf der Startseite und die richtige Anzahl von Antworten, dh
A23C63
.Und hier ist eine Lösung mit 482 Zeichen , die die richtige Anzahl von Kommentaren erfasst, wenn sich die Frage auf mehrere Seiten verteilt:
Eingerückt:
Anprobiert diese Frage und ausgegeben:
A125C499
.quelle
HTML, 37
Entschuldigung, es folgt ein offenkundiger Regelmissbrauch!
Erläuterung
q0x.eu/1
Weiterleitungen an: http: //api.stackexchange.com/2.1/questions/20277/comments? site = codegolf & callback = ...wo der Rückruf ist:
q0x.eu/2
Weiterleitungen zu http: //api.stackexchange.com/2.1/questions/20277/answers? site = codegolf & callback = ...und
q0x.eu/3?n=...
leitet weiter zu http: //api.stackexchange.com/2.1/answers/.../comments? site = codegolf & callback = ...Ich habe ursprünglich versucht, es legitim zu machen und könnte es noch versuchen, aber das hat trotzdem Spaß gemacht!
quelle
q0x.eu/1
? PS: legitime Lösungen können Perl sowieso nicht schlagen ;-) (krasse Herausforderung)curl q0x.eu/1
oder so, aber es war zu faul ...Ruby 175 (seitenübergreifend unter Verwendung der API anstelle des DOM)
Das sind 242 ohne die verkürzte URL:
Vorherige 291 Antwort:
Wir danken Peter Tailor für die Idee, die API zu verwenden, und Charles für den Hinweis auf eine bessere API.
quelle
Python mit Stackpy 160
Implementierung
Ausgabe
Hinweis
Gestern habe ich darüber nachgedacht, die StackExchange-API zu verwenden, aber einige Zeit gebraucht, um zu verstehen, wie es funktioniert. Heute habe ich gesehen, dass es ein paar Antworten zum selben Thema gibt. Um meine Antwort ein bisschen anders zu machen, habe ich es mir überlegt, eine externe Bibliothek zu verwenden.
Beachten Sie auch, dass andere Antworten, die sich auf das Analysieren von Mustern stützen, ähnlich sind
sind wahrscheinlich bald zu brechen, so dass eine eindeutigere Antwort auf eine robuste Methode wie diese ist.
quelle
R 239
Nachdem ich meine Antwort gepostet habe, lautet die Ausgabe:
quelle
F("div","answer")
undF("td","comment-text")
funktioniert bei mir nicht (Error in F("div", "answer") : (list) object cannot be coerced to type 'double'
). Sollte die Standardeinstellungf
nichtfunction(x)length(xmlValue(x))
stattlength
oder ähnlich sein?xpathSApply(...,length)
sollte einen Vektor zurückgeben, keine Liste. Ich bin mir nicht sicher, warum Sie eine Liste bekommen würden. Und nein, ich meine wirklich zu verwendenlength
und nichtfunction(x)length(xmlValue(x))
: Das Ziel ist es, einen Vektor von1
s zu erhalten, einen für jeden Kommentar oder jede Antwort.xpathSApply
andere funktionen (wielength
)xmlValue
und ähnliche funktionen übernommen werden können ist eine neuheit ab version 3.94 des pakets (wenn ich deren changelog richtig verstehe). Das könnte der Grund sein, warum es bei mir nicht funktioniert hat. Ja, ich hatte die Idee, dass Sie einen Vektor von 1s wollten, aber mit meiner Version des Pakets kann ich das nur mit erreichen,function(...
anstatt nur mitlength
.Ich kann nicht glauben, dass bis jetzt noch niemand darauf gekommen ist! Am direktesten zu verwendende Lösung :-)
jQuery,
116101 Zeichen (außer Konkurrenz)Vielleicht passt das nicht zu den Regeln, ich behalte es nur zum Spaß - die jQuery-Lösung darf nicht fehlen :) Zumindest als Referenz zum Testen Ihrer Skripte !!! ;-)
Versuchen Sie, von der FireBug-Konsole aus zu starten:
Wenn Sie eine langsame Verbindung haben, verlängern Sie das Zeitlimit :-) Vielen Dank an @Fez Vrasta für die großartige Idee, auf die Links "Mehr anzeigen" zu klicken!
Einige andere Sachen, um die Lösung anderer zu brechen, class = "comment" und die Zeitbombe ha ha
quelle
PHP:
184172Erläuterung:
Zum ersten Mal schlägt PHP andere Sprachen in Golf-Skripten: ')
Einige zusätzliche Markups für dieses Thema, um Regex "Cheats" zu vermeiden:
zeigen 9999 mehr Kommentare
quelle
Knoten, 403
Treffer nur einmal auf der API ... können wahrscheinlich verkürzt werden, aber ich bin neu bei Node.
quelle
153151147, C # & CsQueryC # mit CsQuery:
Volles Programm:
118 C # & CsQuery in LINQPad oder in Roslyn
Wenn die Ausführung über LINQPad zulässig ist, gilt Folgendes:
Produziert:
Noch mehr Spaß.
F # mit CsQuery, 143:
quelle
INVALID UNDELETED ANTWORT - HIER NUR ZUM SPASS
Javascript + jQuery - 155
Fügen Sie es einfach in Ihre Konsole ein. Angenommen, es gäbe nur eine Seite:
quelle