Escriba un software que imprima en stdout el número de respuestas y el número de comentarios (visibles y colapsados de preguntas y respuestas) de esta pregunta / página.
Su script debe ejecutarse con esta página cerrada cuando se inicia.
Salida de ejemplo esperada:
A12C40
Donde A representa Respuestas y C para Comentarios.
Respuestas:
Perl,
91 9692 caracteresAlgunas cosas solo para romper soluciones de otros ja ja ja :-P
mostrar 93 comentarios más
href
nt = "99" (ja, ja, choque @Fez Vrasta)
a, mostrar 99 mostrar 99 ja, ja
href href href ja, ja, ja :-D
jeeez, acabo de romper mi propia respuesta! ¡Descubrí que uno de los trucos anteriores, que pensé que no hace nada, comenzará a funcionar después de que esta respuesta no se edite por un tiempo! Por lo tanto, sus soluciones funcionarán solo por un tiempo. Es por eso que has visto +1 respuesta más en tus soluciones. ¡Es una bomba temporizada! Mi respuesta ya es propensa a eso :-) Aaah, encontré una manera de lanzarlo AHORA ...
fuente
perl -E
. Borrando mi comentario También puede eliminar su referencia a mi respuesta, ya que ya no la estáXQuery,
169,160, 165Más legible (con espacios):
BaseX se utilizó como procesador XQuery.
fuente
doc()
función) si esta página fuera XML válido ...$d//*[@class="comments-link"]/b
es para lo que sirve (en la etiqueta <b> se muestra el número de comentarios ocultos)Pitón 3, 180
Supongo que esta pregunta no tendrá varias páginas de respuestas.
fuente
A13C20
. Incluya un soporte en ángulo en la expresión regular y creo que debería ser bueno, ya que se escapan.,sep=''
BASH + AWK
163,144,138,111,110,114,131,132, 105Que es lo mismo que esto, pero sin redirigir a un archivo:
Salida de corriente
Explicación
rizoTransfiere una URL.
-s
encurl
es para el silencio. Y-L
para seguir las redirecciones.Para analizar el archivo. Como algunas respuestas tenían algún código para romper otras respuestas, el análisis se ha modificado para que se analice desde el principio de la línea
(^
) para asegurarse de que no esté roto.-F'[<>]'
establecer separadores de campo como<
o>
. De esta forma, el texto se puede analizar correctamente para "mostrar XXX comentarios más"./^[\t]*>show <b>/{c+=$4}
en las líneas que contienen "espacios ....> show", consigue el cuarto campo (basado en<
,>
separadores) y añadir el valor a los comentarios de contador./^[ ]*<tr.*s="comm/{++c}
en líneas que contienen "espacios .../^<td.*rcell">/{++a}
en líneas que contienen "", incremente el contador de respuestas.END{print "A"a"C"c}
imprime la salida.fuente
m
yf
en su código:echo "A$(grep -c 'rcell">' m)C$(grep -c 'mment">' f)"
debería serecho "A$(grep -c 'rcell">' f)C$(grep -c 'mment">' f)"
, ¿no?PHP que realmente funciona (302 caracteres)
A diferencia de todas las otras respuestas hasta ahora, esto devuelve la respuesta correcta incluso cuando la pregunta se derrama en más de una página.
fuente
(count($i)-1)
corrige el recuento para no incluir la pregunta.[]
lugar dearray()
inicializar$i
tiene más de 100 elementos. (Mi propia versión de la misma en ruby no tiene esta limitación. Aunque es cierto que puede toparse con los límites de la API. ;-))R, 326
Con sangría y explicaciones:
Probado con esta página , proporciona el número correcto de comentarios (incluidos los ocultos) en la página principal y el número correcto de respuestas, es decir
A23C63
.Y aquí hay una solución con 482 caracteres que captura el número correcto de comentarios si la pregunta termina extendiéndose en varias páginas:
Sangrado:
Tratado en esta pregunta y da salida:
A125C499
.fuente
HTML, 37
Lo sentimos, sigue el abuso de reglas descaradas.
Explicación
q0x.eu/1
redirige a: http: //api.stackexchange.com/2.1/questions/20277/comments? site = codegolf & callback = ...donde la devolución de llamada es:
q0x.eu/2
redirige a http: //api.stackexchange.com/2.1/questions/20277/answers? site = codegolf & callback = ...y
q0x.eu/3?n=...
redirige a http: //api.stackexchange.com/2.1/answers/.../comments? site = codegolf & callback = ...Originalmente estaba tratando de hacerlo legítimamente y todavía podría intentarlo, ¡pero fue divertido de todos modos!
fuente
q0x.eu/1
entonces? PD: las soluciones legítimas no pueden vencer a Perl de todos modos ;-) (desafío descarado)curl q0x.eu/1
o algo, pero era demasiado vago ...Ruby 175 (cuenta a través de las páginas, usando la API en lugar del DOM)
Eso es 242 sin la URL acortada:
Respuesta anterior 291:
Créditos a Peter Tailor por la idea de usar la API, y a Charles por apuntar hacia una API mejor.
fuente
Python con stackpy 160
Implementación
Salida
Nota
Ayer contemplé el uso de la API de stackexchange, pero me tomó un tiempo entender cómo funciona. Hoy, vi que había un par de respuestas sobre el mismo tema. Para hacer mi respuesta un poco diferente, pensé en usar una biblioteca externa.
También tenga en cuenta que otras respuestas que se basan en el análisis de patrones como
es probable que se rompan pronto, por lo que una respuesta más definitiva es confiar en un método robusto como este.
fuente
R 239
Después de publicar mi respuesta, el resultado es:
fuente
F("div","answer")
yF("td","comment-text")
no funciona para mí (Error in F("div", "answer") : (list) object cannot be coerced to type 'double'
) ¿No debería ser el valor predeterminado paraf
ser enfunction(x)length(xmlValue(x))
lugar delength
, o algo similar?xpathSApply(...,length)
debería devolver un vector, no una lista. No estoy seguro de por qué obtendrías una lista. Y no, realmente quiero usarlength
y nofunction(x)length(xmlValue(x))
: el objetivo es obtener un vector de1
s, uno para cada comentario o respuesta.xpathSApply
puede tomar otras funciones (comolength
)xmlValue
y otras similares es una novedad de la versión 3.94 del paquete (si entiendo correctamente su registro de cambios). Quizás por eso no funcionó para mí. Sí, tengo la idea de que querías un vector de 1s, pero con mi versión del paquete solo puedo lograrlo enfunction(...
lugar de sololength
.¡No puedo creer que a nadie se le haya ocurrido hasta ahora! La solución más directa para usar :-)
jQuery,
116101caracteres (fuera de competencia)Quizás esto no va con las reglas, lo mantengo solo por diversión: ¡no puede faltar la solución jQuery :) Al menos como referencia para probar sus scripts! ;-)
Intenta ejecutar desde la consola FireBug:
Si tiene una conexión lenta, aumente el tiempo de espera :-) ¡Gracias @Fez Vrasta por la gran idea de hacer clic en los enlaces "mostrar más"!
Algunas otras cosas para romper la solución de los demás, clase = "comentario" y la bomba temporizada, ja, ja
fuente
PHP:
184172Explicación:
Por primera vez, PHP supera a otros idiomas en scripts de golf: ')
Algunas marcas adicionales a este tema para evitar "trucos" de expresiones regulares:
mostrar 9999 comentarios más
fuente
Nodo, 403
Solo golpea la API una vez ... probablemente pueda acortarse, pero soy nuevo en Node.
fuente
153151147, C # y CsQueryC # con CsQuery:
Programa completo:
118 C # & CsQuery en LINQPad o en Roslyn
Si se permite ejecutar a través de LINQPad, entonces:
Produce:
Un poco más de diversión.
F # con CsQuery, 143:
fuente
RESPUESTA SIN VALOR NO VÁLIDA - AQUÍ SOLO POR DIVERSIÓN
Javascript + jQuery - 155
Solo pégalo en tu consola. Asume que solo habría una página:
fuente