УВЕДОМЛЕНИЕ. Эта задача теперь закрыта. Любые новые ответы будут игнорироваться, и принятый ответ не изменится
Вызов
Напишите правильную программу, которая, когда только два символа в программе изменены, удалены или добавлены, полностью меняет вывод.
Измененный вывод должен иметь расстояние Левенштейна 15 или более от вашего исходного вывода.
Вывод должен быть не пустым и конечным. Поэтому ваша программа должна завершиться в течение 1 минуты.
Ваш вывод должен быть детерминированным, выводя одно и то же при каждом запуске программы. Это также не должно зависеть от платформы.
Любые хеш-функции запрещены , так как встроены в PRNG. Аналогичным образом, посев ГСЧ не допускается.
Через три дня отправка без изменений станет безопасной. Чтобы заявить об этой безопасности, вы должны отредактировать свой ответ, чтобы показать правильный ответ. (Пояснение: пока вы не откроете ответ, вы не в безопасности и все еще можете взломать.)
Форматирование
Ваш ответ должен быть в следующем формате:
# <Language name>, <Program length>
## Code
<code goes here>
## Original Output
<output goes here>
## Changed output
<changed output goes here>
Грабители
Задача грабителей - выяснить, каких двух персонажей вы изменили. Если грабитель взломал ваше решение, он оставит комментарий к вашему ответу.
Вы можете найти нить грабителей здесь .
выигрыш
Человек с кратчайшим решением без трещин побеждает.
Leaderboard
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><script>site = 'meta.codegolf';postID = 5686;isAnswer = false;QUESTION_ID = 54464;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 bylength=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 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) { 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])+)\s*(?:[,;(]|\s-).*?([0-9]+)/.exec(h); var e = [[n++, m ? parseInt(m[2]) : 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.length == 100) g(p + 1); else { var s=[[uncracked_list, '#uncracked'], [safe_list, '#safe']]; for(var p=0;p<2;p++) u(s[p],bylength); jQuery('#uncracked_by_length').bind('click',function(){u(s[0],bylength);return false}); jQuery('#uncracked_by_creation').bind('click',function(){u(s[0],bycreation);return false}); } });}g(1);</script><link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"><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;}</style><div class="main"><h3>Uncracked submissions</h3><table> <tr> <th>Language</th> <th class="score">Length</th> <th>User</th> </tr> <tbody id="uncracked"></tbody></table><div>Sort by: <a href="#" id="uncracked_by_length">length</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">Length</th> <th>User</th> </tr> <tbody id="safe"></tbody></table></div>
источник
Ответы:
CJam, 13 байт (безопасно)
Попробуйте онлайн.
Исходный вывод
Модифицированный вывод
Решение
Попробуйте онлайн.
Как это устроено
Это использует преимущества того, как CJam неявно печатает весь стек после выполнения программы.
Простой сброс представлений base-2 нескольких целых чисел в стеке приводит к тому, что они печатаются без какого-либо разделителя, поэтому трудно определить, где начинается одно из них, а какое заканчивается другое.
Исходный код выполняет следующие действия:
Как отмечает @AndreaBiondo в комментариях, двоичные представления 0! до 8! можно найти в начале вывода (для ясности добавлены пробелы):
Предполагаемое изменение должно было заменить
mQ
наci
, которое принимает целое число по модулю 65536, используя 16-битную арифметику символов (приведение к 16-битному символу без знака, затем обратно к целому числу).Я надеялся, что идея использования
c
для замены математического оператора будет достаточно неясной.источник
_)mQ
нужно изменить наf(x!)
такой, чтоf(x!) > x!
дляx <= 8
иf(x!) < x!
дляx >= 9
, потому что,x!
очевидно, модулируется числом, которое оставляет факториалы от 0 до 8 без изменений в выходных данных. Я не заметил,9!
был первый факториал больше, чем2^16
. Очень хороший вызов в любом случае.Трещины
Шекспир, 1721 байт
Я попробовал ответ Шекспира. Это не коротко, и у меня были трудности с изменением вывода только с 2 символами, но я думаю, что мне это удалось. Удачи всем. В качестве примечания я использовал «компилятор», доступный по этому адресу, и он может не работать с другим. (он не работает с онлайн-переводчиком) Вывод не содержит непечатаемых символов.
Код
Исходный вывод
Измененный вывод
источник
J, 76 байт (безопасно)
Код
Исходный вывод
Изменен вывод
РЕДАКТИРОВАТЬ: Решение
{:
добавлено (показано между###
)Использует монаду
{::
Карта . Большая часть остального кода - бесполезный мусор.источник
Трещины
Руби, 14
Код
Исходный вывод
Изменен вывод
источник
'99'*2
.wc
Ты предал меня!Трещины
Баш, 15 байт
Исходный вывод
Модифицированный вывод
источник
Трещины
Пролог, 10 байт
Код
Исходный вывод
Изменен вывод
источник
X is 1//4-2.
это гораздо легче увидеть, чем мое первоначальное решение, которое взломало @ sp3000 ...Трещины
Python 2, 43 байта
Код
Исходный вывод
Изменен вывод
Расстояние Левенштейна ровно 15. И оригинал, и измененный прогон менее 1 минуты на моем компьютере.
источник
print
и умноженияrange
на целое число. Тем не менее, я, кажется, получаюMemoryError
s из большого списка ...xrange
вместо этого,range
и я полагаюitertools
, генератор генератора, который повторяет последовательностьx
раз.Трещины
BrainFuck, 504 байта
Никто никогда не должен анализировать бредовый код. Это модифицированная версия более раннего кода, но любое изменение в коде Brainfuck имеет большое значение в выводе. Я использую переводчика по адресу http://esoteric.sange.fi/brainfuck/impl/interp/i.html для проверки своего кода. Удачи !
Код
Исходный вывод
Измененный вывод
Примечание. Измененный вывод содержит несколько символов STX (ASCII 2) и EOT (ASCII 4)
Вот версия с кодами ASCII в скобках вместо непечатаемых символов:
источник
Трещины
Wolfram Language (Mathematica или WolframAlpha), 3 байта
Код
Исходный вывод
Изменен вывод
Для тех, кто пытается это на WolframAlpha, результат отображается как
Я удалил свой предыдущий ответ, потому что он работал только на Mathematica, а не в WolframAlpha . Это поставило грабителей за платный доступ (вместо заслуженных баров), что было несправедливо.
источник
Трещины
MATLAB / OCTAVE, 7 байтов
Код:
Исходный вывод:
Изменен вывод:
Это дает расстояние Левенштейна ровно 15.
источник
Трещины
CJam, 8 символов
Код
Исходный вывод
Изменен вывод
Вывод после модификации здесь . Оба занимают меньше минуты на моем 2GHz ноутбуке.
объяснение
Люди кажутся пораженными тем, как это работает. Код работает так:
Это рассчитывает 126 ^ 102. Решение было:
Это вычисляет ((125 ^ 9) ^ 126) ^ 102, что составляет сотни тысяч цифр.
источник
Трещины
Pyth, 8 байт
Код:
Начальный выход:
Измененный вывод:
источник
CG mod (2^21 * 28)
. Я не знаю Пайта, поэтому я не вижу, как это изменить(3 ^ (2 * 21))
...CG
равныхsum(256**n * (122-n) for n in range(26))
.CG mod (2^21 * 28 * 2*n)
, где1 <= n <= 4
, а также дляn=6
иn=12
. Кроме того,CG
это просто строчный алфавит, интерпретируемый как базовое число 256. Интересно, есть ли еще один модуль с базой 3?%CG^2 26
или%CG^4y13
, но оба имеют расстояние 3 ...Трещины
Python 2, 58 байт
Код
Исходный вывод
Изменен вывод
Правило 15 расстояний определенно усложнило ситуацию. Я надеюсь, что это идет хорошо.
источник
[m<<min(m,n)for m in R for n in R]
в интерпретаторе, вы получаете действительно пугающие белые узоры.Трещины
Python 2, 50 байт
Оригинальный код:
Исходный вывод:
Модифицированный вывод:
Не слишком коротко, и, возможно, не слишком сложно, я действительно не знаю. Я постараюсь придумать что-то лучшее в ближайшее время.
источник
x
сy
,y
сx
, или заменить цифру вrange
результате в 19 тильды. Я также экспериментировал со вставкой-
перед илиx
илиy
, и с заменой%
на одну из+ - / *
, безрезультатно. Теперь я уверен, что требуется 1 или 2 вставки.y
в объем, был приятным штрихом.Трещины
PHP, 164 байта
Код
Исходный вывод
Изменен вывод
источник
GolfScript, 15 байт (безопасно)
Код
10,{1+3?}%{*}*]
Измененный код
107,{1+3?}%{^}*]
Исходный вывод
47784725839872000000
Изменен вывод
557154
Explainations:
Измененный код
источник
Трещины
APL , 7 байт
Код
Исходный вывод
Изменен вывод
источник
J
в выходных данных, что это комплексное число?aJb
относится к комплексному номеруa + bi
.Трещины
C, 53 байта
Код
Исходный вывод
Изменен вывод
Наверное, слишком просто, но кто знает. (Примечание: технически это зависит от системы, но тип системы, в которой она выходит из строя, также не сможет выполнить все остальные представления здесь, поэтому я решил, что это спорный вопрос).
Трещины
редактировать
Я допустил ошибку. Новый код, более безопасный для очевидной атаки:
одинаковые выводы. Новый размер 65 байт. Надеюсь, сложнее ... хотя все еще, вероятно, слишком легко.
источник
Взломанный issacg
MATLAB, 20 байтов
Код
Исходный вывод
Измененный вывод
источник
sinh
,asin
,tan
,pi^i
и т.д. ...Трещины
Октава, 20 байт
Выход:
Измененный вывод:
источник
CJam, 28 байт (безопасно)
Попробуйте онлайн .
Исходный вывод
Модифицированный вывод
Решение
Попробуйте онлайн.
Как это устроено
Я пошел немного за борт с этим ...
Исходный код выполняет следующие действия:
Предполагаемое изменение заменяется
(i
наWci
.Это оставляет повторяющуюся строку нетронутой и толкает 65535 (путем приведения к 16-разрядному символу без знака, а затем обратно к целому числу), так что первые элементы отставшей последовательности Фибоначчи становятся
и цикл повторяется 126 раз.
источник
Javascript, 47 (безопасно)
Код
Исходный вывод
Изменен вывод
Расстояние ровно 15.
Проверено в Chrome и IE.
Решение
При этом используется оператор присваивания сдвига битов,
i>>=1
чтобы сделать интервал цикла нелинейным. Также у этого есть забавное свойство, что кто-то, пытающийся перебором решения, столкнется с несколькими вариантами, которые работают бесконечно.источник
Трещины
Фантом , 26
Код
Исходный вывод
Изменен вывод
Безопасность через неизвестность, если никто не знает язык, никто не может взломать его. Левенштейн Дистанция 15. Беги в фанш.
источник
Трещины
CJam, 6 символов
Исходный вывод
Изменен вывод
Это может быть слишком легко. :П
источник
Трещины
Java, 149 символов
Исходный вывод
Модифицированный вывод
Подсказка:
источник
Brainfuck, 100 байт
Код
Исходный вывод
Изменен вывод
Примечание: возможно легко взломать. Но тогда в Brainfuck нет ничего проще.
источник
Трещины
современный Perl 5, 70
Код
Исходный вывод
Единственная новая строка.
Изменен вывод
Вывод начинается с пробела и заканчивается новой строкой.
источник
each
относится к массиву только с некоторой версии.Трещины
Matlab, 12 байт
Код
Исходный вывод
Изменен вывод
источник
Perl, 12 байт
Трещины
Код
Исходный вывод
Желаемый вывод
источник
print sin xx
,print sin xx97
илиprint sin 97xx
гдеxx
любые два числа.9.?7
,9.7?
и т.д., но понял , что это должно было быть оператором. Опробовал все, что мог придумать в отрывках, как будто вperl -e 'print map{sin((+"9${_}")x7).$/}1..9'
итоге получил правильную комбинацию!Трещины
SWI-Пролог, 54 байта
Код
Исходный вывод
Изменен вывод
источник
E
иF
вprint
утверждениях вы получите то, что вы хотите?