織り交ぜられたソースコード(強盗)を見つける


13

これが強盗のスレッドです。警官のスレッドについては、こちらをご覧ください

前書き

このCops / Robbersの課題に対して、警官は出力生成プログラムを作成し、それらを一緒に織り込みます。警官のプログラムを分解して、目的の出力を生成するのは、強盗の仕事です。

強盗ルール

強盗は、人々が警官のスレッドへの投稿で投稿するさまざまなプログラムを見つけようとします(上記リンク)。強盗が警官のコードを解決する場合、彼らは分離されたプログラムを投稿し、ここでの回答の出力と一致させ、警官の回答でコードを解読したことを投稿する必要があります。

得点

クラックされた提出物を採点するときに一緒に追加される2つのコンポーネントがあります。

  • 警官の答えで使用されるさまざまなプログラムの数の2乗
  • 織り合わせのバイト数を最も近い2のべき乗に切り捨てます。

例えば、強盗割れた場合TIliGoEnRであるとしてTIGER、およびlion、その後、強盗は2 ^ 2 + 8 = 12点を受け取ります。

強盗の挑戦の勝者は、人々が参加するのに十分な期間の後、最もポイントを獲得した人になります。


(スニペットを手伝いたいのは誰ですか?)

回答:


6

Vitsy、12ポイント

'o'2\I/NO

オンラインでお試しください!

a5F\aZ

オンラインでお試しください!

NaN中にはNaNo死んで景品でした。

プッシュNaNする明らかな方法は、0をそれ自体で除算し2\I、入力長(0)を2回プッシュし、/除算を実行してN、float を出力することです。

私たちは、印刷が残っているo、と'o'その文字列リテラルでO印刷されます。

残ったキャラクターはすべて、他のプログラムに属していなければなりませんでした。実際、5の階乗(120)のa改行をプッシュし、それを120の改行に変換して、スタック全体を印刷します。5F\aZ


とてもファンシーで、とても美しい。よくやった。+1
アディソンクランプ

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

1
よくやった。スコアはによって計算され2^programs + 256/bytes=pointsます。この場合は2^2 + 256/128=6 pointsです。これは編集されると思いますが、これは現在のように、バイト数の少ないプログラムが強盗に高いボーナスを受け取るためです。気分が悪い
悪い

1
@Bas昨日の時点で、それは変更されました。
アークトゥルス

4

PHP、68ポイント

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

出力: Array

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

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


それは、いくつかの低い既知の機能に依存しているので、私はこの投稿のように、 - 1は言うかもしれないmisfeaturesを - PHPの。PHPでは、関数参照を変数に割り当てることができるため、たとえば次のようになります。

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

まさにあなたが期待することをするでしょう。ように:

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

...ただし、それはあなたが思うことをしていないことを除いて。 $f = powは、関数参照を$f(あまりにも意味がありますか?)ではなく、stringに 割り当てます'pow'。これは、定義された関数の名前を表す場合、任意の文字列を関数呼び出しとして使用できることを意味します。悪いコードが発生するのを待っています。なぜこれを許可したいのかさえ分かりません。

PHPのもう1つの欠点は、関数名とキーワードが大文字と小文字を区別しないことです。冗談を言っていたらよかったのに。ですからecho pow(2, 4)ECHO POW(2, 4)、およびEcHo PoW(2,4)すべての機能的に同等です。

ショーケースの最後の不備は、印刷などのように配列が文字列として入力されるたびに、結果が常に驚くほど役立つ文字列になることArrayです。誰かが実際に意図的にこれを行ったという事実を振り返ってみましょう。

そのため、最初のプログラム@insertusernamehereは文字列を作成しstR_split、この文字列は関数参照として使用され(上記の理由により実際に機能します)、結果の配列が出力されます。


1
すばらしい説明が付いている素晴らしい仕事。:)
ここにユーザー名を挿入します

3

ルビー、68ポイント

最初:

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

第二:

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

それは、最後までうまくいくことからかなり自然に続きましたputc


1
おっと、私はもう1つの奇妙な構文トリックを使用して、わずかに異なる意図された解決策がありましたが、別の挑戦のために私はそれを私の後ろのポケットに保持すると思います。よくやった!
-histocrat

3

JavaScript、68ポイント

警官のスレッド

最初のプログラム

出力: ffttff

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

第二プログラム

出力: 1010

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

織り交ぜる

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

2

Java、132ポイント

警官のスレッド

最初のプログラム:

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

2番目のプログラム:

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

最初のプログラム出力Hell0と2番目のプログラム出力Bye!


ああ、1時間遅すぎた。よくやった。
アークトゥルス

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

ふう これはひどいものでした。

多くのデバッグの後、2番目のプログラム(の一部)を呼び出した後、2番目のプログラムは再度実行されないことがわかりました。これは、グローバル変数fがまだ割り当てられていたためです。f割り当てられているため、try / catchは失敗しませんでしたObject.keys(f)。これが卑劣なトリックなのか意図的でないのかはわかりませんが、頭痛の種になりました。

また、最初のプログラムの出力はプラットフォーム固有のものだと思います。任意の文字を意味する
/../g正規表現のため、私のマシン上のすべての文字を削除します./\../gしかし、作品でそれを逃れ、誰かがこれにもっと光を当てることができることを願っています。また、私の出力には丸めエラーが発生する可能性があります。おそらく、いくつかのグローバルjavascript変数がこれを変更する可能性がありますか?

出力

32666666666666643233333333333336323166666666666668313333333333333231306666666666666830333333333333323029666666666666682933333333333332292866666666666668283333333333333228276666666666666827333333333333322726666666666666682633333333333332262566666666666668253333333333333225246666666666666824333333333333322423666666666666682333333333333332232266666666666668223333333333333222216666666666666821333333333333322120666666666666682033333333333332201966666666666668193333333333333219186666666666666818333333333333321817666666666666681733333333333332171666666666666668163333333333333216156666666666666615333333333333341514666666666666661433333333333334141366666666666666133333333333333413126666666666666612333333333333341211666666666666661133333333333334111066666666666666103333333333333410966666666666666933333333333334986666666666666683333333333333487666666666666677333333333333337666666666666667633333333333333656666666666666753333333333333354666666666666674333333333333334366666666666666533333333333333353266666666666666523333333333333352166666666666666713333333333333331066666666666666603333333333333330

これは、クロム7(私の唯一のブラウザー)、Windows 7でテストされました。

異なる出力にもかかわらず、これがまだ有効な提出であることを願っています


そこにスラッシュがありましたが、どのように見逃されたかわかりません。いい仕事だ!正解です。モバイル以外の場合は、提出物を更新します;)
コナーオブライエン

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

警官がキーワードを引き裂いたなら、これはずっと難しくなっただろう。;)


私は手動でそれを織り交ぜて、怠zyでしたが良い仕事をしました。私はこっそりしてみました。しかたがない。元の未編のプログラムをどうにかして失ったので、実際にこれをクラックしてくれてありがとう。
一般ユーザー


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.