Tìm mã nguồn đan xen (Cướp)


13

Đây là chủ đề của bọn cướp. Đối với chủ đề của cảnh sát, đi đến đây .

Giới thiệu

Đối với thử thách Cops / Robbers này, cảnh sát sẽ viết các chương trình sản xuất đầu ra và đan xen chúng lại với nhau. Nhiệm vụ của tên cướp là chọn ra các chương trình của cảnh sát để tạo ra kết quả mong muốn.

Quy tắc cướp

Những tên cướp sẽ cố gắng tìm các chương trình khác nhau mà mọi người đăng trong bài nộp cho chủ đề của cảnh sát (được liên kết ở trên). Nếu một tên cướp giải quyết được mã của cảnh sát, họ phải đăng các chương trình riêng biệt và khớp chúng với kết quả đầu ra của chúng trong câu trả lời ở đây và đăng rằng chúng đã bẻ khóa mã trên câu trả lời của cảnh sát.

Chấm điểm

Có hai thành phần được thêm vào với nhau khi chấm điểm đệ trình bị bẻ khóa.

  • Sức mạnh của số lượng chương trình khác nhau được sử dụng trong câu trả lời của cảnh sát
  • Làm tròn số byte trong đan xen xuống với mức 2 gần nhất.

Ví dụ: nếu một tên cướp bẻ khóa TIliGoEnRnhư TIGERlion, thì tên cướp nhận được 2 ^ 2 + 8 = 12 điểm.

Người chiến thắng trong thử thách của bọn cướp sẽ là người có nhiều điểm nhất sau một khoảng thời gian đủ để mọi người tham gia.


(Ai muốn giúp với một đoạn trích?)

Câu trả lời:


6

Vitsy , 12 điểm

'o'2\I/NO

Hãy thử trực tuyến!

a5F\aZ

Hãy thử trực tuyến!

Các NaNtrong NaNolà một giveaway chết.

Cách rõ ràng để đẩy NaNsẽ là chia 0 cho chính nó, 2\Iđẩy độ dài đầu vào ( 0 ) hai lần, /thực hiện phép chia và Nin dấu phao.

Chúng tôi còn lại với in ấn o, và 'o'là một chuỗi chữ Oin.

Bất cứ nhân vật nào còn lại đều phải thuộc về chương trình khác. Trong thực tế, ađẩy một nguồn cấp dữ liệu, 5Fgiai thừa của 5 ( 120 ), \abiến nó thành 120 nguồn cấp dữ liệu và Zin toàn bộ ngăn xếp.


Thật lạ mắt, thật đẹp. Làm tốt. +1
Addison Crump

4

BitShift , 2 ^ 2 + 64 = 68 điểm

cảnh sát chủ đề

0101100110110101001001010110111011101110111011101101010

in ! ?

1011101110111011101110110101000000000110010101101101010

in ? !

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 ?

Tôi sẽ thêm một số mô tả sau (chia mã trong các phần in từng phần)


Ai đó có thể giải thích cách tính điểm tôi không hiểu cách tính
Dennis_J

1
Làm tốt. Điểm số được tính bằng 2^programs + 256/bytes=points. Trong trường hợp này là nó 2^2 + 256/128=6 points. Tôi nghĩ rằng điều này sẽ được chỉnh sửa, vì như bây giờ, các chương trình đếm byte ít hơn nhận được phần thưởng cao hơn cho những tên cướp. Cảm giác thật tuyệt
Bassdrop Cumberwubwubwub

1
@Bas Như ngày hôm qua, điều đó đã được thay đổi.
Arcturus

4

PHP , 68 điểm

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

Đầu ra: Array

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

Đầu ra: \^/\]co\[\$


Tôi như trình này, bởi vì nó dựa trên một vài tính năng bí quyết nhỏ hơn - người ta có thể nói misfeatures - PHP. PHP cho phép các tham chiếu hàm được gán cho các biến, ví dụ:

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

sẽ làm chính xác những gì bạn mong đợi. Như có thể:

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

... ngoại trừ nó không làm những gì bạn nghĩ. $f = powkhông gán tham chiếu hàm cho $f(điều đó sẽ có ý nghĩa quá nhiều, phải không?), mà là chuỗi 'pow' . Hàm ý là bất kỳ chuỗi nào có thể được sử dụng như một lệnh gọi hàm, nếu nó đại diện cho tên của một hàm được xác định. Mã xấu đang chờ để xảy ra. Tôi thậm chí không biết tại sao bạn muốn cho phép điều này.

Một sai lầm khác của PHP, đó là tên hàm và từ khóa không phân biệt chữ hoa chữ thường. Tôi ước tôi nói đùa. Vì vậy echo pow(2, 4), ECHO POW(2, 4)EcHo PoW(2,4)tất cả đều tương đương về chức năng.

Điều không phù hợp cuối cùng trên showcase là bất cứ khi nào một mảng được gõ dưới dạng chuỗi, chẳng hạn như để in, kết quả luôn là chuỗi hữu ích đáng kinh ngạc Array. Hãy dành một chút thời gian để suy nghĩ về thực tế rằng ai đó thực sự đã làm điều này một cách có chủ ý.

Vì vậy, trong chương trình đầu tiên, @insertusernamehere xây dựng chuỗi stR_split, chuỗi này được sử dụng làm tham chiếu hàm (vì lý do trên, thực sự hoạt động) và kết quả là một mảng, là đầu ra.


1
Công việc tốt đẹp đi kèm với một lời giải thích tuyệt vời. :)
insertusernamehere

3

Ruby , 68 điểm

Đầu tiên:

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

Thứ hai:

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

Nó theo sau khá tự nhiên từ làm việc cuối cùng, với putc.


1
Rất tiếc, tôi đã có một giải pháp dự định hơi khác với một thủ thuật cú pháp kỳ lạ hơn, nhưng tôi đoán tôi sẽ giữ nó trong túi sau cho một thử thách khác. Làm tốt!
lịch sử

3

JavaScript, 68 điểm

Cops chủ đề

Chương trình đầu tiên

Đầu ra: ffttff

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

Chương trình thứ hai

Đầu ra: 1010

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

Đan xen

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

2

Java, 132 điểm

Cops chủ đề

Chương trình đầu tiên:

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

Chương trình thứ hai:

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

Đầu ra chương trình đầu tiên Hell0và đầu ra chương trình thứ haiBye!


Ah, tôi đã trễ một giờ. Làm tốt lắm.
Arcturus

2

Javascript , 132 điểm

Chương trình 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,""))}

Chương trình 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))}

Phù Điều này thật tồi tệ.

Sau rất nhiều lần sửa lỗi, tôi phát hiện ra rằng sau khi gọi (một phần) chương trình thứ 2, nó sẽ không chạy lại. Điều này là do biến toàn cục fvẫn được chỉ định. Vì fđược chỉ định, việc thử / bắt không thành công Object.keys(f). Tôi không biết đây là một trò lén lút hay vô ý nhưng nó khiến tôi đau đầu.

Ngoài ra, tôi tin rằng đầu ra của chương trình đầu tiên là nền tảng cụ thể.
/../gxóa tất cả các ký tự trên máy của tôi, vì biểu thức chính .quy có nghĩa là bất kỳ ký tự nào. /\../gTuy nhiên, thoát khỏi nó bằng các tác phẩm, tôi hy vọng ai đó có thể làm sáng tỏ hơn về điều này. Ngoài ra, đầu ra của tôi dễ bị lỗi làm tròn, có lẽ một số biến javascript toàn cầu có thể thay đổi điều này?

Đầu ra

32666666666666643233333333333336323166666666666668313333333333333231306666666666666830333333333333323029666666666666682933333333333332292866666666666668283333333333333228276666666666666827333333333333322726666666666666682633333333333332262566666666666668253333333333333225246666666666666824333333333333322423666666666666682333333333333332232266666666666668223333333333333222216666666666666821333333333333322120666666666666682033333333333332201966666666666668193333333333333219186666666666666818333333333333321817666666666666681733333333333332171666666666666668163333333333333216156666666666666615333333333333341514666666666666661433333333333334141366666666666666133333333333333413126666666666666612333333333333341211666666666666661133333333333334111066666666666666103333333333333410966666666666666933333333333334986666666666666683333333333333487666666666666677333333333333337666666666666667633333333333333656666666666666753333333333333354666666666666674333333333333334366666666666666533333333333333353266666666666666523333333333333352166666666666666713333333333333331066666666666666603333333333333330

Điều này đã được thử nghiệm trên chrome 46 (trình duyệt duy nhất của tôi), Windows 7.

Tôi hy vọng đây vẫn là một bài nộp hợp lệ, mặc dù đầu ra khác nhau


Có một dấu gạch chéo trong đó, tôi không biết làm thế nào nó bị bỏ lỡ. Tốt, mặc dù! Chính xác. Tôi sẽ cập nhật nội dung gửi của mình khi tôi không sử dụng điện thoại di động;)
Conor O'Brien

2

JavaScript (ES6) , 68 điểm

Chương trình 1

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

Chương trình 2

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

Các chương trình đan xen

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

Điều này sẽ khó hơn rất nhiều, vì cảnh sát đã xé các từ khóa. ;)


Tôi tự đan xen nó và lười biếng, nhưng công việc tốt. Tôi đã cố gắng lén lút. Ồ tốt Trên thực tế cảm ơn bạn đã bẻ khóa cái này vì tôi đã mất Các chương trình không mong muốn ban đầu bằng cách nào đó.
Người dùng chung


1

Python 2 , 320 điểm

print "This"
print "hello"
print "well"
print "no"
print "alas"
print "but"
print "oh"
print "done"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.