Примечание: этот вызов завершен. Материалы по-прежнему приветствуются, но не могут выиграть.
Это нить полицейских. Нить грабителей идет сюда .
Напишите код, который выводит целое число 1
. Если вы добавляете, удаляете или заменяете один символ (по вашему выбору), код должен вывести целое число 2
. Измените еще один символ (тот же или другой), и код должен вывести 3
. Продолжайте так же, как вы можете, но не более 10. Выходные форматы по умолчанию, такие как ans = 1
принимаются. Вы можете игнорировать вывод в STDERR (или эквивалентный).
Вы должны указать язык, количество байтов вашего исходного кода, количество целых чисел, для которых он работает, а также необязательное количество символов исходного кода. Примечание: вам не нужно раскрывать какие-либо символы, но помните, что раскрытие символов может усложнить грабителям, поскольку они должны использовать один и тот же символ в одной и той же позиции. Вы можете выбрать, какой символ использовать для обозначения нераскрытых символов (например, подчеркивание), но обязательно укажите это.
Копы могут предоставить код без взлома через одну неделю и назвать отправку «БЕЗОПАСНЫМ». Отправка-победитель будет самой короткой отправкой без взлома, которая произведет число 10. Если никакие отправления без взлома не смогут напечатать 10, победит самый короткий код, который выдает 9, и так далее. Обратите внимание, что грабителям не нужно вносить такие же изменения, как вы, и им не нужно воспроизводить точный код (если вы не раскрываете все символы). Они должны воспроизводить только результат.
Заявки, опубликованные позднее 24 ноября, приветствуются, но не имеют права на победу (потому что вокруг будет меньше грабителей).
Пример поста:
Следующий пост является представлением на языке MyLang
, он имеет длину 9 байт и работает для чисел 1 - 8.
MyLang, 9 байт, 8 номеров
Это представление работ 1 - 8. Нераскрытые символы обозначены символом подчеркивания: _
.
abc____i
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=99546;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>
источник
1
, как я могу предотвратить повторное добавление)
грабителями для генерации остальных чисел? То же самое будет справедливо для довольно многих языков1
то кажется, что CJam - плохой выбор языка для этой задачи. Нет способа помешать грабителям сделать это.10
. Это правило действует, поскольку многие представления, вероятно, могут быть расширены до бесконечности (теоретически), поэтому оценка, основанная на самом высоком достигнутом числе, не будет иметь смысла.cracked
в какой-либо форме. Это то, что в настоящее время делает редизайн usercript .Ответы:
Гексагония , 18 байт, 10 цифр, БЕЗОПАСНО
Это представление работ 1 - 10. Нераскрытые символы обозначены символом подчеркивания:
_
.Вы можете попробовать Hexagony онлайн здесь.
Мое решение:
Шестнадцатеричный вывод 1:
Попробуйте онлайн!
<
грани памяти есть0
, так получается.1
5
8
, но переворачивается<
и возвращается8
на обратный путь.5
снова1
<
в этот момент, значение памяти 1585, который, мод 256, оказывается ASCII1
;@
.Шестнадцатеричный вывод 2:
Попробуйте онлайн!
Это следует по тому же пути, но на обратном пути он попадает в a,
)
что увеличивает край памяти до 1586 или2
.Шестнадцатеричный вывод 3-9:
Попробуйте онлайн!
2
<
, поэтому он уменьшается.]
Изменяет указатель команды, но сразу же возвращается с[
)
приращения к3
!
Печать3
$
осталось от первых двух чисел, поэтому мы перепрыгиваем через конец (@
)1
меняет границу памяти, но сейчас это не имеет значения.<
отражает указатель назад.1
не имеет значения, потому что мы ударили,@
чтобы закончить программу.источник
Сетчатка , 2 байта, 10 номеров, Трещины
Работает от 1 до 10,
_
является скрытым персонажем. Это не должно быть слишком сложно, но я надеюсь, что это несколько интересная головоломка. :)Вы можете попробовать Retina онлайн здесь.
источник
Октава, 55 байт, 10 цифр, трещины
_
это неизвестный персонаж.Решение
источник
Python 2, 9 байтов, 10 цифр, взломан
Нет скрытых символов. Можете ли вы взломать его без грубой силы?
источник
Perl, 12 байт, 10 номеров, Cracked!
Подчеркивания представляют неизвестные символы.
Вероятно, довольно легко, и меня не удивит, если будет несколько решений. Тем не менее, это может быть весело взломать.
(Предполагаемое решение было таким же, как и трещина. По сути, это просто проблема с назначением 10 переменной в четырех символах, что на удивление сложно в Perl; в отличие от многих языков игры в гольф, в ней нет переменной, начинающейся с подсказки. 10.)
источник
$_=1;say;#-9
, но я не мог понять, как получить 10.Perl, 46 байт, 10 цифр, сейф
Проблема
Короткие проблемы, как правило, быстро решаются, поэтому я решил попробовать более длинную. Более длинные также имеют тенденцию быть сломанными, если люди оставляют достаточно промежутка, чтобы красть что-то непослушное как
say
илиexit
в, таким образом, все промежутки здесь коротки. Скрытые символы представлены с помощью_
.Мое решение
Для того, чтобы напечатать 2, 3 и т.д., вплоть до 9, сохранить изменения номера , присвоенные
$b{0}
во второй строке (то есть$b{0}=2
,$b{0}=3
и т.д.). Программа на 9 выглядит так:Затем, чтобы получить 10, закомментируйте первую строку, добавив
#
к ней символ.объяснение
Первое, на что следует обратить внимание, это то, что решение не является действительно удачным, кроме удаления пробелов: если мы выложим его с более читаемым пробелом, мы получим следующее:
Обычно, когда вы получаете доступ к аргументам подпрограммы в Perl, вы делаете это, копируя их из
@_
. Для этого есть веская причина:@_
псевдонимы аргументов, которые задаются подпрограммой (например,(sub { $_[0] = 3 })->($x)
присваиваемые им$x
), что обычно нежелательно.Хотя это
@_
может показаться волшебным, на самом деле он просто использует стандартную функцию внутренних компонентов Perl (которая легко доступна из XS, но встречается только в нескольких странных случаях в чистом Perl, например,@_
сама): массив не хранит свои элементы напрямую , а точнее по ссылке. Таким образом, когда мы вызываемb
во второй строке ниже, Perl генерирует массив (вызывающий его@_
), первый элемент которого является ссылкой на то же хранилище, которое$b{0}
использует. (Значения хеш-функции также сохраняются по ссылке; $ _ [0] и $ b {0} ссылаются на одно и то же хранилище в этой точке.) Поскольку@_
мы не делаем ничего особенного с внутренней точки зрения, мы можем взять ссылку к нему так же, как мы могли бы с любым другим массивом, заставляя его пережить подпрограмму, в которой он определен.Переменные Perl также ссылаются на хранение данных по ссылке. Давным-давно люди использовали код, подобный тому,
*x = *y;
который задают$x
как псевдоним$y
(посредством того, что он ссылается на одно и то же), так же@x
как псевдоним@y
,%x
как псевдоним%y
и так далее. Это скорее нарушает инвариант, что переменные с похожими именами не должны действовать одинаково, поэтому современный Perl предоставляет альтернативу; Присвоение ссылки на typeglob переопределяет только переменную, которая соответствует типу ссылки (поэтому*x = \%y
псевдоним%x
будет указывать на то же хранилище, что и%y
, скажем, оставить в$x
покое). Этот синтаксис, в частности, не заботится о том, имеет ли имя хранилища, которому вы присваиваете имя, поэтому, когда мы присваиваем возвращаемое значениеb
(который является ссылкой на массив, который сохраняет массив, ранее называвшийся@_
живым)*b
, что происходит в том случае, если@b
он заменяется псевдонимом списка аргументов для вызоваb
(оставляя%b
без изменений). Это означает, в частности, что$b[0]
и$b{0}
теперь указывают на одно и то же хранилище, и назначение одного из них, следовательно, изменит другое. С этого момента все совершенно просто.Документация Perl на самом деле не говорит об этих деталях, поэтому я не удивлен, что кто-то получил трещину; природа
@_
не совсем похожа на другие массивы не особо подчеркивается, и большинство стилей кодирования направлены на то, чтобы минимизировать эффекты, которые они имеют, а не усиливать их.источник
q
и иs
иy
иm
(в основном, пытаясь завершить их после$b[0]
назначения), но у меня ничего не работает (пока).sub b{\@_}
зацементировался в своем уме, и, хотя я экспериментировал с этим,*b
я не мог получить это! Спасибо за объяснение. Я мог бы замять это в вашем объяснении, но почему быsub b{\@_}*b=b$b[0]
не сделать то же самое?\@_
)*b
, но вы должны явно упомянуть хеш-элемент самостоятельно. С помощью*b=b$b[0]
, вы в основном просто совмещаете новое$b[0]
(после изменения, где@b
указывает) с тем,$b[0]
что существовало в начале программы, что бесполезно.JavaScript, 30 байтов, 10 цифр, взломан
Не должно быть слишком сложно, но, надеюсь, это достаточно сложно, чтобы бросить вызов. :) Нераскрытые символы отмечены значком
_
.источник
Perl, 14 байт, 10 цифр, трещины
Работы от 1 до 10.
_
являются скрытыми персонажами.Я думаю, что это не должно быть слишком трудно взломать. У меня сложнее, на 22 байта, я выложу, если этот взломан.
Оригинальный код:
И заменить
"!"
строку длины номера , который вы хотите напечатать, например!
,!!
,!!!
и т.д.Однако ais523 нашел другой способ:
источник
JavaScript, 22 байта, 10 цифр, взломан
Вероятно, довольно легко взломать.
_
быть скрытым персонажемисточник
xc_de
было ничего, кроме красной сельдиОктава, 17 байт, 10 цифр, трещины
Оригинальное решение
_
это скрытый персонаж.источник
Желе , 7 байтов , 10 цифр, трещины
Никаких подстановочных знаков.
Достигнутая трещина (если использовать eval с аргументом) была, как многие, кажется, в этой теме, не тем, что предполагалось.
Предполагаемая трещина была:
источник
10
, потому что мне повезло, когда я пробовал вещи, которые могли бы сработать.10
Я полагаю, что способ работы для вас заключается в оценке желейного кода в строке9
с аргументом0
(значение по умолчанию для ввода), который затем удаляется (без эффекта), а затем увеличивается.10
работает для вас, оценивая желейный код в строке9
с аргументом[]
- значение по умолчанию для ввода0
, исключенное из очереди - которое вы затем увеличиваете.“1‘‘‘‘‘‘‘‘‘Ọv0Ḋ¤‘
Befunge-93, 11 байт, 10+ номеров, Cracked
Это представление работает не менее 1 - 10. Нераспознанные символы отмечены значком
□
.Попробуйте онлайн
Должен сказать, что меня впечатлило, что два человека могут придумать для этого независимые решения, чего я не ожидал. В то время как Мартин пришел первым, я даю «победу» Sp3000, поскольку их решение более мобильно.
Это было мое намеренное решение, хотя:
источник
"15:**-6-.@
дает 1, но я не уверен, является ли тот факт, что"
толчок 32 сверху (из-за неявных пробелов) является артефактом интерпретатора TIO или частью спецификации Befunge, потому что при попытке нескольких интерпретаторов кажется, что не все интерпретаторы делают это. Ваше решение зависит от этого поведения?R, 21 байт, 10 числа треснувших
Работает на 10 номеров.
_
это скрытый персонаж.Оригинальное решение:
источник
Рубин, 16 байтов, 10 цифр, взломан xsot
#
это любой персонаж.источник
Октава, 32 байта, 10 цифр. Трещины
_
is a hidden character.You can try Octave online here.
Original solution:
1:
nnz(isprime(floor(sqrt(i):pi')))
2:
nnz(isprime(floor('sqrt(i):pi')))
3:
nnz(isprime(floor('sqrt(i):pia')))
4:
nnz(isprime(floor('sqrt(i):piaa')))
...
источник
Octave, 17 bytes, 10 numbers, Cracked
Unrevealed characters are marked with
_
.Intended solution:
источник
Octave, 19 bytes, 10 numbers, cracked
_
is the hidden character.Intended solution:
источник
sca
. Coming from you, I should have thought of matrix functions :-)05AB1E, 5 bytes, 10 numbers, cracked!
Not very hard, but a fun one :)
_
is a random character. Uses the CP-1252 encoding. Try it online!источник
05AB1E, 6 bytes, 10 numbers, cracked
Attempt 2, this time without the three-char string :p.
_
is a random character. Uses the CP-1252 encoding. Try it online!источник
JavaScript, 22 bytes, 10 numbers, cracked
_
is the hidden character.Hint about the intended solution
The character that needs to be changed to generate all numbers is always the same.
источник
JavaScript 21 Bytes, 10 Numbers Cracked
Unrevealed characters are marked with
_
Cracked
My Version:
источник
Python 3, 19 bytes, 10 numbers, cracked
Unrevealed characters are marked with
?
. Tested in Python 3.5.2.источник
Python 3, 16 bytes, 10 numbers, cracked
Unrevealed characters are marked with
?
. This is probably a bit easy since there's only five question marks, but I'm hoping it'll be a fun one.источник
C#, 90 bytes, 10 numbers, cracked
I honestly have no idea how hard this is to crack.
Edit: Oops, transcription error. One
_
too few afterusing
.Now cracked by Hedi, who found the intended (barring the class name) solution.
источник
JavaScript 33 Bytes, 10 Numbers Cracked x2
Oops I post posted my line for generating 10 Which Hedi cracked as though it was for 1
Version intended to post for generating 1
Unrevealed characters are marked with
_
источник
console.log(atob|"0Xc0"-0xB6|("Zp=="))
I thinkPython, 10+ numbers, 61 bytes, Cracked!
Here was the code I posted:
The original code was:
Basically, it throws an error (
'x' is not defined
) and then prints the line the error was found on. So, just keep adding newlines at the beginning to increment the number.I knew it wouldn't be hard to crack - I just wanted a funny way to print numbers - but I wasn't expecting Sp3000 to get it so fast, that's some pro skills!
источник
STDOUT
and printing a number, but I guess I narrowed it down too much. Ah well.sys
definitely made it a lot simpler, since it gave a nice starting point for searching :P05AB1E, 11 bytes, Cracked!
Works from 1-10.
_
is a hidden character.Intended Solution:
источник
Octave, 24 bytes, 9 numbers, cracked
_
is a hidden character.(Inspired by @LuisMendo's challenge.)
источник
JavaScript, 9 bytes, 10 numbers, Cracked
_
is the hidden character.источник
Octave, 25 bytes, 9 numbers. Cracked
_
is a hidden character.источник