Có bao nhiêu câu trả lời cho câu hỏi này?


16

Viết chương trình hoặc hàm xuất số nguyên câu trả lời cho câu hỏi này. Giải pháp của bạn vẫn sẽ hoạt động khi có thêm câu trả lời.

Các ngôn ngữ chạy trong trình duyệt có thể được chạy từ bảng điều khiển js trong khi trên trang này. Nếu không, có lẽ bạn phải tải xuống trang này. Các giải pháp đa ngôn ngữ, ví dụ: wgeting trang và phân tích cú pháp bằng cách sử dụng greplà ok. Chỉ cần tổng hợp dòng lệnh và tất cả các nguồn được sử dụng.

Đây là mã golf; câu trả lời ngắn nhất trong byte thắng.

BIÊN TẬP:

Chúng ta không cho phép tối đa một lần sử dụng url của trang này, dưới dạng đầu vào hoặc trong nguồn. Không rút ngắn url, không có dữ liệu được lưu trữ dưới dạng tham số, vv Báo giá xung quanh url, nếu cần, vẫn được tính. Lấy url làm đầu vào cũng tốt. Nếu bạn muốn xóa một phần của url, ví dụ: /how-many-answers...bạn có thể, nhưng nó có thể không giúp bạn.


Bây giờ có lẽ đã quá muộn để kiểm soát vấn đề này, nhưng liệu có nên bao gồm các câu trả lời bị xóa không?
Dennis

2
@Dennis Tôi không thể thấy câu trả lời đã bị xóa, vì vậy tôi sẽ nói không ai phải lo lắng về chúng. Đếm chúng nếu bạn muốn. Tôi sẽ không đếm chúng vì tôi không thể nhìn thấy chúng.
Filip Haglund

Hàm có thể chấp nhận url làm đầu vào không? Đầu vào sau đó sẽ được tính vào bytecount?
JungHwan Min

2
@FilipHaglund, tôi nghĩ rằng sẽ có ý nghĩa nhất khi số byte byte trong mã được trừ vào tổng số hoặc được lấy làm đầu vào vì điều đó khiến cho các ngôn ngữ không thể chạy trong trình duyệt không thể chạy được để có cơ hội chiến thắng
Daniel

1
Điều đó (mặc dù trong một số ngôn ngữ, việc nhập dữ liệu có thể yêu cầu nhiều byte hơn) hoặc chỉ cho phép trừ nếu URL http://...xuất hiện nguyên văn trong mã nguồn.
Dennis

Câu trả lời:


14

Javascript + jQuery, 23 byte

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

Điều này không thể thất bại nếu có một h2>spanthách thức?
Martin Ender

3
Có thể là tốt để thêm điều đó vào câu trả lời sau đó. :)
Martin Ender

1
Điều này có thể được thực hiện ("đoạn mã chạy")?
RudolfJelin

13
Lưu ý rằng điều này sử dụng jQuery không phải là JavaScript thuần túy (nghĩa là nó không nên được gắn nhãn là "JavaScript"). Sử dụng một thư viện được bao gồm trên đầu của ngôn ngữ ít nhất nên được nêu rõ ràng. Tôi không tranh cãi về việc sử dụng jQuery, chỉ là nó nên được nêu ra.
Makyen

1
@Makyen Mạng của StackOverflow sử dụng jQuery. Câu hỏi cho biết "Ngôn ngữ chạy trong trình duyệt có thể được chạy từ bảng điều khiển js khi ở trên trang này." jQuery không cần phải tải, vì nó đã được. Có lẽ đó là lý do tại sao jQuery không được chỉ định.
Ismael Miguel

4

Toán học, 33 byte

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

Đầu vào là url của trang này.


4

Python 2, 120 byte, URL 79 w / o

Tôi không thể nói Python được tạo ra cho thử thách này.

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

Thật không may, nhập nội tuyến có cùng độ dài :(

Bất kỳ trợ giúp với golf này hơn nữa sẽ được đánh giá rất cao!

Nếu URL (một con số khổng lồ 41 byte trên 1/3 số byte của tôi) có thể được lấy làm đầu vào, thì đó là 82 byte:

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

1
Hãy thử sử dụng requeststhư viện
noɥʇʎԀʎzɐɹƆ

Tôi nghĩ rằng dấu gạch chéo có thể được bỏ qua ...?
TheInitializer

@TheInitializer, oh vâng cảm ơn!
Daniel

Nếu bạn thay đổi dòng import urllibthành import urllib as uthì bạn có thể lưu 3 byte
sonrad10

@ sonrad10, làm sao vậy? Nó kết thúc là cùng một chiều dài, không?
Daniel

3

Javascript, 67 byte

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

Cái nhìn này quá dài


3

Javascript (ES5), 46 44 40 38 33 byte

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

5 byte được lưu nhờ vào Ismael Miguel

Lưu ý: Điều này khá chậm và sẽ không hoạt động nếu bạn có bản mô tả người dùng PPCG-Design.


Điều này không khác nhiều so với câu trả lời Javascript khác . Trong thực tế, đây chỉ đơn giản là một phiên bản chưa được tối ưu hóa của nó.
Ismael Miguel

@IsmaelMiguel 1. Nó được viết trước cái kia và 2. Nó sử dụng phần tử trước phần ẩn mà câu trả lời khác sử dụng.
ASCII - chỉ

Đủ công bằng. Nhưng bạn có thể sử dụng parseInt($('#answers').text()), sẽ làm việc. Điều đó giúp bạn tiết kiệm một vài byte.
Ismael Miguel

3

CJam, 15 byte

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

Yêu cầu URL của trang này làm đầu vào.

Làm thế nào nó hoạt động

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 byte bash + 3 phím 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 vừa tăng từ 5 lên 6 ;-)
Roman Czyborra

1
Bạn có thể thay thế http:// ... bằnghttp://codegolf.stackexchange.com/q/96298
JungHwan Min

Tôi thích chuyển hướng số 0 vì tôi vẫn sẽ vô vọng phía sau ngay cả với 171-49 = 122.
Roman Czyborra

1

API 99 byte sh + curl + jq + stackexchange

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

Sử dụng API, tôi có thể tránh các vấn đề liên quan đến định dạng trang và html. Thật không may, 60 byte câu trả lời của tôi là url được đánh gôn tối đa cho truy vấn api cụ thể này và 13 byte khác cho curl để giải nén kết quả của truy vấn, vì stackexchange từ chối cung cấp dữ liệu không nén thông qua api.

"Logic" thực tế đến từ việc uốn cong api để yêu cầu trả lời json với câu trả lời cho bài đăng này. Nó được giải nén và sau đó được dẫn vào jq, một trình phân tích cú pháp json, trích xuất mảng "mục" và xuất độ dài của nó.

Bạn có thể đến gần một cách ấn tượng khi có api chỉ cần trả về số lượng câu trả lời, nhưng từ những gì tôi có thể đưa ra, bạn không thể đạt được 100% cách đó, và đến gần sẽ tốn nhiều byte hơn so với việc chuyển nó qua jq.

101 byte để trả về {"tổng":}:

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

Tham số bộ lọc trong các truy vấn api rất mạnh mẽ, nhưng nó chỉ thiếu việc cung cấp giải pháp "chỉ làm cong một url". Có thể có một nền tảng ở đây, nơi bạn có thể nhận được phản hồi ngắn hơn và sau đó chỉ cần đếm các dòng hoặc trích xuất số, nhưng không may, các chuỗi bộ lọc có độ dài được đặt và lệnh jq cần thiết đã hiệu quả hơn.


Mát mẻ. Lưu ý rằng bạn có thể lưu nhiều byte bằng cách sử dụng trình rút ngắn URL và thêm tùy chọn -L để tạo curl theo các chuyển hướng; ví dụcurl -sL --compressed bit.ly/2ebw404|jq .total
sergioFC


@Dennis Không biết điều đó, cảm ơn bạn.
sergioFC

1

PHP, 76 (Mã) + 41 (URL) = 117 byte

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

1

Java, 230 269-41 = 228 byte

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"));}}

(Chỉ tính các câu trả lời không bị xóa)


0

JavaScript + jQuery (đã bao gồm trong trang), 20 byte

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

Đây là một chương trình dự định được thực hiện trong bảng điều khiển cho trang hiện tại (được mở bằng F12). Nó xuất ra số lượng câu trả lời, không có dấu ngoặc kép. Nó hoạt động trong Chrome, Firefox, IE11 và Edge. Nó nên hoạt động trong các trình duyệt khác, nhưng tôi chỉ thử nghiệm nó trong những trình duyệt được liệt kê.

Không giống như các giải pháp JavaScript khác ở đây, nó là một chương trình chứ không phải là biểu thức hàm sử dụng ký hiệu hàm mũi tên ES6 . Cũng không giống như các giải pháp đó, nó thực sự tạo ra đầu ra (không có dấu ngoặc kép) trong bảng điều khiển với số lượng câu trả lời (thay vì chỉ là một biểu thức hàm không tạo ra đầu ra). Việc tạo đầu ra phụ thuộc vào tính năng trong bảng điều khiển của mỗi trình duyệt rằng giá trị của biểu thức là đầu ra sau khi biểu thức đó được đánh giá.

Điều này phụ thuộc vào duy nhất <span>trên trang có cha mẹ là một <h2>phần tử là phần tử chứa số lượng câu trả lời dưới dạng nội dung văn bản của nó. Sau khi thử nghiệm, điều này dường như là trường hợp và dường như không thể cố ý tạo ra <h2>một <span>đứa trẻ bằng trình chỉnh sửa: tất cả các <span>phần tử được chèn rõ ràng đều bị tước và không có Markdown , như được sử dụng trên Stack Exchange, tạo ra một thực tế <span>trong một <h2>. Nếu ai đó có thể chứng minh trường hợp trang có thể bị thao túng sao cho 'h2>span'bộ chọn không còn là duy nhất, thì điều này sẽ cần phải được sửa đổi.

Nếu đánh giá thành một chuỗi thay vì một số là chấp nhận được, thì

JavaScript + jQuery (đã bao gồm trong trang), 19 byte

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

Tuy nhiên, trong khi điều này không đánh giá được bao gồm "", trong tất cả các bảng điều khiển được thử nghiệm, nó tạo ra đầu ra được bao quanh bên trong "". Tôi đọc những bình luận của Filip Haglund về câu hỏi như loại trừ đầu ra này.


0

R, 80 byte

Trả lời dựa trên việc tìm kiếm vectơ trả về bằng readLinescách sử dụng các biểu thức thông thường. Tôi đoán rằng điều này có thể bị phá vỡ bằng văn bản trong các bình luận / câu trả lời (thậm chí có thể là của riêng tôi). Sẽ xóa nếu vậy. Ngoài ra, mô hình cũng có thể được gofled nhưng không chắc chắn nếu điều đó sẽ làm tăng khả năng nhận được một giá trị sai.

x=readLines(scan(,""));regmatches(x,regexpr("(?<=answerCount\">).*?(?=<)",x,,T))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.