var QUESTION_ID=80586,OVERRIDE_USER=20283;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:400px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
Ответы:
Pyth, 6 байт
Попробуйте это онлайн здесь .
источник
Желе, 6 байт
Попробуйте онлайн!
источник
Октава, 29 байт
объяснение
Пробный прогон на идеоне .
источник
Python 3, 43 байта
Использует формулу на странице OEIS . Удивительно, но именованная функция здесь как-то дешевле из-за присвоения
x
.Альтернативный подход для 46 байтов:
К сожалению,
-~
это необходимо , так как(0).bit_length()
это0
, но даже тогда это было бы слишком долго байт.источник
Юлия, 27 байт
Попробуйте онлайн!
Как это работает
Поскольку
*
в Juliaprod
используется конкатенация строк, ее можно использовать для конкатенации массива строк. При желании он принимает функцию в качестве первого аргумента, который сопоставляется со вторым, перед тем, как взять фактический «продукт», так жеprod(bin,0:n-1)
как и строка двоичного представления всех целых чисел в требуемом диапазоне. Взятие длины сendof
делением на n дает среднее значение.источник
Юлия, 28 байт
Так
bin
как автоматически не отображает массивы, мы используем,ceil(log2(n))
чтобы получить количество бит вn-1
. Это хорошо работает, потому чтоa:b
нотация Джулии включает оба конца, так2:n
же как и диапазон от 2 доn
, но мы действительно рассчитываем количество бит для чисел в диапазоне1:n-1
. К сожалению, нам нужно добавить еще,2
чтобы учесть 0.Попробуйте онлайн!
источник
MATL, 9 байт
Попробуйте онлайн!
Модифицированная версия со всеми тестами
объяснение
источник
G/Q
в конце.MATL, 9 байт
Попробуйте онлайн!
объяснение
источник
Желе, 8 байт
Не короче, но интересный алгоритм и моя первая подача желе:
источник
Желе, 10 байт
Из предложения Sp3000.
Попробуй это здесь.
Желе, 11 байт
Не очень коротко, но мне нужно несколько советов.
Попробуй это здесь.
Используя ту же формулу, что и в ответе Sp3000 . (Это не очень сложно получить самостоятельно, дифференцируя геометрическую прогрессию.)
источник
_BL$N
казалось, довольно долго ...BL©2*2_÷+®
Java,
1359590 байтисточник
Python 3, 46 байт
Назови это как
Я должен был отменить ревизию карты, потому что не удалось ввести 5
источник
05AB1E,
97 байтКод:
Объяснение:
Попробуйте онлайн
Редактировать: сохранено 2 байта благодаря @Adnan
источник
C #, 87 байт
Я написал ответ на C #, потому что я его не видел. Это мой первый пост к одному из них, поэтому, пожалуйста, дайте мне знать, если я делаю что-то не так.
источник
double
наfloat
сохранение одного байта или вам нужна точность?JavaScript (ES7),
3832 байтаИспользование формулы @ sp3000 (предыдущая версия была рекурсивным решением). Версия ES6 для 34 байтов:
Пояснение формулы: рассмотрим случай N = 55. Если мы напишем двоичные числа (вертикально, чтобы сэкономить место), мы получим:
Размер этого прямоугольника равен nl, поэтому среднее значение равно l, но нам нужно исключить пробелы. Каждый ряд заготовок в два раза длиннее предыдущего, поэтому общая сумма составляет 2 + 4 + 8 + 16 + 32 = 64 - 2 = 2 л - 2.
источник
J,
211715 байтБлагодаря 17 байтам до 15 байт благодаря @Dennis.
Кто-нибудь может помочь мне в этом?
Неуправляемая версия
источник
%~>:@#@([:":10#.[:#:i.)-]
. Ваше решение выглядит довольно оптимальным.Perl 6 ,
3432 байтаОбъяснение:
Тест:
источник
Dyalog APL , 14 байтов
источник
Clojure,
716463 байтаПохоже, что отношения в порядке, в соответствии с какими числовыми форматами приемлемы в выводе
(fn[n](/(inc(apply +(map #(.bitLength(bigint %))(range n))))n))
ungolfed (и немного переписан для простоты объяснения)
старый ответ, который использовал (float):
(fn[n](float(/(inc(apply +(map #(..(bigint %)bitLength)(range n))))n)))
вывод похож на:
источник
Минколанг 0,15 , 23 байта
Попробуй это здесь!
объяснение
Довольно простая реализация.
источник
JavaScript ES5, 55 байт
объяснение
источник
Хун , 71 байт
... Я уверен, что это первый раз, когда я использовал ядра с плавающей запятой от Хуна. Это на самом деле реализация, написанная на Hoon, которая отправляется в SoftFloat, поскольку единственными типами данных в Hoon являются атомы и ячейки.
Создать функцию, которая принимает атом
r
. Создайте список из [0 .. (r - 1)], отобразите список, взяв двоичный логарифм числа, затем сверните этот список с помощью++add
. Преобразовать как выход из сгиба иr
в@rq
(числа с плавающей запятой с четверной точностью) с++sun:rq
, а затем разделите одно на другое.Самое странное в этом фрагменте -
:.^rq
конец.a:b
в Хуне означает «оценить А в контексте б».++rq
это ядро, которое содержит всю реализацию с четверной точностью, например, библиотеку. Так работает(sun 5):rq
- это то же самое, что и(sun:rq 5)
.К счастью, ядра в Хуне подобны матрешкам; когда вы оцениваете руку,
++rq
чтобы получить ядро, она добавляет к ней также весь stdlib, так что вы можете продолжать вращаться и поворачиваться, и пропустить все эти забавные вещи вместо того, чтобы застрять только с руками, определенными в++rq
. К несчастью, rq переопределяет,++add
что вместо этого используется сложение с плавающей запятой, а неr
в его контексте..
(весь текущий контекст), однако.При оценке выражения в контексте компилятор ищет глубину лимба в первую очередь. В нашем случае
a:[. rq]
это будет выглядеть во всем текущем контексте,a
прежде чем перейти к поискуrq
. Так чтоadd
будет искать функцию, которая работает на атомах вместо чисел с плавающей точкой ... но так будетdiv
. Hoon также имеет функцию, где использование^name
будет игнорировать первую найденную ссылку и искать вторую.После этого он просто использует синтетический сахар
a^b
, равный равенству, чтобы[a b]
оценить наш фрагмент как с нашим текущим контекстом, так и с плавающей библиотекой с четверной точностью, игнорируя атомарный div в пользу++div:rq
.источник
На самом деле 7 байтов:
Попробуйте онлайн!
Объяснение:
Если бы не ошибка, которую я только что обнаружил, это решение работало бы для 6 байтов:
æ
это встроенная средняя команда.источник
Витси, 26 байт
Это первая попытка, я добавлю к этому больше информации и позже добавлю объяснение.
Попробуйте онлайн!
источник
PowerShell v2 +, 64 байта
Очень простая реализация спецификации. Петли от
0
до$n-1
с|%{...}
. Каждая итерация, мы[convert]
наш номер входа$_
в строке базу2
и занять егоlength
. Мы накапливаем это в$o
. После петель мы просто делим$o/$n
, оставляя это на конвейере, и вывод неявен.Пока это так, это на самом деле короче, чем формула, которую используют Sp и другие, так как
[math]::Ceiling()
и[math]::Log()
смехотворно многословны. Базовое преобразование в PowerShell - отвратительно.источник
Perl 5,10, 54 байта
Довольно просто.
sprintf"%b"
это аккуратный способ вывода числа в двоичном виде в Perl без использования дополнительных библиотек.Попробуйте онлайн!
источник
CJam,
131211 байтовОдин байт сохранен благодаря @ Sp3000, а другой благодаря @ jimmy23013
Попробуйте онлайн!
объяснение
Непосредственная. Применяет определение.
источник
Джольф, 10 байт
Попробуй это здесь!
объяснение
источник
Swift, 72 байта
источник
J 15 байт
Это монадический глагол, используемый следующим образом:
Попробуй это здесь!
объяснение
Я реализовал спецификацию задачи в буквальном смысле. Есть и другие подходы, но все оказалось дольше.
источник