Напишите программу, которая подключается к этому сайту, загружает сам ответ, в котором он размещен, извлекает собственный исходный код и распечатывает его. Вывод должен быть идентичен исходному коду. Самый короткий код (в байтах) выигрывает.
Правила:
- Сокращения URL не допускаются.
- Ответ должен иметь обычный формат - заголовок с названием и размером языка, необязательное описание, блок кода, необязательное описание и пояснение. Не допускаются неестественные разделители.
- Вывод должен происходить из фактического блока кода, размещенного на сайте.
- Функциональность не должна зависеть от позиции в списке ответов; это должно работать, даже если есть несколько страниц, и ответьте не на первой.
- Новое: специальное примечание для ответов, которые должны запускаться в браузере: можно требовать их запуска в домене codegolf (для соблюдения политики того же источника), но домен и путь должны быть включены в решение, чтобы сделай это честным
Ответы:
Bash + coreutils + Lynx browser, 61 байт
Спасибо @FDinoff за советы:
источник
codegolf.stackexchange.com/posts/28164/body
И это игнорирует комментарии. Я также думаю, что это в рамках правил, что вы можете использовать его ...Рубин,
15518619514813811097 символовЯ должен был сделать это одной строкой, потому что в противном случае он выводил бы новые строки
\n
вместо реальных.+31 символов, потому что я не заметил, что некоторые символы сбежали.+9 символов, чтобы избавиться от надоедливой обратной косой черты.Объяснение
Давайте сначала немного украсим это. Тем не менее, я собираюсь использовать несколько ... интересные обозначения в этом коде. Я не могу использовать точки с запятой в этом посте по причинам, объясненным позже, поэтому
{SEMI}
вместо них буду использовать точку с запятой.Хорошо, теперь давайте пройдемся по этому. Первые две строки говорят сами за себя - они получают HTML-текст этого ответа.
Теперь последняя строка интересная здесь. Вы видите эту, казалось бы, бесполезную точку с запятой в конце кода? Это абсолютно необходимо, и вот почему.
Сначала
resp.match
извлекает код для печати. Регулярное выражение он использует для этого трюк:/req.+{SEMI}/
. Он захватывает начало кода,REQuire'net/http'
ищаreq
(re
захватил бы мойREputation
). Затем он находит конец кода путем поиска точки с запятой! Поскольку+
по умолчанию он является жадным, он будет продолжать работать до тех пор, пока не найдет точку с запятой, обозначающую конец кода. Видишь, почему я больше не могу использовать точки с запятой?После этого мне не нужно ничего убирать из-за исправления, которое Ventero больше не использовалНет необходимости в этом из-за нового URL. После этого исходный код был восстановлен! (Примечание: я тоже не могу использовать амперсанд, потому что он кодируется HTML, что приводит к созданию точки с запятой.)\
. Все , что я должен сделать , это исправить{AMPERSAND}
изменения в{AMPERSAND}amp{SEMI}
, которое может быть достигнуто лишь путем удаленияamp{SEMI}
части.источник
puts
; это может быть исправлено,print
но Мех. Просто представьте, что в коде есть завершающий символ новой строки, хотя SE не сможет его показать.http://codegolf.stackexchange.com/a/28159
даст тот же результат, что и ваш, и сэкономит некоторые символы.PowerShell -
6962источник
irm
- псевдоним дляInvoke-RestMethod
и был представлен с ядром PowerShell v3. computerperformance.co.uk/powershell/powershell3-alias.htmJavaScript -
1231221019592918786114Запускается в консоли вашего веб-браузера на этой странице. Проверено на последних версиях Chrome
и Firefox.изменить: +28 байт, чтобы добавить полный домен.
Firefox больше не нравится мой трюк с Regex URL с этим обновлением :(
Вот 86-байтовое решение, нарушающее правила:
источник
codegolf.stackexchange.com/
к URL.Ruby + Wget +
Gunzip,159868271Используя подсказку @FDinoff для использования
http://codegolf.stackexchange.com/posts/28173/body
.Проверено. Спасибо @ace и @Bob за оптимизацию командной строки.
источник
wget
, как вwget -qO- url
. Кроме того, в bash вам не нужны двойные кавычки для URL, так что это также может работать для вас.http://
.CJam - 53
Я делаю это сообщество вики, так как отвечаю на свой вопрос и не хочу участвовать в конкурсе: p
Кредиты FDinoff для выбора URL.
источник
);
не выглядит слишком улыбчивым для меня ...Ребму, 91 персонаж
Из-за Catch-22 я должен опубликовать, чтобы получить URL этого ответа. :-/ Хорошо, понял.Rebmu это диалект Rebol, и вы можете прочитать все о нем . Эквивалент Rebol здесь будет:
PARSE от Rebol - это своего рода очень грамотный ответ для RegEx. Он запускает позицию парсера ввода (это может быть любая последовательность, включая структурные блоки ... двоичные данные ... или строковые типы) . Правила являются языком для того, как перемещается позиция разбора.
Теги и URL-адреса - это всего лишь строки в языке. Но они «приправлены», и поскольку Rebol динамически набирается, вы можете проверить этот тип. Например, READ знает, что если вы дадите ей строку со вкусом URL, то он должен отправить ее обработчику схемы для чтения. (В этом случае тот, который зарегистрирован для HTTP). По умолчанию вы возвращаете байты UTF-8, поэтому мы используем to-string для его декодирования и получения серии кодовых точек в обычной строке Unicode.
В случае диалекта синтаксического анализа встреча с типом тега просто сопоставляется, как если бы это была строка, похожая на тег. THRU - это инструкция, означающая «пропустить, пока не будет найдено соответствующее правило, а затем поместить позицию соответствия в конец того, что вы только что сопоставили». (TO является аналогом, который соответствует, но оставляет позицию разбора перед элементом).
Таким образом, мы пронесемся мимо
<a name="28154">
. Затем мы пронесемся мимо следующего вхождения<code>
, с нашей позицией синтаксического анализа, расположенной сразу после>
. Затем команда PARSE COPY позволяет нам копировать данные в другое правило, в данном случае это правило[TO </code>]
... так что мы попадаем в переменную C все вплоть до этого<
.Круто , а? :-)
С технической точки зрения я мог бы
TO "</"
сэкономить на этом больше, например, путем поиска и сохранения трех символов - нет необходимости сопоставлять весь</code>
конечный тег, когда это</
можно сделать. Подобные аргументы могут быть приведены для начального тега. Но Rebmu о грамотном гольфе ... даже если вы думаете, это поначалу выглядит странно!ОБНОВЛЕНИЕ :
/body
уловка из сумки, но я также собираюсь оставить это как есть ... потому что я думаю, что это более образовательно в этом смысле.источник
Ява сейчас 634, 852, было 1004
Код был обновлен; спасибо за предложения. Гольф: теперь заменяет & gt на>
Отправляя на тестирование, я скоро отредактирую и попробую сыграть в гольф. Необходимо изменить x> 1 на x> 2, потому что тестовая строка также есть в моем коде. Примечание. Код гольф заменяет символ> на & gt.
источник
//bacchus
?*
импорт для сохранения большого количества кода.throws Exception
вместо того, чтобы пытаться справиться с чем-либо. Кроме того, я думаю, что использование Scanner, а не BufferedReader было бы проще, особенно если бы вы могли установить разделитель//bacchus
, что несколько упростит задачу ...Python,
175167 байтЭто использует две внешние библиотеки; Я не читал, что это было несанкционировано.
Более длинный, но более красивый код:
источник
questions
URL можно заменить наq
:http://codegolf.stackexchange.com/q/28154
bs4, requests
(строка 1) может быть удален, чтобы уменьшить 1 байт.JavaScript, 228
Работает на этой странице.
источник
if(this.readyState == this.DONE)
внутренняя функция.Haskell,
563613 байтПроверено. Имеет поддержку страницы через функцию «старые сообщения». Использует структуру quine-line, чтобы найти, что печатать. Это
import Control.Monad
только потому, что>>=
генерируется>
в HTML.источник
Javascript + JQuery,
87, 67Я не уверен, что мне разрешено использовать jQuery, но:
Javascript + jQuery, если не указано на этой странице:
27, 25Ради интереса, если бы это было приведено здесь:
$('[id$=28268] pre').html()
источник
$('body').load('//codegolf.stackexchange.com/posts/28268/body pre')
w3m 45 символов
источник
Дротик, 164
Я думал, что попробую это в Dart, довольно забавно использовать IMO.
Это можно запустить в консоли в DartEditor, но для этого требуется пакет http, добавленный в pubspec.yaml
Безголовая версия:
источник
R 114 символов
Здесь нет ничего особенного: он принимает значение поля между тегами html
<code></code>
. Использует библиотекуXML
(как видно из кода вполне очевидно). Выводит результат как стандартный вывод.источник
Ява,
300294Улучшенная версия ответа bacchusbeale, который:
Scanner
чтобы избежать необходимости зацикливать на входеОбновлено:
<code>[...]</code>
в качестве разделителей для поиска (фактически используя регулярное выражение "./?[c]ode\W", чтобы избежать необходимости декодирования<
и>
- "\ W" необходим, а не короче "." к сожалению, чтобы избежать совпадения части URL-адреса с сообщением, которое стоит 2 символа, а квадратные скобки вокруг c предотвращают сопоставление регулярного выражения).источник
w3m 55 байт
Основано на @DigitalTrauma
источник
Рубин,
237215146132источник
Обработка, 90
Редактировать: наконец-то получил!
источник
bash + awk, 71 байт
источник
http://
.Javascript, 138
Это работает при условии, что страница загружается менее чем за 99 мс. Он также должен запускаться через консоль, открытую на странице codegolf.SE, из-за той же политики происхождения.
источник
http://codegolf.stackexchange.com/a/28160
вместоhttp://codegolf.stackexchange.com/a/28160/12551
Perl 5.10,
155127122117 байтИспользование
XML::LibXML
.источник
Shell и xmllint, 82 байта
источник
Питон, 164
Работает, извлекая текст между тегами кода. Он довольно длинный, но он всегда будет работать правильно, если html-страница не будет отредактирована напрямую или новый кодовый блок не будет добавлен перед нижеследующим (наличие блока кода после не должно влиять на вывод программы).
источник