两者各有不同-警察


60

注意 -此挑战现已结束。任何新的答案将被忽略,接受的答案将不会改变

挑战

编写一个有效的程序,当仅更改,删除或添加程序中的两个字符时,将完全更改输出。

更改后的输出与原始输出之间的Levenshtein距离必须为15或更大。

输出必须是非空且有限的。因此,您的程序必须在1分钟内终止。

您的输出必须是确定性的,每次运行程序时都输出相同的内容。它也不得依赖平台。

不允许使用任何散列函数,如PRNG中内置的那样。同样,不允许播种RNG。

三天后,完整的提交将变得安全。为了声明这种安全性,您应该编辑答案以显示正确的答案。(澄清:在您给出答案之前,您并不安全,仍然会被破解。)

格式化

您的答案应采用以下格式:

# <Language name>, <Program length>

## Code

<code goes here>

## Original Output

<output goes here>

## Changed output

<changed output goes here>

强盗

强盗的挑战是找出您更改了哪个两个字符。如果强盗破解了您的解决方案,他们将在您的答案上留下评论。

您可以在此处找到强盗的线索。

获奖

最简单的解决方案的人将获胜。

排行榜

<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>


@BetaDecay如何定义哈希函数?
isaacg 2015年

1
@xnor从理论上讲,但是随着程序长度的增加,可能性的数量会大大增加,因此可能需要很长时间
Beta Decay 2015年

1
@RedPanda是的,我会这样认为
Beta Decay

5
@isaacg我决定将安全日期更改为三天
Beta Decay,

4
是否可以将排行榜代码放在更少的行上,从而占用更少的可视空间?
isaacg 2015年

Answers:


6

CJam,13个字节(安全)

J{m!_)mQ%2b}/

在线尝试。

原始输出

000010010101001010001101111000111011100110100100001011101101010100011111110010010010001111111111010000010011001110001010011111000010001001110111100000010110000010000111011011110101110010000011100111100

修改后的输出

11101101100011110001011010000100111011000010011101100000001010100111011010011011010111101000000011101111100000000110001000111110110110101111110100101110000101110100110011110000010101110

J{m!_)ci%2b}/

在线尝试。

这个怎么运作

这利用了CJam在执行程序后如何隐式打印整个堆栈的优势。

只需将几个整数的以2为基的表示形式转储到堆栈中,就可以在不使用任何分隔符的情况下打印它们,因此,应该很难弄清楚其中一个开始于何处而另一个在哪里结束。

原始代码执行以下操作:

J{   e# For each I from 0 to 18, do the following:
  m! e#   Calculate the factorial of I.
  _) e#   Push a copy and add 1.
  mQ e#   Compute the result's integer square root.
  %  e#   Calculate the residue of the factorial divided by the square root.
  2b e#   Push the array of base 2-digits of the resulting integer.
}/   e#

正如@AndreaBiondo在注释中指出的那样,二进制表示形式为0!8!可以在输出的开头找到(为清楚起见添加了空格):

1 1 10 110 11000 1111000 1011010000 1001110110000 1001110110000000

预期的更改是将替换mQci,它使用16位字符算术(转换为无符号的16位字符,然后返回整数),采用整数模65536。

我希望c用来代替数学运算符的想法会变得晦涩难懂。


哇。您如何提出这个?
The_Basset_Hound 2015年

我尝试破解了一段时间。我想出了修改后的模式的一部分,但是我缺少了一些东西。我猜现在很安全。
Andrea Biondo

@AndreaBiondo现在是了。谢谢你的提醒。
丹尼斯

@Dennis我已经知道_)mQ需要将其更改为for 和for ,f(x!)这样,显然是由一个数字进行模运算,使输出中的阶乘从0到8保持不变。我没注意到是第一个因子大于。无论如何,挑战都很好。f(x!) > x!x <= 8f(x!) < x!x >= 9x!9!2^16
Andrea Biondo

39

开裂

莎士比亚,1721字节

我尝试了莎士比亚的答案。时间不短,我很难仅用2个字符来更改输出,但是我认为我做得很好。祝大家好运。附带说明一下,我使用了地址上的“编译器” ,它可能无法与另一个地址一起使用。(不适用于在线解释器)输出不包含任何不可打印的字符。

隐藏的更改。

海伦,一个非常有耐心的年轻女人。
海伦娜(Helena),也是一位举世瞩目的年轻女子。
克劳迪奥,一位与克劳迪乌斯有争议的杰出人物。
克劳迪乌斯,奉承。
坎特伯雷大主教,没用。


          第一幕:克劳迪乌斯的侮辱和奉承。

          场景一:对海伦的侮辱。

[输入克劳迪乌斯和海伦]

克劳迪乌斯:
 你像一个令人作呕的可怕的无父之人一样毛茸茸 
 尘土飞扬的老烂肥肾狗和一场肮脏的大诅咒战争。
 你像你的产物一样愚蠢,又发臭。 
 机智的肮脏可怜的卑鄙可怜的儿子。

[执行]

          场景二:对海伦娜的赞美。

[输入克劳迪奥和海伦娜]

克劳迪奥:
 您是阳光明媚的令人骄傲的健康平安和平的喜悦。
 您就像您和漂亮产品的产物一样惊人
 可爱,年轻,温柔,英俊,富有的英雄。你是伟大的
 作为你的总和和公平的金色提示的产品 
 迷人的爱心高尚的国王和刺绣丰富的光滑金色天使。

[执行]

          场景三:对克劳迪奥的侮辱

[输入克劳迪乌斯和海伦]

海伦:
 你像你,猫和我的总和一样愚蠢。
[海伦出口]

[输入克劳迪奥]

克劳迪乌斯:
 你是愚蠢的,是你和之和的积。 
 我与海伦和海伦娜的产物

[执行]

          场景四:最终倒计时

[进入坎特伯雷和克劳迪乌斯大主教]

克劳迪乌斯:
 你是你和猫的总和。

坎特伯雷大主教:
 我比一条好路还好吗?

克劳迪乌斯:
 如果没有,让我们回到对克劳迪奥的侮辱。

[坎特伯雷大主教退出]

[输入克劳迪奥]

克劳迪乌斯:
 打开心窝!
 打开心窝!
[执行]

原始输出

11324620811132462081

改变输出

11

9
真的很棒。这个故事使我流泪。
Alex Van Liew

6
@AlexVanLiew我花了很长时间写。这是我的杰作!
AboveFire


非常好的答案
骄傲的haskeller 2015年

24

J,76个字节(安全)

,:|.,.<,:>><|.,:>,.<|.>,:<<|.>|.,:,.<,.<,:,.<,:>|.<,:>,.|.<,:,.|.<<,:>126$a.

原始输出

┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐│
││┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐││
│││┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐│││
││││┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐││││
│││││     ┌┬┐├┼┤└┴┘│─ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}│││││
││││└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘││││
│││└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘│││
││└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘││
│└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘│
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

输出改变

┌──────────────────────┐
│┌────────────────────┐│
││┌──────────────────┐││
│││┌────────────────┐│││
││││┌──────────────┐││││
│││││┌───────────┬┐│││││
││││││0 0 0 0 0 0│││││││
│││││└───────────┴┘│││││
││││└──────────────┘││││
│││└────────────────┘│││
││└──────────────────┘││
│└────────────────────┘│
└──────────────────────┘

编辑:解决方案已{:添加(显示在之间###

,:|.,.<,:>><|.,:>,.<|.>,:<<|.>|.,:,.<,.<,:,.<,###{:###:>|.<,:>,.|.<,:,.|.<<,:>126$a.

利用monad {::Map。其余大部分代码都是无用的垃圾。


请注意,我当然可以将代码扩展成荒谬的字符数,以使其更难于找到需要添加/删除/更改两个字符的位置
Fatalize 2015年

我想这已经三天了,所以如果您发布答案,那是安全的。
isaacg 2015年

@isaacg正确,编辑了答案
Fatalize

12

开裂

红宝石,14岁

x=9;puts x*9*9

原始输出

729

输出改变

99999999999999999

4
这看起来很无辜。我已经尝试过了,但是我不知道该从哪里得到17
Dennis

1
我认为这是18 787-9,所以我去了像'99'*2wc,你背叛了我!
Alex Van Liew

@AlexVanLiew 18会很容易。怪怪您的外壳附加了换行符。
丹尼斯

@Dennis你怎么会18岁呢?我无法弄清楚(但我也不了解Ruby)。
Alex Van Liew


12

开裂

Bash,15个字节

echo {{{1..9}}}

原始输出

{{1}} {{2}} {{3}} {{4}} {{5}} {{6}} {{7}} {{8}} {{9}}

修改后的输出

1 2 3 4 5 6 7 8 9


2
做得好。持续时间比我想象的要长。
丹尼斯

10

开裂

Prolog,10个字节

X is 1/42.

原始输出

X = 0.023809523809523808.

输出改变

X = -2.


2
由于某种原因,我完全忽略了这样的事实,也可以像这样解决该问题:X is 1//4-2.,它比@ sp3000破解的原始解决方案容易看得多...
Fatalize 2015年

10

开裂

Python 2,43个字节

print (sum(range(054321)*9876)*87654)/01234

原始输出

334960491355406

输出改变

222084148077792

Levenshtein距离恰好是15。原始版本和更改版本都在我的计算机上运行不到1分钟。


1
我已经编辑了您的帖子,以反映这是Python 2特定的提交内容,这是因为缺少括号print并与range整数相乘。但是,我似乎正MemoryError从大量列表中获取s
Sp3000

1
由于这不是代码编程,您可以使用xrange代替来减少内存负载,range并且我相信itertools有一个生成器生成器会重复序列x次数。
Alex Van Liew 2015年

1
@AlexVanLiew但是从某种意义上说,得分代码高尔夫,最短的是完整的。话虽这么说,但那里有多余的空间和一对括号... 还是有必要?;)
Sp3000

2
国际海事组织,如果这仅依赖于更改所涉及的数字(我们不知道是否是这种情况),这个答案似乎就不太有趣了,因为在那种情况下,您可能可以做得更短,而且破解的唯一途径就是靠蛮力,而不是聪明。
致命

3
破解 那真是有趣!
isaacg 2015年

8

开裂

BrainFuck,504个字节

从来没有人需要分析过脑力激荡的代码。这是早期代码的修改版本,但是Brainfuck代码中的任何更改都会在输出中产生很大的不同。我在http://esoteric.sange.fi/brainfuck/impl/interp/i.html使用解释器来测试我的代码。祝好运 !

++++++++++[->++++++++<]>>++++++[-<---------->]<-------[----------->>>-<<+<[-->->+<<]]>>>+<<>>>+++[->++++++++++<]>++.<+++++++++[->>>>>>>++++++++++<+++++<++++++++++++++<++++++++++<+++++<++++++++++<<]++++++++++>>+++++...>++>++>-->+>++++<<<<<<<.<<<[->>>>>>.<<>>>>>.<<<<<.>>>>>.<<<<<>>>.<<<<.>>>>>.<<<<.>>>>>.<<<<<.>>>>.<<<<<.>>>>.<<...>.<<<<<<]>[->>>>>.<<...>>>.<<<<.>>>>>.<<<<...>>>>.<<<<<.>>>>.<<...>.<<<<<]>[->>>>.<<>>>>>>.<<<<<<..>>>.<<<<.>>>>>.<<<<>>>>>>.<<<<<<.>>>>>>.<<<<<<>>>>.<<<<<.>>>>.<<...>.<<<<]

原始输出

 ___
/   \
|   |
\___/

改变输出

}}}\}}}|.}}}.|///\\}}|.}.|///\\}}|.}.|///\\}}|.}.|///\\}}|.}.|///\\}}|.}.|///\\}}|.}.|///\\}}|.}.|///\\}}|.}.|///\\}}|.}.|///\\}}|.}.|///\

注意:更改后的输出包含几个STX(ASCII 2)和EOT(ASCII 4)字符

这是带ASCII码而不是不可打印字符的版本:

(2)}}}(2)\}}}|(2).}}}.(2)|///\\(4)}|(2).(4)}(4).(2)|///\\(4)}}|(2).(4)}(4).(2)///\\(4)}}|(2).(4)}(4).(2)|///\\(4)}}(2).(4)}(4).(2)|///\\(4)}}|(2).(4)}(4).(2)|/(4)/\\(4)}}|(2).(4)}(4).(2)|///\\(4)}}|(2).(4)}(4).(2)|///\\(4)}}|(2).(4)}(4).(2)|///\\(4)}}|(2).(4)}(4).(2)|///\\(4)}}|(2).(4)}(4).(2)|///\

3
你是邪恶的。但是我会找到的!
RedPanda 2015年

@RedPanda我的代码确实具有结构。至少不是随机的!祝好运!
2015年

输出中是否有任何不可打印的内容?
自豪的haskeller 2015年

@proudhaskeller是的,对此感到抱歉,我将编辑帖子,其中有一堆字符STX(ASCII 2)和EOT(ASCII 4)
AboveFire 2015年


8

破解

Wolfram语言(Mathematica或WolframAlpha),3个字节

8.!

原始输出

40320.

输出改变

2.67182 - 0.891969 I

对于那些在WolframAlpha上尝试的人,结果显示为

Mathematica图形

我删除了先前的答案,因为它仅适用于Mathematica,不适用于WolframAlpha。这将劫匪放在收费墙后面(而不是当之无愧的酒吧),这是不公平的。



@abligh不错!:)
belisarius博士15年

1
另一个答案是什么?我很好奇。
Brain Guider'Aug

7

开裂

MATLAB / OCTAVE,7个字节

码:

cos(pi)

原始输出:

ans =

     -1

输出更改:

ans =

   1.5708 - 0.8814i

这样得出的Levenshtein距离正好为15。



3
对我来说,最大的麻烦是注意到更改后的输出的实部是pi / 2。从那里,不难猜测解决方案。
David Zhang

7

开裂

CJam,8个字符

"~f":i:#

原始输出

17290024234092933295664461412112060373713158853249678427974319674060504032816100667656743434803884485234668769970047274563123327020396104330878852891146011372048615474145637592955298601510765168228550988848615653376

输出改变

修改后的输出在这里。在我的2GHz笔记本电脑上,两者都需要不到一分钟的时间。

说明

人们似乎对此工作原理感到惊讶。该代码如下所示:

"~f"       Push a string
    :i     Convert to a list of bytes [126 102]
      :#   Fold with # (power)

计算得出126 ^ 102。解决方案是:

"}\t~f"
       :i     Convert to a list of bytes [125 9 126 102]
         :#   Fold with # (power)

这将计算((125 ^ 9)^ 126)^ 102,其长度为数十万个数字。


6
这是犯罪。
Alex Van Liew

什么...我真的想知道这是怎么回事!;)
Beta Decay 2015年


@BetaDecay我可以解释原始版本的工作原理,但不能解释Dennis的版本。我不知道毛里斯(Mauris)是如何解决的……
Alex Van Liew

神圣的香蕉!WTF!
Brain Guider'Aug

7

开裂

Pyth,8个字节

码:

%CG^3y21

初始输出:

51230235128920219893

更改后的输出:

58227066

1
更改后的输出等于CG mod (2^21 * 28)。我不认识Pyth,所以我看不出该如何改变(3 ^ (2 * 21))……
Lynn

1
同样,CG等于sum(256**n * (122-n) for n in range(26))
林恩

1
更改后的输出也等于CG mod (2^21 * 28 * 2*n),,1 <= n <= 4以及for n=6n=12。此外,CG只是小写字母解释为基数256。我想知道基数3是否还有另一个模数?
Alex Van Liew

%CG^2 26%CG^4y13,但两者之间的距离均为3 ...
Jakube


6

开裂

Python 2,58个字节

R=range(01234);print sum(m<<min(m,n)for m in R for n in R)

原始输出

2444542772018013876036977350299418162656593659528311114655474359757543862791958572561591492595632222632192542272836836649846934427359810217936317967768095940470375690509652583392001888886352103127515963142

输出改变

4669

15距离规则确实使事情变得棘手。我希望一切顺利。


4669 = 667 * 7并且range(01234)的最后一个元素是667的
事实

如果[m<<min(m,n)for m in R for n in R]在解释器中打印出来,则会得到一些真正怪异的白噪声风格图案。
Alex Van Liew


6

开裂

Python 2,50个字节

原始代码:

'~'*sum([(x,y)[x%2]for x in[y for y in range(8)]])

原始输出:

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'

修改后的输出:

'~~~~~~~~~~~~~~~~~~~'

不太短,也许不太难,我真的不知道。我会尽快提出更好的建议。


那是40个波浪线,然后是19个波浪线?我想这是在解释器中运行的吗?
Alex Van Liew


2
什么我迄今发现的总结:没有更换的组合xyyx,或改变数字在range19个颚化的结果。我还尝试了-x或之前插入一个y,并更改%为之一+ - / *,但无济于事。我现在可以肯定地需要1或2个插入。
mbomb007

1
好的,我的第一个链接现在可以正确破解它。
Alex Van Liew

2
我添加了一个小解释,我实际上认为这个解释非常聪明。我不知道我什至没有看过一套集合理解,而且依靠Python泄漏y到封闭范围是一件很不错的事情。
Alex Van Liew 2015年

6

开裂

PHP,164字节

$S_U_M_M_E_R = 1;
$A_U_T_U_M_N = 2;
$T_I_M_E = 1;

if ($T_I_M_E == $S_U_M_M_E_R) {
    $A_C_=$T_I_=$O_N= 'SWIM' ? 'TAN' : 'DRINK';
}

print $T_I_M_E * $A_U_T_U_M_N;

原始输出

2

输出改变

-1.1306063769532


做得好!我不认为它会那么容易被破解。
拉兹万

6

GolfScript,15个字节(安全)

10,{1+3?}%{*}*]

更改代码

107,{1+3?}%{^}*]

原始输出

47784725839872000000

输出改变

557154

说明:

10,             # numbers from 0 to 10
   {1+3?}%      # add one and raise to the cube. (%=for each)
          {*}*] # take the product and place it in a list(useless)`

更改代码

107,             # numbers from 0 to 107
    {1+3?}%      # add one and raise to the cube. (%=for each)
           {^}*] # xor them and place it in a list(useless)

我确实认为这是安全的,因此,如果您想编辑自己的帖子
Beta Decay,2015年

@BetaDecay我是!
Baconaro


4

开裂

C,53字节

main(a,_){puts(_*_*_*_*_-1?"Expected Output":"?");}

原始输出

Expected Output

输出改变

?

可能太容易了,但是谁知道。(注意:从技术上讲,它是系统相关的,但是失败的系统类型也会使此处的所有其他提交都失败,因此我认为这是有争议的)。

开裂

编辑

我犯了一个错误。对明显攻击更安全的新代码:

main(a,_){puts(_*_-1||_*_*_-1||_*_*_*_-1?"Expected Output":"?");}

相同的输出。65字节的新大小。希望更难...尽管可能仍然太容易了。




2
(旁注-这可能应该是两个答案)
Sp3000

@ Sp3000您可能是对的,尽管原始版本的目标是拥有相同的解决方案,但我只是过于关注奇数*(您可以将中间的一个变成/)的问题,而没有考虑* 0更容易更改。
LambdaBeta 2015年

4

被issacg破解

MATLAB,20个字节

format long
sin(i^pi)

原始输出

0.331393418243797 - 1.109981778186163i

改变输出

0.220584040749698 - 0.975367972083631i

我在Octave解释器中尝试了很多想法。依然没有。我试着喜欢使用的东西sinhasintanpi^i,等...
mbomb007

@ mbomb007-我也很茫然...我在MATLAB的StackOverflow上排名第五
rayryeng



4

CJam,28个字节(安全)

"jK=\~"5*)ib257b~{G$5$+}*]Jb

在线尝试

原始输出

7705397905065379035618588652533563996660018265606606763127193120855297133322151462150247488267491212817218321670720380456985476811737021068519164822984561148339610474891720342171053455881107227302663880445203851079295537592154028123394687360216561235621729967011148112746984677807932995700334185726563970223018774

修改后的输出

16650180159137697345989048346412185774444335111603430666402604460993564226370500963166158223117360250140073061887053326627468495236957122711656527124216908303912850181595147494475577084810653496778801228980874902968634143062

"jK=\~"5*Wcib257b~{G$5$+}*]Jb

在线尝试。

这个怎么运作

我对这个有点不满意...

原始代码执行以下操作:

"jK=\~"5* e# Push "jK=\~jK=\~jK=\~jK=\~jK=\~".
)i        e# Pop the last character and cast it to integer.
b257b     e# Convert the remainder of the string from that base to base 257.
~         e# Dump all resulting base-257 digits on the stack:
          e# 137 72 124 88 81 145 85 32 28 251 118 230 53 13 245 147 256 116 187 22 224
{         e# Do the following 224 times:
  G$5$+   e#   Add copies of the 5th and 17th topmost integers on the stack
          e#   (recurrence of a lagged Fibonacci sequence).
}*        e#
]         e# Wrap the entire stack in an array.
Jb        e# Convert from base 19 to integer.
          e# The resulting integer is printed implicitly.

预期的更改将替换(iWci

这样就使重复的字符串保持不变,并压入65535(通过转换为无符号的16位字符,然后返回整数),从而使滞后的斐波那契序列的第一个元素变为

87 225 162 210 73 196 142 219 175 61 40 147 0 93 75 55 103 116 237 188 108 122 176 133 135 240 251 155 224 82 181 75 23 87 139 49 148 169 84 109 110 166 52 103 83 185 78 73

循环重复126次。


这现在很安全,不是吗?
Beta Decay 2015年

@BetaDecay我几乎在两个CJam答案中都使用了相同的技巧,因此我不得不等待一次发布两个解决方案。现在很安全。
丹尼斯

一旦我弄清楚了这是什么,我意识到有很多事情可以调整,我什至不费力气就试图强行破解这个……好工作:)
Sp3000

4

Javascript,47(安全)

for(var i=64460,x=773;i>=1324;)x=i--/x;alert(x)

原始输出

11.948938595656971

输出改变

3.679331284911481

距离正好是15。

经过Chrome和IE测试。

for(var i=64460,x=773;i>>=1<324;)x=i--/x;alert(x)

这使用位移分配运算符i>>=1使循环间隔为非线性。此外,它还具有有趣的特性,即试图蛮力解决方案的人会遇到无限运行的多种变体。


3

开裂

Fantom,26

Float.makeBits(1123581321)

原始输出

5.55122931E-315

输出改变

124.24518585205078

通过默默无闻的安全性,如果没有人知道该语言,则没有人可以破解它。Levenshtein距离为15。


我想我需要学习Fantom ...
2015年



3

开裂

Java,149个字符

class T{public static void main(String[]a){System.out.print(((Integer.MAX_VALUE^25214903917L)&281474976710655L)*25214903917L+11L&281474976710655L);}}

原始输出

174542852132661

修改后的输出

106906909674100

暗示:

Random.java



3

Brainfuck,100字节

++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<[>.+<-]

原始输出

ABCDEFGHIJKLMNOPQRSTUVWXYZ

输出改变

[
  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ

注意:可能容易破裂。但是,在Brainfuck中,一切都不容易。


2
输出中是否有任何不可打印的字符?
Sp3000

似乎有些东西被吃掉了,但是当我尝试复制和粘贴时还有很多无法打印的内容,所以我假设是这样
Sp3000,2015年

@ Sp3000不,不应该有任何不可打印的东西。您正在使用哪个口译员?
Kurousagi 2015年

该方法不等于我的方法,请继续尝试。
Kurousagi 2015年

5
如果您可以发布输出的实际ASCII码,那就太棒了。
Alex Van Liew 2015年

3

破解

现代Perl 5,70

@array = (qw smiles) x 11;
s/.*// foreach @array;
print "@array\n";

原始输出

一条换行符。

输出改变

 mile mile mile mile mile mile mile mile mile mile

输出以空格开头,以换行符结束。


@AlexVanLiew 注意,第一个m前面有一个空格!
丹尼斯

@丹尼斯哦,不!我知道不可能那么简单。
Alex Van Liew

我不确定,但我想我有 ...
Dom Hastings

@DomHastings是的!好解决。当有人评论您的解决方案时,附加字符可以是任何地方的额外空间。我说“现代” Perl 5是因为each仅从某个版本开始才适用于数组。
msh210

2
如果他没有破解,您会说“一英里错过了”吗?:D
mbomb007


3

perl,12个字节

破解

print sin 97

原始输出

0.379607739027522

所需的输出

-0.64618863474386

1
我可以证实它几乎肯定不是print sin xxprint sin xx97print sin 97xx其中xx任何两个数字。
Alex Van Liew


@DomHastings确实很好。出于兴趣,您是怎么做到的?
2015年

3
阅读@ AlexVanLiew的评论后,我测试了类似的数字9.?79.7?等等,但意识到它必须是一个运营商。尝试了片段中所有我能想到的,perl -e 'print map{sin((+"9${_}")x7).$/}1..9'最终得到了正确的组合!
唐·黑斯廷斯

@DomHastings会为您的破解+1。
2015年

3

开裂

SWI-Prolog,54个字节

assert(d(E,F):-(print(E),print(F))). d(123456,123456).

原始输出

true.

123456123456
true.

输出改变

true.

false.

前几天,我试图让SWI-Prolog口译员工作,但未能成功,所以我会在黑暗中a一口。如果删除EFprint您会得到想要的吗?
Alex Van Liew

@AlexVanLiew我从中收到语法错误
Sp3000

@AlexVanLiew不正确
致命

呃,好吧。值得一试。
Alex Van Liew

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.