จำนวนคำตอบและความคิดเห็น


27

เขียนซอฟต์แวร์ที่พิมพ์บน stdout จำนวนคำตอบและจำนวนความคิดเห็น (มองเห็นและยุบคำถามและคำตอบ) ของคำถาม / หน้านี้

สคริปต์ของคุณจะต้องทำงานโดยปิดหน้านี้เมื่อเริ่มต้น

ผลลัพธ์ตัวอย่างที่คาดไว้:

A12C40

ที่ A หมายถึงคำตอบและ C สำหรับความคิดเห็น


9
แสดงความคิดเห็นเล็ก ๆ น้อย ๆ เพื่อตรวจสอบบางอย่างถ้าคุณไม่รังเกียจ;)
Teun Pronk

1
ความคิดเห็นทั้งหมด
Fez Vrasta

1
รหัสต้องจัดการกรณีและปัญหาเมื่อความคิดเห็นถูกยุบเมื่อมีจำนวนมากเกินไปหรือไม่? และยังมีกรณีเมื่อมีคำตอบมากเกินไป (แม้ว่าฉันสงสัยว่ามันจะได้รับมาก)
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

4
นานแค่ไหนจนกว่าจะมีคนเขียนโปรแกรมที่อ่านคำตอบ upvoted ที่สุดที่นี่และเรียกใช้มัน? : D
C4stor

12
นี่เป็นรูปแบบที่ชาญฉลาดที่จะได้รับคำถามที่มีผู้เข้าชมมากที่สุดผ่านการทดสอบสคริปต์หรือไม่
Boann

คำตอบ:


18

Perl, 91 96   92 ตัวอักษร

$_=`curl -sL qr.net/_9`;s/<[^>]+nt="(.+)/$c+=$1/ge;say"A",s/<td.*"ans//g,C,$c+s/<tr.*"com//g

บางสิ่งบางอย่างเพียงเพื่อทำลายคำตอบของคนอื่น ๆ ฮ่า ๆ ๆ :-P

แสดงความคิดเห็นอีก93รายการ

href

nt = "99" (ฮาฮาผิดพลาด @Fez Vrasta)

แสดง99แสดง99ฮ่าฮ่า

href href href ฮ่าฮ่าฮ่าฮ่า :-D

jeeez เพิ่งทำลายคำตอบของฉันเอง! ฉันค้นพบว่าหนึ่งในเทคนิคข้างต้นซึ่งฉันคิดว่าไม่ทำอะไรเลยจะเริ่มทำงานหลังจากคำตอบนี้ไม่ได้รับการแก้ไขในบางครั้ง! ดังนั้นวิธีแก้ไขปัญหาของคุณจะทำงานเพียงบางครั้งเท่านั้น นั่นเป็นเหตุผลที่คุณได้เห็นคำตอบเพิ่มเติมในโซลูชันของคุณอีก 1 รายการ .. มันเป็นระเบิดที่หมดเวลา! คำตอบของฉันมีแนวโน้มที่จะ :-) Aaah พบวิธีการเปิดใช้ตอนนี้ ...


เพื่อทำลายสคริปต์อีกสองสามตัวที่ใช้ตัวเลือก css บางทีลิงก์ <a href="" class="comment> ความคิดเห็น </a> อาจทำงานได้หรือไม่
เดนิสเดอเบอร์นาดี

เดนิสโชคไม่ดีทางทิศตะวันออกจะไม่อนุญาตให้คุณแสดงสิ่งนี้ คุณสามารถทดสอบกับคำตอบของคุณเอง :)
โทมัส

ฉันตรวจสอบ> ดังนั้นจึงไม่แตกหักง่าย
Fez Vrasta

@FezVrasta ermm .. ไม่เปราะบาง ถ้าอย่างนั้นมันจะเป็นไปได้อย่างไร ;)
โทมัส

@Tomas perl -Eดีตอนนี้ผมไม่เห็นเอาท์พุทที่เหมาะสมกับ กำลังลบความคิดเห็นของฉัน นอกจากนี้คุณสามารถลบการอ้างอิงของคุณคำตอบของฉันเป็นคุณไม่ได้มันนายหน้าใด ๆ :)
fedorqui

9

XQuery, 169 , 160 , 165

let$d:=html:parse(fetch:binary('http://qr.net/1_'))return"A"||count($d//*[@class="answer"])||"C"||count($d//*[@class="comment"])+sum($d//*[@class="comments-link"]/b)

อ่านเพิ่มเติม (มีช่องว่าง):

let $d:= html:parse(fetch:binary('http://qr.net/1_'))
return "A" || count($d//*[@class="answer"]) || "C" || count($d//*[@class="comment"]) + sum($d//*[@class="comments-link"]/b)

BaseXถูกใช้เป็นตัวประมวลผล XQuery


จะยิ่งสั้นลง (โดยใช้doc()ฟังก์ชัน) หากหน้านี้จะเป็น XML ที่ถูกต้อง ...
Reinstate Monica - dirkk

และนี่น่าจะเป็นคำตอบแรกในการเล่นกอล์ฟโดยใช้ XQuery ... กลายเป็นว่าเหมาะสมมาก :)
Reinstate Monica - dirkk

2
ในเว็บไซต์นี้ฉันค้นพบภาษาใหม่ทุกวันภาษานี้ค่อนข้างน่าสนใจขอบคุณ มันนับความคิดเห็นที่ซ่อนอยู่หรือไม่?
Fez Vrasta

@FezVrasta ใช่แล้วและ XQuery ไม่ได้เป็นความลับเลย :) ใช่แล้วนั่น$d//*[@class="comments-link"]/bคือสิ่งที่ใช้สำหรับ (ใน <b> แท็กจำนวนความคิดเห็นที่ซ่อนอยู่แสดง)
Reinstate Monica - dirkk

7

Python 3, 180

import lxml.html as h
s=h.parse('http://qr.net/1_').find('body').cssselect
print('A',len(s('.answer')),'C',len(s('.comment'))+sum(int(e.text)for e in s('.comments-link b')),sep='')

ฉันสมมติว่าคำถามนี้ไม่มีคำตอบหลายหน้า


เครื่องปั่น: ไม่มีโชคแม้แต่กับรหัสบล็อก: P
Fez Vrasta

@FezVrasta: ฉันA13C20เข้าใจแล้ว รวมวงเล็บเหลี่ยมมุมใน regex และฉันคิดว่ามันควรจะดีตามที่ได้หลบหนีไป
เครื่องปั่น

ใช่ฉันทำไปแล้ว ขอบคุณ
Fez Vrasta

อืม ... "ไม่สนใจสิ่งนี้" ใช่มั้ย จะเกิดอะไรขึ้นถ้ามีคนแก้ไขคำตอบนั้น?
Iszi

ไวยากรณ์ไม่ถูกต้อง ,sep=''
Runium

7

BASH + AWK 163 , 144 , 138 , 111 , 110 , 114 , 131 , 132 , 105

curl -sL http://qr.net/_9|awk -F'[<>]' '/^[\t]*>s/{c+=$4}/<tr.*"c/{++c}/<t.*"a/{++a}END{print "A"a"C"c}'

ซึ่งเป็นเช่นนี้ แต่ไม่มีการเปลี่ยนเส้นทางไปยังไฟล์:

curl -sL http://qr.net/_9>f
awk -F'[<>]' '/^[\t]*>s/{c+=$4}/<tr.*"c/{++c}/<t.*"a/{++a}END{print "A"a"C"c}' f

กระแสไฟขาออก

A16C76

คำอธิบาย

ขด

โอน URL

  • -sในcurlเพื่อความเงียบ และ-Lเพื่อติดตามการเปลี่ยนเส้นทาง
awk

เพื่อแยกไฟล์ เนื่องจากบางคำตอบมีรหัสบางอย่างที่จะทำลายคำตอบอื่น ๆ การแยกวิเคราะห์จึงถูกเปลี่ยนเพื่อให้แยกวิเคราะห์ตั้งแต่ต้นบรรทัด(^) เพื่อให้แน่ใจว่าจะไม่เสีย

  • -F'[<>]'คั่นฟิลด์ชุดเป็นหรือ< >วิธีนี้สามารถแยกวิเคราะห์ข้อความได้อย่างถูกต้องสำหรับ "แสดงความคิดเห็นเพิ่มเติม XXX"
  • /^[\t]*>show <b>/{c+=$4}ในบรรทัดที่มี "ช่องว่าง .... > โชว์" ได้รับข้อมูลที่ 4 (ขึ้นอยู่กับ<, >คั่น) และเพิ่มมูลค่าให้กับเคาน์เตอร์แสดงความคิดเห็น
  • /^[ ]*<tr.*s="comm/{++c} ในบรรทัดที่มี "ช่องว่าง ...
  • /^<td.*rcell">/{++a} ในบรรทัดที่มี "" จะเพิ่มตัวนับคำตอบ
  • END{print "A"a"C"c} พิมพ์ผลลัพธ์

ดังนั้นจึงไม่นับความคิดเห็นที่ถูกยุบ
Fez Vrasta

ฉันคิดว่าคุณมั่วmและfในรหัสของคุณ: echo "A$(grep -c 'rcell">' m)C$(grep -c 'mment">' f)"ควรจะecho "A$(grep -c 'rcell">' f)C$(grep -c 'mment">' f)"ใช่ไหม
plannapus

@plannapus ใช่ข้อผิดพลาดจากการคัดลอกวาง แก้ไขแล้วขอบคุณ!
fedorqui

1
เพิ่งทดสอบรหัสของคุณและรายงาน "A14C159" ซึ่งฉันเชื่อว่าไม่ถูกต้องนัก
อภิสิทธิ์

1
@Abhijit เกิดขึ้นที่ผู้คนอัปเดตโพสต์ของพวกเขาเพื่อทำลายเงื่อนไขในคำตอบที่เหลือ ... และฉันไม่สามารถอัปเดตคำตอบของฉันได้ทุกครั้งที่มีคนอัปเดตของเขา: D
fedorqui

5

PHP ที่ใช้งานได้จริง (302 ตัวอักษร)

แตกต่างจากคำตอบอื่น ๆ ทั้งหมดซึ่งจะส่งกลับคำตอบที่ถูกต้องแม้ว่าคำถามจะรั่วไหลลงบนหน้ามากกว่าหนึ่งหน้า

<?function g($a,$b,$i){return json_decode(gzinflate(substr(file_get_contents("http://api.stackexchange.com/2.1/$a/$i/$b?site=codegolf"),10,-8)))->items;}$i=array(20277);foreach(g("questions","answers",20277)as$x)$i[]=$x->answer_id;echo"A".(count($i)-1)."C".count(g("posts","comments",implode(";",$i)));

จำนวนความคิดเห็นของคุณถูกต้อง แต่ในขณะนี้มีเพียง 5 คำตอบ แต่สคริปต์ของคุณบอกว่ามี 6. มันนับคำถามหรือไม่
เฟลิกซ์อีฟ

@ FelixEve ฉันคิดว่าอาจนับคำตอบที่ถูกลบไปแล้ว (count($i)-1)แก้ไขการนับเพื่อไม่รวมคำถาม
Peter Taylor

@PeterTaylor สคริปต์จะเห็นคำตอบที่ถูกลบได้อย่างไร ควรอยู่ในมาร์กอัพหากลงชื่อเข้าใช้ด้วยผู้ใช้ที่มีสิทธิ์
Cruncher

จาก PHP 5.4 คุณสามารถใช้[]แทนarray()การเริ่มต้น
Einacio

อันนี้จะไม่ทำงานจริงถ้ามีการรวม$iมีมากกว่า 100 รายการ (รุ่นเดียวกันของฉันใน rubyไม่มีข้อ จำกัด นี้แม้ว่าจะยอมรับว่ามันอาจชนกับขีด จำกัด API ;-))
เดนิสเดอเบอร์นาดี

5

R, 326

library(XML);b=htmlParse("https://codegolf.stackexchange.com/questions/20277");z=xpathApply;x=do.call(sum,sapply(z(b,"//tbody",xmlAttrs),function(x)as.integer(x[[1]])))+length(z(b,"//tr[@class='comment']",xmlValue));y=gsub("[^0-9]","",z(b,"//div[@class='subheader answers-subheader']/h2",xmlValue)[[1]]);cat("A",y,"C",x,sep="")

ด้วยการเยื้องและคำอธิบาย:

library(XML)
b=htmlParse("https://codegolf.stackexchange.com/questions/20277")
z=xpathApply
x=do.call(sum,sapply(z(b,"//tbody",xmlAttrs),  #Take the first attribute of tag tbody
                     function(x)as.integer(x[[1]]))) #And sum them (=nb of hidden comments
  +length(z(b,"//tr[@class='comment']",xmlValue)) #+nb of visible comments
y=gsub("[^0-9]","", #This is more straightforward as the number of answers is given on front page.
        z(b,"//div[@class='subheader answers-subheader']/h2",xmlValue)[[1]])
cat("A",y,"C",x,sep="")

ทดสอบกับหน้านี้จะช่วยให้ตัวเลขทางขวาของความคิดเห็น (รวมทั้งที่ซ่อนอยู่) บนหน้าA23C63และตัวเลขทางขวาของคำตอบคือ

และนี่คือวิธีแก้ปัญหาที่482 อักขระ ที่คว้าจำนวนความคิดเห็นที่ถูกต้องหากคำถามสิ้นสุดลงในหลาย ๆ หน้า:

library(XML);h=htmlParse;z=xpathApply;v=xmlValue;a=xmlAttrs;s=sapply;c="http://codegolf.stackexchange.com";f=function(b,i){do.call(sum,s(z(b,"//tbody",a)[i],function(x)as.integer(x[[1]])))+length(z(b,"//tr[@class='comment']",v))};b=h(paste0(c,"/questions/20277"));x=f(b);u=unique(s(z(b,"//div[@class='pager-answers']/a",a),`[`,1));if(length(u))x=x+sum(s(u,function(x)f(h(paste0(c,x)),-1)));y=gsub("[^0-9]","",z(b,"//div[@id='answers-header']/div/h2",v)[[1]]);cat("A",y,"C",x,sep="")

เยื้อง:

library(XML)
h=htmlParse
z=xpathApply
v=xmlValue
a=xmlAttrs
s=sapply
c="http://codegolf.stackexchange.com"
f=function(b,i){do.call(sum,s(z(b,"//tbody",a)[i],function(x)as.integer(x[[1]])))+length(z(b,"//tr[@class='comment']",v))}
b=h(paste0(c,"/questions/20277"))
x=f(b)
u=unique(s(z(b,"//div[@class='pager-answers']/a",a),`[`,1)) #Grab all URLS of pages
if(length(u))x=x+sum(s(u,function(x)f(h(paste0(c,x)),-1))) #Apply comment computation of all URLs
y=gsub("[^0-9]","",z(b,"//div[@id='answers-header']/div/h2",v)[[1]])
cat("A",y,"C",x,sep="")

พยายามกับคำถามนี้และเอาท์พุท: A125C499.


+1 สำหรับการใช้ R, ตกอับชัดเจน แต่ภาษาที่สวยงาม :)
โทมัส

5

HTML, 37

ขออภัยการละเมิดกฎดังเกินไป!

<script src=http://q0x.eu/1></script>

คำอธิบาย

q0x.eu/1เปลี่ยนเส้นทางไปที่: http: //api.stackexchange.com/2.1/questions/20277/comments? site = codegolf & callback = ...

โดยที่ callback คือ:

(function(d){
    c=d.items.length;
    document.write('<script src="http://q0x.eu/2"></script>')
})

q0x.eu/2เปลี่ยนเส้นทางไปที่http: //api.stackexchange.com/2.1/questions/20277/answers? site = codegolf & callback = ...

(function(d){
    a=0;
    g=[];
    d.items.map(function(f){
        a++;
        g.push(f.answer_id)
    });
    document.write('<script src="http://q0x.eu/3?n='+g.pop()+'"></script>')
})

และq0x.eu/3?n=...เปลี่ยนเส้นทางไปที่http: //api.stackexchange.com/2.1/answers/.../comments? site = codegolf & callback = ...

(function(d){
    c+=d.items.length;
    g.length ? document.write('<script src="http://q0x.eu/3?n='+g.pop()+'"></script>') : alert('A'+a+'C'+c)
})

เดิมทีฉันพยายามทำมันอย่างถูกต้องและอาจจะยังคงมีอยู่ แต่นี่ก็สนุกดี!


1
แล้วทำไมไม่ใช้ HTTP, 8 ตัวอักษร q0x.eu/1ล่ะ? PS: โซลูชั่นที่ถูกกฎหมายไม่สามารถเอาชนะ Perl anyways ;-) (ความท้าทายที่โจ่งแจ้ง)
Tomas

1
@ Tomas ที่จะโกง! ;) บวกกับการเปลี่ยนเส้นทางไปยังข้อมูลเท่านั้น, มันจะต้องถูกตีความว่าเป็นสคริปต์, ฉันคิดว่าการเรียก API ทั้งหมดกลับมาและวางcurl q0x.eu/1หรืออะไรบางอย่าง, แต่มันขี้เกียจเกินไป ...
Dom Hastings

5

Ruby 175 (นับข้ามหน้าโดยใช้ API แทน DOM)

require'open-uri';require'json'
q=JSON.parse(open("http://qr.net/oyJn").read)["items"][0];a=q["answers"]
puts"A#{a.count}C#{[q,*a].reduce(0){|m,o|m+o["comments"].to_a.count}}"

นั่นคือ 242 โดยไม่มี URL ที่สั้นลง:

require'open-uri';require'json'
q=JSON.parse(open("http://api.stackexchange.com/2.1/questions/20277?site=codegolf&filter=!azbR89z2Zw*dg.").read)["items"][0]
a=q["answers"]
puts"A#{a.count}C#{[q,*a].reduce(0){|m,o|m+o["comments"].to_a.count}}"

291 คำตอบก่อนหน้า:

require'open-uri';require'json'
def g(o,l,f);JSON.parse(open("http://api.stackexchange.com/2.1/#{o}/#{l}/#{f}?site=codegolf").read)["items"];end
q=20277
p=g("questions",q,"answers").inject([q]){|m,o|m<<o["answer_id"]}
puts"A#{p.count-1}C#{p.map{|i|g("posts",i,"comments").count}.reduce(:+)}"

ให้เครดิตกับ Peter Tailor สำหรับแนวคิดในการใช้ API และ Charles เพื่อชี้ไปยัง API ที่ดีกว่า


นั่นคือความคิดของฉัน!
ไม่ใช่ชาร์ลส์ที่

จริงๆแล้วการใช้ API ที่กรองของคุณนั้นดีกว่า การทำเช่นเดียวกันกับที่นี่จะกำจัดตัวละครของฉันออกไปเกือบ 120 ตัว :-)
Denis de Bernardy

4

Python 160 ตัวซ้อน

การดำเนินงาน

s=__import__("stackpy").Site("codegolf");q=s.questions(20277);a=q.answers
print"A%dC%d"%(len(a),sum(len(s.answers(e.id()).comments)for e in a)+len(q.comments))

เอาท์พุต

A13C60

บันทึก

เมื่อวานนี้ฉันไตร่ตรองในการใช้ stackexchange API แต่ใช้เวลาพอสมควรเพื่อให้ฉันเข้าใจว่ามันทำงานอย่างไร วันนี้ฉันเห็นว่ามีคำตอบสองสามข้อในหัวข้อเดียวกัน เพื่อให้คำตอบของฉันแตกต่างกันเล็กน้อยฉันก็ใช้ห้องสมุดภายนอก

ยังตระหนักอีกว่าคำตอบอื่น ๆ ที่อาศัยการแยกวิเคราะห์สำหรับรูปแบบเช่น

มีแนวโน้มที่จะแตกสลายได้ตลอดเวลาในไม่ช้าดังนั้นคำตอบที่ชัดเจนยิ่งขึ้นคือการพึ่งพาวิธีการที่แข็งแกร่งเช่นนี้


3

R 239

library(XML);F=function(x,y,f=length,z='')sum(as.double(xpathSApply(htmlParse('http://qr.net/1_'),sprintf('//%s[@class="%s"]%s',x,y,z),f)));cat("A",F("div","answer"),"C",F("a","comments-link ",xmlValue,"//b")+F("td","comment-text"),sep="")

หลังจากที่ฉันโพสต์คำตอบของฉันผลลัพธ์คือ:

A13C60

F("div","answer")และF("td","comment-text")ไม่ทำงานสำหรับฉัน ( Error in F("div", "answer") : (list) object cannot be coerced to type 'double') ค่าเริ่มต้นไม่ควรfเป็นfunction(x)length(xmlValue(x))แทนlengthหรือคล้ายกัน?
plannapus

มันใช้งานได้สำหรับฉัน ... xpathSApply(...,length)ควรส่งคืนเวกเตอร์ไม่ใช่รายการ ฉันไม่แน่ใจว่าทำไมคุณจะได้รับรายชื่อ และไม่ฉันหมายถึงใช้จริง ๆlengthและไม่ใช่function(x)length(xmlValue(x)): เป้าหมายคือการได้เวกเตอร์1s หนึ่งอันสำหรับแต่ละความคิดเห็นหรือคำตอบ
flodel

ok ปรากฎความจริงที่ว่าxpathSApplyสามารถใช้ฟังก์ชั่นอื่น ๆ (เช่นlength) กว่าxmlValueและสิ่งที่คล้ายกันนั้นเป็นสิ่งแปลกใหม่จากรุ่น 3.94 ของแพคเกจ (ถ้าฉันเข้าใจอย่างถูกต้องการเปลี่ยนแปลงของพวกเขา) นั่นอาจเป็นสาเหตุว่าทำไมมันไม่ทำงานสำหรับฉัน ใช่ฉันมีความคิดว่าคุณอยากเวกเตอร์ของ 1s แต่มีรุ่นของฉันของแพคเกจฉันสามารถบรรลุว่าด้วยการแทนเพียงfunction(... length
plannapus

3

ไม่อยากจะเชื่อเลยว่าจะไม่มีใครได้มาจนถึงตอนนี้! ทางออกที่ตรงที่สุดที่จะใช้ :-)

jQuery, 116 101 chars (ปิดการแข่งขัน)

บางทีนี่อาจไม่เป็นไปตามกฎฉันเก็บไว้เพื่อความสนุก - โซลูชัน jQuery ไม่ควรพลาด :) อย่างน้อยก็เป็นข้อมูลอ้างอิงเพื่อทดสอบสคริปต์ของคุณ !!! ;-)

ลองเรียกใช้จากคอนโซล FireBug:

$('.comments-link').click();
setTimeout("alert('A'+$('.answer').length+'C'+$('.comment').length)",999)

หากคุณมีการเชื่อมต่อที่ช้าเพิ่มการหมดเวลา :-) ขอบคุณ @Fez Vrasta สำหรับแนวคิดที่ยอดเยี่ยมในการคลิกลิงก์ "แสดงเพิ่มเติม"!


บางสิ่งอื่น ๆ ที่จะทำลายการแก้ปัญหาของผู้อื่น class = "ความคิดเห็น" และระเบิดหมดเวลา ฮ่า ฮ่า


สิ่งนี้จะไม่ทำงานหากปิดหน้าเว็บดังที่คำถามต้องการ
bodo

ใช่ jQuery ทำงานได้ไม่ดีในหน้าปิด :-) ฉันเดาว่ามันออกจากการแข่งขัน แต่ไม่ควรพลาดจริงๆ! :)
โทมัส

ฉันทำอย่างนั้นและคำตอบของฉันก็ถือว่าไม่ถูกต้อง ฉันลบมัน
Victor Stafusa

@Victor ทำไมไม่เก็บไว้เพื่อความสนุกล่ะ? คุณมีตัวอักษรกี่ตัว?
โทมัส

@Tomas ตกลงฉันยกเลิกการลบ
Victor Stafusa

3

PHP: 184 172

<?$h=file_get_contents('http://qr.net/_9');preg_match_all('/<t.*nt="([0-9]*)/',$h,$c);echo 'A'.substr_count($h,'rcell">').'C'.(array_sum($c[1])+substr_count($h,'mment">'));

คำอธิบาย:

<? // short open tag
  $h = file_get_contents('http://qr.net/_9'); // store in $h the content of the shortened url of the page
  preg_match_all('/<t.*nt="([0-9]*)/', $h, $c); // find each "show/hide X more comments" and store the numbers in $c
  echo
    'A' // output A
    .substr_count($h,'rcell">') // output the count of the occurrences of 'rcell">' (short for '"answercell">')
    .'C' // output C
    .( 
      array_sum( $c[1] ) // output the sum of the collapsed comments found before
      + 
      substr_count( $h, 'mment">') // output the count of the occurrences of 'mment">' (short for '"comment">')
    );

เป็นครั้งแรกที่ PHP ชนะภาษาอื่นในสคริปต์กอล์ฟ: ')


มาร์กอัปพิเศษบางอย่างในหัวข้อนี้เพื่อหลีกเลี่ยง regex "cheats":

แสดงความคิดเห็นอีก9999รายการ


2
123456ดองมากขึ้น rcell "rcell" rcell "rcell" rcell "rcell" rcell "rcell" rcell "rcell" rcell "rcell" rcell "rcell" rcell "
เครื่องปั่น

1
เจ้าโอเคจะแก้ไขได้
Fez Vrasta

1
"เป็นครั้งแรกที่ PHP เต้นภาษาอื่น ๆ ในสคริปต์กอล์ฟ" มันเป็นความจริงที่ว่ามันหายาก แต่ก็มีอยู่ไม่มาก
plannapus

3
ดี nt = "99" ... ความคิดเห็นของคุณดูเหมือนจะผิด ... :-P มันเป็นเรื่องที่น่าขันเป็นอย่างยิ่งที่มีคนลงโทษผู้โกง regex กำลังโกงเช่นกัน :-)
โทมัส

1
ไม่ แต่ฉันรู้สึกเบื่อที่จะใช้ชีวิตที่นี่เพื่อแก้ไขสคริปต์ที่โง่ ๆ นี้: P
Fez Vrasta

2

โหนด, 403

r=require;m='comments'
r('http').get("http://api.stackexchange.com/2.1/questions/20277?site=codegolf&filter=!azbR89z2Zw*dg.").on('response',function(p){p.pipe(r('zlib').createGunzip(o="")).on('readable',function(){o+=this.read()}).on('end',function(){d=JSON.parse(o).items[0]
r('util').print("A",d.answer_count,"C",(d[m].length+d.answers.reduce(function(p,c){return p+(c[m]?c[m].length:0)},0)))})})

เข้าถึง API เพียงครั้งเดียว ... อาจสั้นลงได้ แต่ฉันยังใหม่กับโหนด


2

153 151 147, C # & CsQuery

C # ด้วย CsQuery:

    var d = CsQuery.CQ.CreateFromUrl("http://qr.net/1_");
    Console.Write("A" + d[".answer"].Count() + "C" + d[".comment"].Count());

โปรแกรมเต็มรูปแบบ:

class P{static void Main(){var d =CsQuery.CQ.CreateFromUrl("http://qr.net/1_");Console.Write("A"+d[".answer"].Count()+"C"+d[".comment"].Count());}}

118 C # & CsQuery ใน LINQPad หรือใน Roslyn

หากทำงานผ่าน LINQPad จะได้รับอนุญาต:

var d =CsQuery.CQ.CreateFromUrl("http://qr.net/1_");Console.Write("A"+d[".answer"].Count()+"C"+d[".comment"].Count());

ผลิต:

A14C48

สนุกกว่ากัน

F # ด้วย CsQuery, 143:

[<EntryPoint>]
let main x= 
 let d=CsQuery.CQ.CreateFromUrl("http://qr.net/1_")
 printfn "A%dC%d" d.[".answer"].Length d.[".comment"].Length
 0 

1

ไม่ถูกต้องตอบไม่ถูกต้อง - ที่นี่เพียงเพื่อความสนุก

Javascript + jQuery - 155

เพียงวางไว้ในคอนโซลของคุณ สมมติว่าจะมีหน้าเดียวเท่านั้น:

(function(){var n=$(".comment").length;$(".comments-link b").each(function(g,f){n+=parseInt($(f).html())});return"A"+$("#answers .answer").length+"C"+n})()

1
ฉันคิดว่า "สคริปต์ของคุณต้องทำงานเมื่อปิดหน้านี้เมื่อเริ่มต้น" มีวัตถุประสงค์เพื่อตัดสิทธิ์คำตอบประเภทนี้
Peter Taylor

คำตอบนี้ไม่ถูกต้อง
Fez Vrasta

อาจได้รับการปรับปรุงให้ดีที่สุด แต่เนื่องจากมันไม่ถูกต้องและไม่สามารถกู้ได้ฉันจึงไม่ได้พยายามปรับปรุงมัน
Victor Stafusa

คุณสามารถขยายความคิดเห็นที่ยุบแล้วซึ่งเรียกเหตุการณ์คลิกในแต่ละรายการ "show x more"
Fez Vrasta
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.