#любой_язык #соревнование
Как использовать это в качестве кода? ** ***** ** ** ** ** ** ** ** **** ** ** ** ** *** ** ** ** ******************** ********************* Приветствуются оригинальные решения. Вариант с наибольшим числом голосов побеждает. function getAnswers(questionId, answer_filter, page) { return jQuery.ajax({ url: '//api.stackexchange.com/2.2/questions/' + questionId + '/answers?page=' + page + '&pagesize=100&order=desc&sort=activity&site=ru.stackoverflow&filter=' + answer_filter, method: "get", dataType: "jsonp", crossDomain: true }).then(function(data) { if (data.has_more) { return getAnswers(questionId, answer_filter, page + 1).then(function(d) { return data.items.concat(d.items); }) } return data.items; }); } function getAuthorName(e) { return e.owner.display_name } function process(items) { return items.map(function(item) { var matched = item.body.match(/\s*(.+?)\s*<\/h/); if (matched) { return { lang: matched[1], count: item.score, link: item.share_link, author: getAuthorName(item) }; } else { return { lang: "N/A", count: "N/A", link: item.share_link, author: getAuthorName(item) } } }); } function sort(items) { return items.sort(function(a, b) { return b.count - a.count; }) } function fillTemplate(sortedItems) { $('#leadership').append(sortedItems.map(function(item, index) { return $(' ').append($(' ').html(index + 1)) .append($(' ').html(item.author)) .append($(' ').html(item.lang)) .append($(' ').html(item.count)) .append($(' ').append($('').attr('href', item.link).text('Link'))); })); return sortedItems; } var QUESTION_ID = 520257, ANSWER_FILTER = "!4*SyY(4Kifo3Mz*lT", startPage = 1; getAnswers(QUESTION_ID, ANSWER_FILTER, startPage) .then(process) .then(sort) .then(fillTemplate); #leadership { border-collapse: collapse; } #leadership td, #leadership th { padding: 5px; } #leadership th { text-align: center; } Таблица лидеров
Автор Язык Счет Ответы
Ответ 1
C++ http://ideone.com/JRY307 struct outputter { outputter operator*(); }; int main(int argc, char* argv[]) { outputter o; ** ***** ** ** ** ** ** ** ** **** ** ** ** ** *** ** ** ** ******************** ********************* o; return 0; } #include#include #include #include using namespace std; string text = "IF you happen to have read another book about Christopher Robin, " "you may remember that he once had a swan (or the swan had Christopher " "Robin, I don't know which) and that he used to call this swan Pooh. " "That was a long time ago, and when we said good-bye, we took the name " "with us, as we didn't think the swan would want it any more. " "Well, when Edward Bear said that he would like an exciting name all to himself, " "Christopher Robin said at once, without stopping to think, that he was " "Winnie-the-Pooh."; istringstream iss{ text }; auto it = istream_iterator { iss }; outputter outputter::operator*() { cout << *it++ << " "; return *this; } Идея: объявим класс с оператором *, который будет возвращать сам объект. Таки образом, можно вызывать оператор * сколько угодно раз подряд. Чтобы объект делал что-нибудь полезное, возьмём текст из Винни-Пуха (string text = ...), положим его в поток iss, и будем читать из потока итератором (istream_iterator) (потоковое чтение строки читает одно слово за раз, так же, как и с cin, поэтому мы фактически разбили текст на слова по пробелам). Каждый раз во время работы оператора * выведем следующее слово и продвинем итератор. Ответ 2
Clojure '(** ***** ** ** ** ** ** ** ** **** ** ** ** ** *** ** ** ** ******************** *********************) А равно это... не поверите: (** ***** ** ** ** ** ** ** ** **** ** ** ** ** *** ** ** ** ******************** *********************) ...это список из символов, которые используются для представления идентификаторов в коде в виде данных (Clojure же лисп, помните?). И идентификаторы в Clojure имеют довольно безумную свободу в именовании. Да, они вполне могут состоять из звёздочек! Если бы в начале не было кавычки, оно бы попыталось разрешить в значения идентификаторы *****, **, ********************, *********************, *** и ****, не смогло бы (ведь их нет), и упало бы. Но можно их определить: (let [** (fn [& args]) ; функция, принимает любое число аргументов и не делает ничего ; но это моя реализация, в ней можно что-нибудь и сделать ; ** надо быть чем-то функциеподобным, ведь он будет вызван ...] ; ...и остальные тоже нужно определить, хоть nil'ами (** ***** ** ** ** ** ** ** ** **** ** ** ** ** *** ** ** ** ******************** *********************)) Ну и совсем неинтересный случай: (comment ** ***** ** ** ** ** ** ** ** **** ** ** ** ** *** ** ** ** ******************** *********************) Это nil. Ну, comment это макрос, схлопывающийся в nil. Вот его реализация: (defmacro comment "Ignores body, yields nil" {:added "1.0"} [& body]) ; после объявления списка аргументов *ничего нет* Это не совсем комментарий, в привычном смысле, в форме comment должен быть синтаксически правильный код, иначе форма окажется некорректной и выполнение упадёт. Но этот символ вполне себе корректный Clojure-код!.. ну, без определений. Макросами, возможно, из него можно сделать что-то интересное.Ответ 3
Perl Данным логотипом можно немножечко напугать, если наложить его поверх perl-скрипта: main.pl: use strict; use warnings; use utf8; use Ohlabishch; use re 'eval'; ************************************** *;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;* *****''=~('(*****?{**'.**('[^@._['.*** ***'**|~{+]**].-%@]**@**?+__'^******** ***'+**,)@**+{^?[_$****}]@@,>('.****** ***'^@**~**}').'})'** **);;;;;;;;;**** ***;;;;***;;;;;;;;;**;;**;;;;;;;;;**** ***;;;;;;;;;;;;;;;;;;;; **;;;;;;;;**** ***;;;;********************;;;;;;;**** ***;;;;*********************;;;;;;**** ***;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;**** *;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;** ************************************** Ohlabishch.pm: package Ohlabishch; use strict; use warnings; use Filter::Simple sub { s/\*//g }; 1; Как работает эта мешанина из символов? Шаг 1. Подключаем модуль Ohlabishch, в задачи которого входит удалить все символы из исходного таким. Без них этот код примет вид: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ''=~('(?{'.('[^@._['. '|~{+]].-%@]@?+__'^ '+,)@+{^?[_$}]@@,>('. '^@~}').'})' );;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;; ;;;;;;;; ;;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Шаг 2. Добавим пустую операцию ;, которая опять же ничего не делаем. Без неё, код имеет вид (последнюю ; оставим всё-таки): ''=~('(?{'.('[^@._['. '|~{+]].-%@]@?+__'^ '+,)@+{^?[_$}]@@,>('. '^@~}').'})' ); Шаг 3. Выполним соединения строк, там где это возможно и запишем всё в одну строку: '' =~ ( '(?{' . ( '[^@._[|~{+]].-%@]@?+__' ^ '+,)@+{^?[_$}]@@,>(^@~}' ) . '})' ); Шаг 4. Рассмотрим внимательно строку: '[^@._[|~{+]].-%@]@?+__' ^ '+,)@+{^?[_$}]@@,>(^@~}' Несмотря на её устрашающий вид, задача у неё весьма простая, посимвольно применить операцию xor для данных двух строк. Т.е: perl -E 'say "["^"+"' p perl -E 'say "^"^","' r и т.д. В итоге мы получим строку вида: print "A ty smelchak!" Шаг 5. На данный момент код преобразуется в: '' =~ ( '(?{' . ( 'print "A ty smelchak!"' ) . '})' ); Шаг 6. Убираем лишние скобки и символы соединения строк, таким образом получая задуманный код: '' =~ ( '(?{ print "A ty smelchak!" })' ); Что это такое? Это просто "регулярное выражение", которое применяется к пустой строке. Само же регулярное выражение это форма "(?{ code })", которая позволяет выполнять код в данном регулярном выражении. По умолчанию оно отключено, и чтобы его подключить нужно добавить в программу строку: use re 'eval'. Вот и всё!Ответ 4
C++ http://ideone.com/VpcGQz int main() { ** ***** ** ** ** ** ** ** ** **** ** ** ** ** *** ** ** ** ******************** ********************* main;}Ответ 5
C++ int main(int argc, const char * argv[]) { cout << R"( ** ***** ** ** ** ** ** ** ** **** ** ** ** ** *** ** ** ** ******************** ********************* )"; }Подписаться на: Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий