查找交织的源代码(强盗)


13

这是强盗的线索。有关警察的线索,请转到此处

介绍

对于这次“警察/盗贼”挑战,警察将编写产生输出的程序并将它们交织在一起。强盗的工作是将警察的程序分开以产生所需的输出。

强盗规则

强盗将尝试找到人们在提交给警察的线索(以上链接)中提交的不同程序。如果强盗解决了警察的代码,则他们必须张贴分离的程序,并在此处将其与输出匹配,并在答案中张贴,并且他们已破解警察的答案上的代码。

计分

在对破解的提交进行评分时,会将两个部分加在一起。

  • 2取决于警察回答中使用的不同程序的数量
  • 圆形的字节交织的数量下降到2最近的电源。

例如,如果强盗TIliGoEnRTIGER和的身份开枪lion,那么强盗将获得2 ^ 2 + 8 = 12点。

强盗挑战的获胜者将是在足够长的时间让人们参与之后得分最高的人。


(谁想帮助您制作摘录?)

Answers:


6

Vitsy,12分

'o'2\I/NO

在线尝试!

a5F\aZ

在线尝试!

NaNNaNo是一个大破绽。

推入的明显方法NaN是自己除以02\I推入输入长度(0)两次,/执行除法,然后N打印浮点数。

我们剩下的是print o,它'o'是要O打印的字符串文字。

剩下的任何字符都必须属于另一个程序。实际上,a将换5F行乘以5的阶乘(120),\a将其转换为120个换行,并Z打印整个堆栈。


好漂亮,好漂亮。做得好。+1
Addison Crump 2015年

4

BitShift,2 ^ 2 + 64 = 68点

警察线

0101100110110101001001010110111011101110111011101101010

版画 ! ?

1011101110111011101110110101000000000110010101101101010

版画 ? !

0101100110110101001001010110111011101110111011101101010 # '! ?'
01011001101101010 # '! '
0101              # XOR 0 with 128 
                  # Making current value 128 (1000 0000)
    10            # Bitshift 1 to left making 10000000 -> 01000000
      01          # Bitshift 1 to left making 01000000 -> 00100000  
        101       # XOR 00100000 with 1 making it 00100001
           101010 # print 00100000 which is binary for !
010010101         #
010               # XOR 00100001 with 1 making it 00100000
   010101         # print 00100000 which is binary for <space>
10111011101110111011101101010  # '?'
101               # XOR 00100000 with 1
   1              # Bitshift 1 to left making 00100001 -> 01000010
                      # This gets repeated till 01000010 becomes 0111111
101010                # print 0111111 which is binary for ?

稍后我将添加一些描述(将代码分成打印单个部分的部分)


有人可以解释如何计算分数,但我对计算不太了解
Dennis_J 2015年

1
做得好。分数由计算2^programs + 256/bytes=points。在这种情况下为2^2 + 256/128=6 points。我认为这将得到编辑,因为像现在这样,更少的字节数程序会为强盗带来更高的奖励。感觉到了
Bassdrop Cumberwubwubwub 2015年

1
@Bas截至昨天,情况已更改。
Arcturus

4

PHP,68分

$c=tR;$h=s;$c=$h.$c._.$h.plit;echo$c($h);

输出: Array

echo quotemeta('^/]'.co.'[$');

输出: \^/\]co\[\$


我喜欢此提交,因为它依赖于PHP的一些鲜为人知的功能-也许有人说过错。PHP允许将函数引用分配给变量,因此例如:

$f = function($a, $b) { return pow($a, $b); };
echo $f(2, 4);

会完全符合您的期望。如:

$f = pow;
echo $f(2, 4);

...除了没有按照您的想法去做。$f = pow不会分配一个函数引用$f(这太有意义了吧?),而是分配字符串 'pow'。含义是,如果任何字符串表示已定义函数的名称,则可以将其用作函数调用。错误代码等待发生。我什至不知道你为什么允许这个。

PHP的另一个缺点是,函数名称和关键字不区分大小写。我希望我在开玩笑。因此echo pow(2, 4),,ECHO POW(2, 4)EcHo PoW(2,4)在功能上都是等效的。

展示柜上的最后一个缺点是,每当将一个数组键入为字符串(例如用于打印)时,结果始终是非常有用的字符串Array。花点时间思考一下有人实际上是故意这样做的事实。

因此,在第一个程序中,@ insertusername在此处构建了字符串stR_split,该字符串用作函数引用(由于上述原因,它实际上起作用了),然后输出结果数组。


1
出色的工作,带有出色的解释。:)
insertusername此处,2015年

3

红宝石 68分

第一:

p %w(b n n s)*?a%?}

第二:

w,=?(.ord,40,?);"jivivi{2".bytes{|b|putc b-w}

从结束到结束,自然而然地有了putc


1
糟糕,我有一个稍微不同的预期解决方案,还有另一个怪异的语法技巧,但我想我会把它放在口袋里以应对另一个挑战。做得好!
histocrat

3

JavaScript,68分

警察线

第一个程序

输出: ffttff

(![]+[])[+[]]+(![]+[])[+[]]+(!![]+[])[+[]]+(!![]+[])[+[]]+(![]+[])[+[]]+(![]+[])[+[]]

第二程序

输出: 1010

+!![]+[+[]]+(+!![])+(+[])

交织

+     !!    []             +                [    +[]]          +      (+     !![])                 +     (+[])
 (![]+  [])[  +[]]+(![]+[]) [+[]]+(!![]+[])[ +[]]    +(!![]+[]) [+[]]+  (![]+     [])[+[]]+(![]+[]) [+[]]

2

Java 132分

警察线

第一个程序:

interface c{static void main(String[]g){System.out.println("Hell"\u002bg.length);}}

第二程序:

class i{public static void main(String[]n){System.out.print("Bye!\n");}}

第一程序输出Hell0和第二程序输出Bye!


啊,我来晚了一个小时。做得好。
Arcturus

2

Javascript,132分

程序1

var x;{;alert((f=>(f.reverse(f+~~f,Math.pow(2,Math.E))))(new Array(99).fill(0).map((x,i,f)=>i/3)).join("").replace(/../g,""))}

程序2

try{"function";Object.keys(f)}catch(e){f=s=>!s?f(1):"";alert(f(f(f(0/0) +f(7/5)))+f(f)+`${f}`.split``.map(e=>e.charCodeAt()*23))}

ew。太可怕了

经过大量调试后,我发现调用第二个程序的(部分)程序后,它将不再运行。这是因为f仍然分配了全局变量。由于f已分配,因此try / catch不会失败Object.keys(f)。我不知道这是偷偷摸摸的骗术还是无意的,但这让我头疼。

另外,我相信第一个程序的输出是特定于平台的。
/../g删除我机器上的所有字符,因为正则表达式.表示任何字符。/\../g但是,通过工作逃避它,我希望有人能够对此有所了解。另外,我的输出容易出现舍入错误,也许某些全局javascript变量可以更改此值?

输出量

32666666666666643233333333333336323166666666666668313333333333333231306666666666666830333333333333323029666666666666682933333333333332292866666666666668283333333333333228276666666666666827333333333333322726666666666666682633333333333332262566666666666668253333333333333225246666666666666824333333333333322423666666666666682333333333333332232266666666666668223333333333333222216666666666666821333333333333322120666666666666682033333333333332201966666666666668193333333333333219186666666666666818333333333333321817666666666666681733333333333332171666666666666668163333333333333216156666666666666615333333333333341514666666666666661433333333333334141366666666666666133333333333333413126666666666666612333333333333341211666666666666661133333333333334111066666666666666103333333333333410966666666666666933333333333334986666666666666683333333333333487666666666666677333333333333337666666666666667633333333333333656666666666666753333333333333354666666666666674333333333333334366666666666666533333333333333353266666666666666523333333333333352166666666666666713333333333333331066666666666666603333333333333330

这已在Windows 7的Chrome 46(我唯一的浏览器)上进行了测试。

尽管输出不同,但我希望这仍然是有效的提交


那里有一条斜线,我不知道它是怎么错过的。干得好!这是对的。当我不在移动设备上时,我将更新我的提交内容;)
Conor O'Brien 2015年

2

JavaScript(ES6),68分

程序1

alert((c=>c.replace(/[a-z]/gi,a=>String.fromCharCode(("Z">=a?90:122)>=(a=a.charCodeAt(0)+13)?a:a-26)))("fvzcyr"))

程序2

alert((b=>b.replace(/[a-zA-Z]/g,s=>String.fromCharCode(s.charCodeAt(0)+(s.toLowerCase()<'n'?13:-13))))("gbnfg"))

交织程序

 alaelretrt((((cb=>c=>b.replace(/.replace[a-(/[azA-Z]-z]/gi/g,a,s=>String=>String.fromCharCode(s.fromCharCode(("Z">=a.charCodeAt(0)?90:122)>=(a=a.charCodeAt(0+(s.toLowerCase())+13)?a<'n'?13:-13:a-26)))))))((""gfvbznfcyrg""))))
 al e r t  ( ( c =>c             .replace   (/[a     -z]/gi  ,a  =>String                       .fromCharCode(("Z">=a              ?90:122)>=(a=a.charCodeAt(0                 )+13)?a           :a-26)))    ( "  fv z  cyr " ))
   a l e rt ( ( b   =>b.replace(/        [a-    zA-Z]      /g  ,s        =>String.fromCharCode(s                     .charCodeAt(0)                           +(s.toLowerCase()       <'n'?13:-13        )))) ( "g  b nf   g "  ))

如果警察将关键字撕裂,这将变得更加困难。;)


我手动干预它,变得懒惰,但是干得不错。我试图偷偷摸摸。那好吧。实际上,感谢您破解此程序,因为我以某种方式丢失了原始的未编织程序。
普通用户


1

Python 2,320点

print "This"
print "hello"
print "well"
print "no"
print "alas"
print "but"
print "oh"
print "done"
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.