Раздел ментов
Раздел грабителей можно найти здесь .
Благодаря FryAmTheEggman , Питер Тейлор , Натан Меррилл , XNOR , Деннис , Laikoni и Mego за их вклад.
Вызов
Ваша задача состоит в том, чтобы написать 2 разные программы ( полные программы / функции / и т. Д. ) На одном и том же языке и в одной и той же версии (например, Python 3.5 ≠ Python 3.4, так что это не разрешено), и когда задано n (используя аргументы STDIN / функции / etc. ), вычислите a (n), где a - последовательность OEIS по вашему выбору. Одна из этих программ короче другой. Вам нужно только представить более длинную программу из двух. Другой должен быть сохранен на случай, если он не будет взломан через 7 дней. Ваше представление взломано, когда ваша программа была превзойдена (будь то на 1 байт или более).
Например, если выбранная вами задача состояла в том, чтобы выполнить 2 × n , это может быть допустимой отправкой (в Python 2):
Python 2, 16 байт, оценка = 15/16 = 0,9375
print(2*input())
Вычисляет A005843 , (смещение = 0).
Если ваша заявка была взломана, вам нужно указать это в заголовке следующим образом:
Python 2, 16 байт, оценка = 15/16 = 0,9375, [взломан] + ссылка
print(2*input())
Вычисляет A005843 , (смещение = 0).
офсет
Это можно найти на каждой странице OEIS. Например, для A005843 смещение равно 0,2
. Нам нужно использовать только первый, который есть 0
. Это означает, что функция определена для всех чисел ≥ 0.
Другими словами, функция OEIS (n) начинается с n = 0 . Ваша программа должна работать для всех случаев, указанных OEIS.
Более подробную информацию можно найти здесь .
счет
Оценка, которую вы получаете за ваше представление, равна следующей формуле:
Оценка = Длина (в байтах) секретного кода ÷ Длина (в байтах) открытого кода
Пример выше имеет оценку 15 ÷ 16 = 0,9375.
Представление с самым низким счетом выигрывает. Только материалы, опубликовавшие свое решение, будут иметь право на победу.
правила
- Задача, которую вам нужно выполнить, представляет собой последовательность OEIS по вашему выбору.
- Учитывая n , выведите OEIS (n) . Отклонение не допускается, поэтому вам нужно создать точно такую же последовательность (если задано n, вам нужно вывести OEIS (n)).
- Заявки, которые не были взломаны в течение 7 дней, считаются безопасными после публикации решения (заявки старше 7 дней, в которых не было опубликовано решение, все еще уязвимы для взлома).
- В вашем представлении вам необходимо опубликовать следующие вещи: имя языка , количество байтов , полный код , чтобы не было вставок ссылок и т. Д. (Для предотвращения ответов, таких как Unary), последовательность OEIS , партитура с длинами обеих программ и, кроме того, кодировка, которая используется.
- Примечание: одна и та же последовательность не может быть опубликована дважды на одном языке. (Например, если последовательность A005843 была сделана в Pyth, вы не можете снова использовать Pyth для этой же последовательности.)
- Вход и выход представлены в десятичном формате (основание 10)
Leaderboard
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><style>table th,table td{padding: 5px;}th{text-align: left;}.score{text-align: right;}table a{display: block;}.main{float: left;margin-right: 30px;}.main h3,.main div{margin: 5px;}.message{font-style: italic;}#api_error{color: red;font-weight: bold;margin: 5px;}</style> <script>QUESTION_ID=88979;var safe_list=[];var uncracked_list=[];var n=0;var bycreation=function(x,y){return (x[0][0]<y[0][0])-(x[0][0]>y[0][0]);};var byscore=function(x,y){return (x[0][1]>y[0][1])-(x[0][1]<y[0][1]);};function u(l,o){jQuery(l[1]).empty();l[0].sort(o);for(var i=0;i<l[0].length;i++) l[0][i][1].appendTo(l[1]);if(l[0].length==0) jQuery('<tr><td colspan="3" class="message">none yet.</td></tr>').appendTo(l[1]);}function m(s){if('error_message' in s) jQuery('#api_error').text('API Error: '+s.error_message);}function g(p){jQuery.getJSON('//api.stackexchange.com/2.2/questions/' + QUESTION_ID + '/answers?page=' + p + '&pagesize=100&order=desc&sort=creation&site=codegolf&filter=!.Fjs-H6J36w0DtV5A_ZMzR7bRqt1e', function(s){m(s);s.items.map(function(a){var he = jQuery('<div/>').html(a.body).children().first();he.find('strike').text('');var h = he.text();if (!/cracked/i.test(h) && (typeof a.comments == 'undefined' || a.comments.filter(function(b){var c = jQuery('<div/>').html(b.body);return /^cracked/i.test(c.text()) || c.find('a').filter(function(){return /cracked/i.test(jQuery(this).text())}).length > 0}).length == 0)){var m = /^\s*((?:[^,;(\s]|\s+[^-,;(\s])+).*(0.\d+)/.exec(h);var e = [[n++, m ? m[2]-0 : null], jQuery('<tr/>').append( jQuery('<td/>').append( jQuery('<a/>').text(m ? m[1] : h).attr('href', a.link)), jQuery('<td class="score"/>').text(m ? m[2] : '?'), jQuery('<td/>').append( jQuery('<a/>').text(a.owner.display_name).attr('href', a.owner.link)) )];if(/safe/i.test(h)) safe_list.push(e);else uncracked_list.push(e);}});if (s.items.length == 100) g(p + 1);else{var s=[[uncracked_list, '#uncracked'], [safe_list, '#safe']];for(var i=0;i<2;i++) u(s[i],byscore);jQuery('#uncracked_by_score').bind('click',function(){u(s[0],byscore);return false});jQuery('#uncracked_by_creation').bind('click',function(){u(s[0],bycreation);return false});}}).error(function(e){m(e.responseJSON);});}g(1);</script><link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/Sites/codegolf/all.css?v=7509797c03ea"><div id="api_error"></div><div class="main"><h3>Uncracked submissions</h3><table> <tr> <th>Language</th> <th class="score">Score</th> <th>User</th> </tr> <tbody id="uncracked"></tbody></table><div>Sort by: <a href="#" id="uncracked_by_score">score</a> <a href="#" id="uncracked_by_creation">creation</a></div></div><div class="main"><h3>Safe submissions</h3><table> <tr> <th>Language</th> <th class="score">Score</th> <th>User</th> </tr> <tbody id="safe"></tbody></table></div>
Запись
Этот вызов закончен. Финальный победитель - feersum с ответом Seed . Поздравляем! :).
Вы по-прежнему можете отправлять новых копов, но имейте в виду, что они больше не соревнуются.
Ответы:
Семя , 5861 байт, оценка = 5012/5861 = 0,85
Последовательность состоит из простых чисел ( A000040 ) со смещением 1. a (1) = 2, a (2) = 3, a (3) = 5 и т. Д.
Программы Befunge-98 были протестированы с этим интерпретатором .
Решение:
источник
Желе , 5 байт , оценка 0,8 (4/5) [ треснул! ]
Вычисляет A127721 .
Попробуйте онлайн!
Вот решение:
n
R
: список из[1, 2, ..., n]
ÆḊ
В нашем случае это на самом деле вернет квадратный корень из суммы квадратов (что может пригодиться в будущем игре в гольф)!Ḟ
Пол результат.Документация для
ÆḊ
чтения:Ключ распространяется на неквадратные матрицы . «Определитель» неквадратной матрицы обычно не определен, но есть одно разумное определение
sqrt(det(A A^T))
(которое для квадратной матрицы сводится к|det(A)|
). В нашем случаеA A^T
это матрица 1 x 1, содержащая сумму квадратов. Квадратный корень из определителя этого дает нам именно то, что нам нужно, чтобы сбрить последний байт!источник
Сетчатка , 28 байт, оценка = 0,9286 ... (26/28), взломана feersum
Вычисляет A192687 , (смещение = 0).
Попробуйте онлайн! (Первая строка включает набор тестов, разделенных переводом строки.)
В этом разница между мужской и женской последовательностями Хофштадтера . ( Соответствующий вызов PPCG. )
Это был мой оригинальный код:
В любом случае, этот ответ был чем-то вроде азартной игры, потому что реальное решение основано на регулярном выражении, которое я объявил самым коротким из известных регулярных выражений Фибоначчи в чате несколько месяцев назад. К счастью, никто, казалось, не помнил этого. :)
источник
Hexagony , 91 байт, оценка = 0,725274725 (66/91) [Cracked]
Вычисляет A000045 (последовательность Фибоначчи, смещение 0).
Я не буду слишком удивлен, если кому-то удастся победить это и мою версию с большим количеством гольфа
, хотя это должно быть трудно.Редактировать: Святая корова, @MartinEnder избил меня 33-байтовым решением.
Гольф (91):
отформатирован:
Попробуйте онлайн!
Я не собираюсь публиковать объяснение этому, это слишком ужасно ...
Гольф (66):
отформатирован:
Цветное:
Попробуйте онлайн!
Объяснение:
Макет памяти, который я использовал, выглядит примерно так:
Инициализация (черным цветом) устанавливает a = 0 и b = 1. Затем основной цикл:
a
входной ячейки -'"
(
{{=+
"+{=*
'+
'+}=*
"=+
"+
}+
Как только ячейка ввода достигает 0, MP перемещается к a, печатает и выходит.
Чтобы сохранить больше байтов, я мог бы использовать &, который просто устанавливает текущую ячейку либо в левую, либо в правую сторону. У меня также могло бы быть немного лучшее управление потоком, но все в порядке.
источник
&
для перемещения входные данные по краям a / b / a + b, чтобы они менялись ролями на следующей итерации. Что касается меня, мне вообще не нужно перемещать a, b и a + b.M , 10 байт , оценка 0,6 (6/10) [ взломано ]
Немного обманывают, так как M и Jelly довольно похожи, но разрешены правилами. Эта версия основана на крэке @ LeakyNun на мой ответ Jelly.
Это вычисляет последовательность A068943 . Попробуйте онлайн!
Предполагаемое решение
Следующий код работает в M / Jelly.
На самом деле у меня было 4-байтовое решение, к которому я добавил немного пуха, чтобы было труднее взломать с помощью грубой силы.
Попробуйте онлайн!
Это то, что я собираюсь объяснить.
источник
Стек Кошки , 14 байт, оценка = 13/14 = 0,929 [ трещина ]
Это 10 байт кода плюс 4 для аргументов
-nm
.Вычисляет A017053 . В случае, если OEIS не работает, то
a(n) = 7n + 6
, начиная сn = 0
.Полный код (можно использовать без
-m
аргументов)![_-_:-_-_-_-:_-_]!
Скрытое решение было
источник
Снеговик , 50 байтов, оценка = 0,9 (45/50) [ взломано Линн ]
Это подпрограмма, которая принимает число в качестве аргумента и возвращает другое число.
Вычисляет A122649 (смещение = 1).
Попробуйте онлайн!
источник
Haskell, 15 байт, оценка = 13/15 (0,866) ( трещины )
A109613 со смещением 0. Повторяет каждое нечетное число дважды.
источник
Brachylog , 27 байт, оценка = 0,666 ... (18/27), Cracked!
Вычисляет A010551 (смещение = 0).
Вы можете попробовать это онлайн здесь .
объяснение
Поскольку подавляющее большинство людей не знают этот язык, и поскольку я публикую этот ответ в основном для того, чтобы люди его изучили (см. Wiki Brachylog ), я приведу краткое объяснение приведенного выше кода:
источник
Haskell, 4 байта / 5 байтов ( взломанный Leaky Nun )
Давайте начнем с простого. A000012 , последовательность всех 1 (смещение 0). Вот таблица:
5 байтов:
источник
Java 7, 53 байта, оценка = 0,9623 (51/53) Cracked
Вычисляет последовательность Перрина, A001608
Первая попытка игры в гольф, не стесняйтесь указывать на любые ошибки.
Объяснение после взлома:
мили сократили первые три значения (0,1,2) -> (3,0,2) до
в то время как мое собственное решение было немного перегружено
Комбинируя два трюка, вы получаете
для 47 байт
который выглядит довольно компактным для Java :)
источник
Чеддер, 7 байт, оценка = 0,8571 (6/7), [взломан]
Довольно просто, только полномочия двух. OEIS A000079
Попробуйте онлайн!
источник
J, 17 байт, оценка = 0,8235 (14/17) ( трещины )
Вычисляет A002478 .
Самое смешное, что эта версия изначально была короткой, чтобы держаться в секрете.
источник
Python 2, 43 байта, оценка = 0,9302 (40/43), трещины
f=lambda n:n==1or-(-sum(map(f,range(n)))/3)
Вычисляет A072493
Посмотрим, сможет ли кто-нибудь сыграть в гольф все 3 байта.
источник
True
используется для представления1
?s=1;exec"a=-(-s/3);s+=a;"*input();print a
для 41.if x
true), является допустимым возвращением.Пайк, 11 байт, оценка = 0,45 (5/11) [взломано]
Рассчитывает OEIS A180255
Попробуй это здесь!
источник
Z
, недокументировано; язык претендует на то, что он основан на стеке, но после*
него в стеке есть только нули, несмотря на то, что он влияет на остальную часть кода; порядок параметров не определен четко)Желе , 9 байт , оценка 0,5556 (5/9) [ треснуло ]
Это вычисляет последовательность A119259 . Попробуйте онлайн!
источник
Brachylog , 11 байт, оценка = 10/11 = 0,909, трещина!
Вычисляет A173426 .
Попробуйте онлайн!
объяснение
источник
J, 20 байт, оценка = 0,75 (15/20) ( трещины )
Вычисляет A001654 .
Мое решение для 15 байтов было
источник
Sesos , 14 байт, оценка = 0,8571 (12/14) ( трещины )
Вычисляет A000290 .
Попробуйте онлайн!
Советы
Этот двоичный файл был сгенерирован следующим ассемблером:
источник
MATL , 11 байт, оценка = 0,8181 (9/11), трещины
Вычисляет функцию Мёбиуса или A087811 (смещение 1).
Попробуйте онлайн!
Ресурсы для грабителей
Я думаю, что это должно быть легко, но в любом случае здесь есть некоторая помощь.
Объяснение кода:
Языковая документация .
MATL чат .
источник
YftdA_wn^
Желе , 11 байт , оценка 0,5455 (6/11) [ треснуло ]
Это вычисляет последовательность A068943 . Попробуйте онлайн!
источник
MarioLANG , 87 байт, оценка = 0,839 (73/87), трещины
Вычисляет A000217 , треугольные числа. Смещение 0.
Попробуйте онлайн!
Краткое решение:
Поскольку взлом занял всего 1 байт, я поделюсь своим решением в 73 байта, который использует другой алгоритм:
Попробуйте онлайн!
Первая программа выкладывает все числа от n до 1 вдоль ленты, затем складывает все числа, пока не встретит ячейку с 0 значениями. Это делается путем копирования каждой ячейки в две соседние ячейки, уменьшения правильной копии и повторения процесса на ней до достижения значения 0. Во время этого процесса лента выглядит следующим образом (для n = 5):
... и так далее. Затем он перемещается влево, суммируя ячейки, пока не достигнет ячейки с 0.
Вторая программа работает только с тремя ячейками ленты. Пока первая ячейка не достигнет 0, она делает следующее:
После того, как первая ячейка достигнет 0, третья ячейка будет содержать n + (n-1) + (n-2) + ... + 2 + 1.
источник
:
если он в нижней строке, поэтому я включил завершающий перевод строки в ссылку. Мартин и я обсуждали это в другом из моих ответов на MarioLANG.М , 18 байт , оценка 0,3889 (7/18) [ взломано ]
Этот подход основан на гольфе @ Sp3000 моего ответа Jelly.
Код вычисляет последовательность A116881 (суммы строк CM (1,2) ). Попробуйте онлайн!
источник
Haskell, 28 байт, оценка = 0,3571 (10/28), трещины
A006519 , максимальная мощность 2 деления
n
, начиная сn=1
.Несмотря на то, что вы получаете кражу любого более короткого кода, я считаю, что настоящая головоломка заключается в уменьшении до 10 байтов.
источник
05AB1E , 9 байт, оценка = 0,6667 (6/9), трещины
Вычисляет: A087811
Попробуйте онлайн
источник
Гексагония , 7 байт, оценка = 0,857 (6/7), трещины
Не предназначен, чтобы быть выигрышным представлением, но определенно взломщик мозгов. На самом деле это не так сложно, если подумать: с. Код:
Или более читаемая версия:
Вычисляет A052246 .
Попробуйте онлайн! ,
источник
J, 9 байт, оценка = 0,6667 (6/9) (взломано Деннисом )
Вычисляет A056594 .
источник
J, 10 байт, оценка = 0,9 (9/10) ( взломано Деннисом )
Вычисляет A000326 .
Это должно быть легко.
Онлайн переводчик .
Quickref .
источник
05AB1E , 7 байт, оценка = 0,571 (4/7), трещины
Вычисляет: A006331
Попробуйте онлайн
После игры в гольф 5 уникальных версий этой последовательности, прежде чем найти эту публичную версию, я надеюсь, что я не оставил никаких очевидных улучшений, так что, по крайней мере, это будет проблемой для грабителей.
источник
М , 9 байт , оценка 0,6667 (6/9) [ взломано ]
Немного обманывают, так как M и Jelly довольно похожи, но разрешены правилами. треск @miles к моему ответу Jelly не работает в M; ему не хватает
œċ
атома.Это вычисляет последовательность A119259 . Попробуйте онлайн!
источник