Quante risposte ha questa domanda?


16

Scrivi un programma o una funzione che genera il numero intero di risposte a questa domanda. La tua soluzione dovrebbe comunque funzionare man mano che vengono aggiunte più risposte.

Le lingue che vengono eseguite in un browser possono essere eseguite dalla console js su questa pagina. Altrimenti, probabilmente dovresti scaricare questa pagina. Le soluzioni multi-lingua, ad es. La ricerca wgetdella pagina e l'analisi tramite, grepè ok. Riassumi la riga di comando e tutta la fonte utilizzata.

Questo è il codice golf; vince la risposta più breve in byte.

MODIFICARE:

Consentiamo al massimo una occorrenza dell'URL di questa pagina di non contare, sia come input che come sorgente. Nessun accorciatore di url, nessun dato memorizzato come parametri di acquisizione ecc. Le citazioni intorno all'url, se necessario, contano comunque. Anche prendere l'URL come input va bene. Se vuoi rimuovere una parte dell'URL, ad esempio /how-many-answers..., puoi, ma probabilmente non ti aiuta.


Probabilmente è troppo tardi per decidere ora, ma il conteggio dovrebbe includere le risposte eliminate?
Dennis,

2
@Dennis Non riesco a vedere le risposte cancellate, quindi direi che nessuno deve preoccuparsi di loro. Contali se vuoi. Non li conto dal momento che non riesco a vederli.
Filip Haglund,

La funzione può accettare l'URL come input? L'immissione conta quindi ai fini del conteggio secondario?
JungHwan Min

2
@FilipHaglund, penso che avrebbe molto senso che il conteggio dei byte URL nel codice fosse sottratto dal conteggio totale o fosse preso come input perché quel genere rende impossibile per le lingue che non vengono eseguite nel browser avere la possibilità di vincere
Daniel,

1
Ciò (sebbene in alcune lingue l'assunzione di input possa richiedere ancora più byte) o consentire di sottrarre solo se l'URL http://...appare testualmente nel codice sorgente.
Dennis,

Risposte:


14

Javascript + jQuery, 23 byte

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

Non potrebbe fallire se ci fosse qualcosa h2>spannel corpo della sfida?
Martin Ender,

3
Potrebbe essere utile aggiungerlo alla risposta allora. :)
Martin Ender,

1
Questo potrebbe essere reso eseguibile ("esegui snippet di codice")?
RudolfJelin,

13
Nota che questo utilizza jQuery che non è puro JavaScript (ovvero non dovrebbe essere etichettato come "JavaScript"). L'uso di una libreria inclusa nella lingua dovrebbe almeno essere esplicitamente dichiarato. Non sto discutendo contro l'utilizzo di jQuery, solo che dovrebbe essere dichiarato.
Makyen,

1
La rete di @Makyen StackOverflow utilizza jQuery. La domanda dice "Le lingue che vengono eseguite in un browser possono essere eseguite dalla console js mentre ci si trova in questa pagina". jQuery non deve essere caricato, poiché lo era già. Forse è per questo che jQuery non è specificato.
Ismael Miguel,

4

Mathematica, 33 byte

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

L'input è l'URL di questa pagina.


4

Python 2, 120 byte, 79 senza URL

Non posso dire che Python sia stato creato per questa sfida.

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

Sfortunatamente, l'importazione in linea ha la stessa lunghezza :(

Qualsiasi aiuto con questo golf sarebbe ulteriormente apprezzato!

Se l'URL (un enorme 41 byte — oltre 1/3 del mio conteggio byte) può essere preso come input, è 82 byte:

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

1
Prova a utilizzare la requestslibreria
noɥʇʎԀʎzɐɹƆ

Penso che la barra finale possa essere omessa ...?
TheInitializer,

@TheInitializer, oh sì grazie!
Daniel,

Se cambi la linea import urllibin import urllib as uallora puoi salvare 3 byte
sonrad10

@ sonrad10, come mai? Finisce per avere la stessa lunghezza, no?
Daniel,

3

Javascript, 67 byte

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

Questo aspetto è troppo lungo


3

Javascript (ES5), 46 44 40 38 33 byte

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

5 byte salvati grazie a Ismael Miguel

Nota: è piuttosto lento e non funzionerà se si dispone dello script utente PPCG-Design.


Questo non è molto diverso dall'altra risposta Javascript . In realtà, questa è semplicemente una versione non ottimizzata di esso.
Ismael Miguel,

@IsmaelMiguel 1. È stato scritto prima dell'altro e 2. Utilizza l'elemento prima di quello nascosto utilizzato dall'altra risposta.
ASCII,

Giusto. Ma puoi usare parseInt($('#answers').text()), che funzionerà. Questo ti fa risparmiare qualche byte.
Ismael Miguel,

3

CJam, 15 byte

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

Si aspetta l'URL di questa pagina come input.

Come funziona

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 chiavi di lince

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

Il Conte Count è appena passato dalle 5 alle 6 ;-)
Roman Czyborra,

1
È possibile sostituire http:// ... conhttp://codegolf.stackexchange.com/q/96298
JungHwan Min

Preferivo il reindirizzamento zero poiché sarei ancora irrimediabilmente indietro anche con 171-49 = 122.
Roman Czyborra,

1

99 byte sh + curl + jq + stackexchange API

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

Utilizzando l'API, sono stato in grado di evitare problemi relativi alla formattazione della pagina e all'html. Sfortunatamente, 60 byte della mia risposta sono l'url al massimo golf per questa particolare query api e altri 13 byte per l'arricciatura per decomprimere il risultato della query, perché stackexchange si rifiuta di fornire dati non compressi tramite l'API.

La vera "logica" deriva dal curling dell'api per chiedere una risposta json con le risposte a questo post. Viene decompresso e quindi reindirizzato in jq, un parser json, che estrae l'array "items" e ne restituisce la lunghezza.

Puoi avvicinarti in modo impressionante al fatto che l'API restituisca solo il numero di risposte, ma da quello che potrei trovare non potresti ottenere il 100% del percorso lì, e avvicinarsi costerebbe più byte che passare semplicemente attraverso jq.

101 byte da restituire {"total":}:

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

Il parametro del filtro nelle query API è molto potente, ma non è in grado di fornire una soluzione "basta arricciare un url". Potrebbe esserci una via di mezzo qui, in cui è possibile ottenere una risposta più breve e quindi contare le righe o estrarre il numero, ma sfortunatamente le stringhe di filtro hanno una lunghezza impostata e il comando jq richiesto era già più efficiente.


Freddo. Nota che puoi salvare molti byte usando un accorciatore di URL e aggiungendo l'opzione -L per fare in modo che l'arricciatura segua i reindirizzamenti; per esempiocurl -sL --compressed bit.ly/2ebw404|jq .total
sergioFC,


@Dennis Non lo sapevo, grazie.
sergioFC,

1

PHP, 76 (Codice) + 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"));}}

(Conta solo le risposte non cancellate)


0

JavaScript + jQuery (già incluso nella pagina), 20 byte

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

Questo è un programma che deve essere eseguito nella console per la pagina corrente (aperta con F12). Emette il numero di risposte, senza virgolette. Funziona in Chrome, Firefox, IE11 e Edge. Dovrebbe funzionare in altri browser, ma l'ho provato solo in quelli elencati.

A differenza di altre soluzioni JavaScript qui, è un programma da solo piuttosto che un'espressione di funzione che usa la notazione di funzione freccia ES6 . Inoltre, a differenza di quelle soluzioni, in realtà produce output (senza virgolette) nella console con il numero di risposte (piuttosto che essere semplicemente un'espressione di funzione che non produce output). La produzione dell'output si basa sulla funzionalità nella console di ciascun browser che il valore di un'espressione viene emesso dopo che tale espressione è stata valutata.

Questo si basa solo <span>sulla pagina con un genitore che è un<h2> elemento elemento è quello che contiene il numero di risposte come contenuto di testo. Dopo la sperimentazione, questo sembra essere il caso, e non sembra possibile creare intenzionalmente un <h2>con un <span>figlio usando l'editor: tutti gli <span>elementi esplicitamente inseriti vengono eliminati e nessun Markdown , come usato su Stack Exchange, crea un effettivo <span>all'interno di un <h2>. Se qualcuno può dimostrare un caso in cui la pagina può essere manipolata in modo tale che il 'h2>span'selettore non sia più univoco, sarà necessario rivederlo.

Se è accettabile valutare una stringa anziché un numero, allora

JavaScript + jQuery (già incluso nella pagina), 19 byte

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

Tuttavia, mentre ciò non valuta di includere "" , in tutte le console testate produce un output racchiuso all'interno "". Ho letto i commenti di Filip Haglund sulla domanda, escludendo questo risultato.


0

R, 80 byte

La risposta si basa sulla ricerca del vettore restituito readLinesutilizzando espressioni regolari. Immagino che questo potrebbe essere rotto dal testo nei commenti / risposte (forse anche nel mio). Cancellerà in tal caso. Inoltre, il pattern potrebbe anche essere gofled ma non sono sicuro se ciò aumenterebbe la probabilità di ottenere un valore falso.

x=readLines(scan(,""));regmatches(x,regexpr("(?<=answerCount\">).*?(?=<)",x,,T))
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.