이 질문에는 몇 개의 답변이 있습니까?


16

이 질문에 대한 정수의 답변을 출력하는 프로그램이나 함수를 작성하십시오. 더 많은 답변이 추가되면 솔루션이 계속 작동합니다.

브라우저에서 실행되는 언어는이 페이지에있는 동안 js 콘솔에서 실행될 수 있습니다. 그렇지 않으면이 페이지를 다운로드해야 할 것입니다. 다국어 솔루션, 예 wget를 들어 페이지를 분석하고이를 사용하여 구문 분석하는 grep것은 좋습니다. 명령 행과 사용 된 모든 소스를 요약하면됩니다.

이것은 코드 골프입니다. 바이트 단위의 최단 답변이 이깁니다.

편집하다:

이 페이지의 URL 중 최대 하나의 입력을 입력 또는 소스로 계산하지 않도록합시다. URL 단축기, get 매개 변수 등으로 저장된 데이터가 없습니다. 필요한 경우 URL 주위의 따옴표가 여전히 중요합니다. URL을 입력으로 사용하는 것도 좋습니다. 예를 들어 URL의 일부를 제거하려는 경우 /how-many-answers...가능하지만 도움이되지 않을 수 있습니다.


지금은 이것을 판단하기에는 너무 늦었지만 카운트에 삭제 된 답변이 포함되어야합니까?
Dennis

2
@Dennis 삭제 된 답변을 볼 수 없으므로 아무도 걱정하지 않아도됩니다. 원한다면 세어보세요. 나는 그들을 볼 수 없기 때문에 그들을 세지 않을 것입니다.
Filip Haglund

함수가 URL을 입력으로 받아 들일 수 있습니까? 그런 다음 입력이 바이트 수로 계산됩니까?
JungHwan Min

2
@FilipHaglund, 코드의 URL 바이트 수를 총 수에서 빼거나 ​​입력으로 가져 오는 것이 가장 적합하다고 생각합니다. 브라우저에서 실행되지 않는 언어는 불가능합니다. 우승 기회
Daniel

1
(일부 언어에서는 입력하는 데 더 많은 바이트가 필요할 수 있지만) http://...소스 코드에 URL 이 그대로 표시되는 경우에만 빼기를 허용 합니다.
Dennis

답변:


14

자바 스크립트 + jQuery, 23 바이트

_=>+$("h2>span").text()

h2>span도전의 본문에 있다면 이것이 실패 할 수 없었 습니까?
Martin Ender

3
그런 다음 답변에 추가하면 좋을 것입니다. :)
Martin Ender

1
이것을 실행 가능하게 만들 수 있습니까 ( "실행 코드 스 니펫")?
RudolfJelin

13
이것은 순수한 JavaScript가 아닌 jQuery를 사용한다는 점에 유의하십시오 (즉, "JavaScript"로 레이블되어서는 안 됨). 언어 위에 포함 된 라이브러리를 사용하는 경우 최소한 명시 적으로 언급해야합니다. 나는 jQuery 사용에 대해 논쟁하지 않고 단지 언급해야한다고 주장했다.
Makyen

1
@Makyen StackOverflow의 네트워크는 jQuery를 사용합니다. "브라우저에서 실행되는 언어는이 페이지에있는 동안 js 콘솔에서 실행될 수 있습니다." jQuery는 이미로드되었으므로로드 할 필요가 없습니다. 아마도 jQuery가 지정되지 않은 이유입니다.
Ismael Miguel

4

수학, 33 바이트

Length@Import[#,"Data"][[4,2]]-1&

입력은이 페이지의 URL입니다.


4

Python 2, 120 바이트, URL없이 79

나는이 도전을 위해 파이썬이 만들어 졌다고 말할 수 없습니다.

import urllib
print[l for l in urllib.urlopen("http://codegolf.stackexchange.com/q/96298")if"answerCount"in l][0][83:-9]

불행히도 인라인 가져 오기는 길이가 같습니다 :(

골프를 치는 데 도움이 되시면 대단히 감사하겠습니다!

URL (무려 41 바이트 – 1/3 바이트 이상)을 입력으로 사용할 수 있으면 82 바이트입니다.

import urllib
lambda u:[l for l in urllib.urlopen(u)if"answerCount"in l][0][83:-9]

1
requests라이브러리를 사용해보십시오
noɥʇʎԀʎzɐɹƆ

후행 슬래시를 생략 할 수 있다고 생각합니다 ...?
TheInitializer

@ TheInitializer, 오 예 감사합니다!
Daniel

import urllibimport urllib as u다음으로 변경하면 3 바이트를 절약 할 수 있습니다.
sonrad10

@ sonrad10, 어떻게? 길이는 같아요?
Daniel

3

자바 스크립트, 67 바이트

alert($(".answers-subheader").children().first().children().html())

너무 길어 보여


3

자바 스크립트 (ES5), 46 44 40 38 33 바이트

_=>parseInt($('#answers').text())

Ismael Miguel 덕분에 5 바이트 절약

참고 : 이 속도는 느리고 PPCG-Design 사용자 스크립트가 있으면 작동하지 않습니다.


이것은 다른 Javascript 답변 과 크게 다르지 않습니다 . 실제로 이것은 단순히 최적화되지 않은 버전입니다.
Ismael Miguel

@IsmaelMiguel 1. 다른 것 보다 먼저 쓰여졌 고, 2. 다른 답이 사용하는 숨겨진 것 보다 먼저 요소 사용합니다.
ASCII 전용

그럴 수 있지. 그러나을 사용할 수 있습니다 parseInt($('#answers').text()). 그러면 몇 바이트가 절약됩니다.
Ismael Miguel

3

CJam, 15 바이트

lg"2>"/1=A>S/0=

이 페이지의 URL이 입력으로 예상됩니다.

작동 원리

l                e# Read a line (the URL) from STDIN.
 g               e# Fetch the resource the URL points to.
  "2>"/          e# Split the source at occurrences of "2>".
       1=        e# Select the second chunk, i.e., everything between the first
                 e# <h2> and the first </h2>.
         A>      e# Discard the first 10 characters (a linefeed and 9 tabs).
           S/0=  e# Split at spaces and select the first chunk.

1

171 바이트 bash + 3 키 lynx

lynx -cfg=<(echo PRINTER:Answercount:grep [0-9]*.Answers %s|less:FALSE:999') http://codegolf.stackexchange.com/questions/96298/how-many-answers-does-this-question-have

Count Count는 5에서 6으로 증가했습니다. ;-)
Roman Czyborra

1
다음으로 대체 할 수 http:// ... 있습니다http://codegolf.stackexchange.com/q/96298
JungHwan Min

171-49 = 122로도 절망적으로 뒤쳐 질 것이므로 제로 리디렉션을 선호했습니다.
로마 Czyborra

1

99 바이트 sh + curl + jq + stackexchange API

curl -s --compressed api.stackexchange.com/questions/96298/answers?site=codegolf|jq .items\|length

API를 사용하여 페이지 형식 및 HTML과 관련된 문제를 피할 수있었습니다. 불행히도 내 대답 중 60 바이트는이 특정 API 쿼리의 최대 골프 URL이며 curl은 쿼리 결과의 압축을 풀기 위해 13 바이트입니다 .stackexchange는 API를 통해 압축되지 않은 데이터를 제공하지 않기 때문입니다.

실제 "논리"는이 게시물에 대한 답변으로 json에게 답변을 요청하기 위해 api를 컬링하는 데 있습니다. 압축이 풀린 다음 json 파서 인 jq로 파이프되어 "항목"배열을 추출하여 길이를 출력합니다.

api가 응답 수를 반환하는 것에 놀랍도록 가까이 갈 수는 있지만, 내가 생각해 낼 수있는 것에서 100 %를 얻을 수 없었으며, 점점 가까워지면 jq를 통과하는 것보다 더 많은 바이트가 필요합니다.

{ "total":}을 (를) 반환하는 101 바이트 :

curl -s --compressed api.stackexchange.com/questions/96298/answers?site=codegolf&filter=!)V)MSZJUgX_

API 쿼리의 필터 매개 변수는 매우 강력하지만 "url curl"솔루션을 제공하는 데는 부족합니다. 여기에 중간 응답이있을 수 있습니다. 더 짧은 응답을 얻은 다음 줄을 세거나 숫자를 추출 할 수는 있지만 불행히도 필터 문자열은 설정된 길이이며 필요한 jq 명령은 이미 더 효율적입니다.


멋있는. URL shortener를 사용하고 -L 옵션을 추가하여 curl follow redirect를 만들려면 많은 바이트를 절약 할 수 있습니다. 예 :curl -sL --compressed bit.ly/2ebw404|jq .total
sergioFC


@Dennis 몰랐습니다, 감사합니다.
sergioFC

1

PHP, 76 (코드) + 41 (URL) = 117 바이트

preg_match_all('<h2>(.*) answers<span',file_get_contents("http://codegolf.stackexchange.com/q/96298"),$o);
echo $o[0];

1

자바, 230 269-41 = 228 바이트

interface A{static void main(String[]a)throws Exception{System.out.print(new java.util.Scanner(new java.net.URL("http://codegolf.stackexchange.com/q/96298").openStream()).useDelimiter("\\Z").next().replaceAll("\n|\r","").replaceAll("^.+?\\s+(\\d+) Answers.+$","$1"));}}

(삭제되지 않은 답변 만 계산)


0

JavaScript + jQuery (이미 페이지에 포함됨), 20 바이트

+$('h2>span').text()

이 프로그램은 현재 페이지의 콘솔에서 실행되도록 고안된 프로그램입니다 (로 열림 F12). 따옴표없이 답변 수를 출력합니다. Chrome, Firefox, IE11 및 Edge에서 작동합니다. 다른 브라우저에서 작동해야하지만 나열된 브라우저에서만 테스트했습니다.

여기의 다른 JavaScript 솔루션과 달리 ES6 화살표 함수 표기법을 사용 하는 함수 표현식이 아닌 자체 프로그램 입니다. 또한 이러한 솔루션과 달리 콘솔에서는 실제로 출력을 생성하지 않는 함수 표현식이 아니라 응답 수와 함께 따옴표없이 출력을 생성합니다. 출력을 생성하려면 각 브라우저 콘솔의 기능에 따라 해당 표현식이 평가 된 후 표현식의 값이 출력됩니다.

이것은 요소 인 <span>부모가있는 페이지 의 유일한 내용 에 의존 <h2>하며 텍스트 내용으로 답변 수를 포함 하는 요소입니다. 실험 후이 나타납니다 사건으로, 의도적를 만들 수 나타나지 않습니다 <h2>로모그래퍼 <span>에디터 사용하여 아이 : 모든 명시 적으로 삽입 된 <span>요소가 제거됩니다없이 마크 다운을 스택 거래소에 사용 된 바와 같이, 실제 생성 <span><h2>. 'h2>span'선택자가 더 이상 고유하지 않도록 페이지를 조작 할 수있는 경우를 누군가가 입증 할 수 있으면 이를 수정해야합니다.

숫자 대신 문자열로 평가하는 것이 허용되는 경우

JavaScript + jQuery (이미 페이지에 포함됨), 19 바이트

$('h2>span').text()

그러나 이것은 포함 된 것으로 평가되지는 않지만 ""테스트 된 모든 콘솔에서 에 포함 된 출력을 생성합니다 "". 이 결과를 배제하는 것으로 질문에 대한 Filip Haglund의 의견을 읽었습니다.


0

R, 80 바이트

답은 readLines정규 표현식 을 사용하여 반환 된 벡터를 검색하는 것을 기반 으로합니다. 나는 이것이 의견 / 답변의 텍스트 (아마도 내 자신의 것)로 인해 깨질 수 있다고 생각합니다. 그렇다면 삭제합니다. 또한 패턴이 왜곡 될 수 있지만 잘못된 값을 얻을 가능성이 높아지는 지 확실하지 않습니다.

x=readLines(scan(,""));regmatches(x,regexpr("(?<=answerCount\">).*?(?=<)",x,,T))
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.