Напишите программное обеспечение, которое выводит на стандартный вывод количество ответов и количество комментариев (видимых и свернутых вопросов и ответов) этого вопроса / страницы.
Ваш скрипт должен запускаться с закрытой страницей при запуске.
Ожидаемый пример вывода:
A12C40
Где А означает Ответы, а С - Комментарии.
Ответы:
Perl,
91 9692 символовНекоторые вещи, просто чтобы сломать решения других, ха-ха-ха :-P
показать еще 93 комментария
HREF
nt = "99" (ха-ха крах @Fez Vrasta)
а, шоу 99 шоу 99 га га
HREF HREF HREF ха-ха-ха-ха :-D
Боже, просто сломал мой собственный ответ! Я обнаружил, что один из вышеперечисленных приемов, который, как я думал, ничего не делает, начнет работать после того, как этот ответ не будет отредактирован в течение некоторого времени! Таким образом, ваши решения будут работать только в течение некоторого времени. Вот почему вы видели еще +1 ответ в ваших решениях ... Это бомба с таймером! Мой ответ уже склонен к этому :-) Аааа, нашел способ, как запустить его СЕЙЧАС ...
источник
perl -E
. Удаление моего комментария. Также вы можете удалить свою ссылку на мой ответ, так как вы больше не торгуете ею :)XQuery,
169,160, 165Более читабельно (с пробелами):
BaseX использовался в качестве процессора XQuery.
источник
doc()
функции), если бы эта страница была действительным XML ...$d//*[@class="comments-link"]/b
(в теге <b> показано количество скрытых комментариев)Питон 3, 180
Я предполагаю, что на этот вопрос не будет нескольких страниц ответов.
источник
A13C20
. Включите угловую скобку в регулярное выражение, и я думаю, что это должно быть хорошо, так как те избегают.,sep=''
BASH + AWK
163,144,138,111,110,114,131,132, 105Который такой же, как этот, но без перенаправления в файл:
Токовый выход
объяснение
локонПередать URL.
-s
вcurl
для молчит. И-L
следовать перенаправлениям.Разобрать файл. Так как некоторые ответы содержали код для разрыва других ответов, синтаксический анализ был изменен таким образом, чтобы он анализировался с начала строки
(^
), чтобы убедиться, что он не поврежден.-F'[<>]'
установить разделители полей как<
или>
. Таким образом, текст может быть правильно проанализирован для «показать XXX больше комментариев»./^[\t]*>show <b>/{c+=$4}
в строках , содержащие «пространства ....> шоу», получить 4 - е поля (на основе<
,>
сепараторы) и добавить значение к комментариям счетчика./^[ ]*<tr.*s="comm/{++c}
на строках, содержащих "пробелы .../^<td.*rcell">/{++a}
в строках, содержащих "", увеличить счетчик ответов.END{print "A"a"C"c}
распечатать вывод.источник
m
иf
в своем коде:echo "A$(grep -c 'rcell">' m)C$(grep -c 'mment">' f)"
должно бытьecho "A$(grep -c 'rcell">' f)C$(grep -c 'mment">' f)"
, нет?PHP, который действительно работает (302 символа)
В отличие от всех других ответов до сих пор, это возвращает правильный ответ, даже если вопрос проливается на более чем одну страницу.
источник
(count($i)-1)
исправляет счет, чтобы не включать вопрос.[]
вместоarray()
инициализации$i
более 100 предметов. (Моя собственная версия этого же в ruby не имеет этого ограничения. Хотя по общему признанию это может столкнуться с ограничениями API. ;-))R 326
С отступом и пояснениями:
Испытано с этой страницы , она дает нужное количество комментариев ( в том числе скрытых) на первой странице и правильного числа ответов, то есть
A23C63
.И вот решение с 482 символами, которое собирает правильное количество комментариев, если вопрос в конечном итоге распространяется на несколько страниц:
Отступ:
Пробовал на этот вопрос и выводится:
A125C499
.источник
HTML, 37
Извините, грубое нарушение правил следует!
объяснение
q0x.eu/1
перенаправляет на: http: //api.stackexchange.com/2.1/questions/20277/comments? site = codegolf & callback = ...где обратный вызов:
q0x.eu/2
перенаправляет на http: //api.stackexchange.com/2.1/questions/20277/answers? site = codegolf & callback = ...и
q0x.eu/3?n=...
перенаправляет на http: //api.stackexchange.com/2.1/answers/.../comments? site = codegolf & callback = ...Первоначально я пытался сделать это законно и, возможно, все еще попробовать, но, тем не менее, это было весело!
источник
q0x.eu/1
? PS: законные решения не могут победить Perl в любом случае ;-) (вопиющий вызов)curl q0x.eu/1
или что-то в этом роде, но было слишком лениво ...Ruby 175 (считает по страницам, используя API вместо DOM)
Это 242 без сокращенного URL:
Предыдущий 291 ответ:
Благодарность Питеру Тейлору за идею использования API и Чарльзу за указание на лучший API.
источник
Python со стеком 160
Реализация
Выход
Заметка
Вчера я размышлял об использовании API stackexchange, но мне потребовалось некоторое время, чтобы понять, как это работает. Сегодня я увидел пару ответов на одну и ту же тему. Чтобы сделать мой ответ немного другим, я использовал внешнюю библиотеку.
Также осознайте, что другие ответы, которые основаны на разборе шаблонов
скорее всего сломается в ближайшее время, поэтому более точный ответ - использовать надежный метод, подобный этому.
источник
R 239
После того, как я отправил свой ответ, вывод:
источник
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
, или что - то подобное?xpathSApply(...,length)
должен вернуть вектор, а не список. Я не уверен, почему вы получите список. И нет, я действительно хочу использовать,length
а неfunction(x)length(xmlValue(x))
: цель состоит в том, чтобы получить вектор1
s, по одному на каждый комментарий или ответ.xpathSApply
can принимает другие функции (напримерlength
)xmlValue
и подобные, является новинкой в версии 3.94 пакета (если я правильно понимаю их список изменений). Возможно, поэтому это не сработало для меня. Да, я понял, что вам нужен вектор 1, но с моей версией пакета я могу добиться этого только с помощьюfunction(...
вместо всегоlength
.Не могу поверить, что до сих пор никто не придумал это! Самое прямое решение для использования :-)
JQuery,
116101 символ (вне конкуренции)Возможно, это не соответствует правилам, я оставляю это просто для удовольствия - решение jQuery не может отсутствовать :) По крайней мере, как ссылка для тестирования ваших сценариев !!! ;-)
Попробуйте запустить из консоли FireBug:
Если у вас медленное соединение, увеличьте время ожидания :-) Спасибо @Fez Vrasta за прекрасную идею нажать на ссылку «показать больше»!
Некоторые другие вещи, чтобы сломать решение других, class = "comment" и бомба с таймером, ха-ха
источник
PHP:
184172Объяснение:
Впервые PHP превосходит другие языки в скриптах для гольфа: ')
Некоторая дополнительная разметка к этой теме, чтобы избежать регулярных выражений "читы":
показать еще 9999 комментариев
источник
Узел, 403
Только попадет в API один раз ... может быть сокращено, но я новичок в Node.
источник
153151147, C # и CsQueryC # с помощью CsQuery:
Полная программа:
118 C # & CsQuery в LINQPad или в Roslyn
Если запуск через LINQPad разрешен, тогда:
Производит:
Еще немного веселья.
F # с CsQuery, 143:
источник
НЕДОПУСТИМЫЙ НЕУДАЧЕННЫЙ ОТВЕТ
Javascript + JQuery - 155
Просто вставьте его в консоль. Предполагается, что будет только одна страница:
источник