ค้นหารหัสแหล่ง Interwoven (โจร)


13

นี่คือเธรดของโจร สำหรับด้ายตำรวจไปที่นี่

บทนำ

สำหรับความท้าทายของ Cops / Robbers ตำรวจจะเขียนโปรแกรมที่สร้างผลผลิตและรวมเข้าด้วยกัน มันเป็นหน้าที่ของโจรที่จะแยกโปรแกรมของตำรวจออกมาเพื่อสร้างผลลัพธ์ที่ต้องการ

กฎโจร

โจรจะพยายามค้นหาโปรแกรมต่างๆที่ผู้คนโพสต์ในการส่งไปยังเธรดของตำรวจ (ลิงก์ด้านบน) หากโจรขโมยรหัสตำรวจพวกเขาจะต้องโพสต์โปรแกรมที่แยกออกจากกันและจับคู่พวกเขากับผลลัพธ์ของพวกเขาในคำตอบที่นี่และโพสต์ว่าพวกเขาถอดรหัสรหัสในคำตอบของตำรวจ

เกณฑ์การให้คะแนน

มีสององค์ประกอบที่ถูกรวมเข้าด้วยกันเมื่อให้คะแนนการส่งที่แคร็ก

  • 2 กำลังของจำนวนโปรแกรมต่าง ๆ ที่ใช้ในคำตอบของตำรวจ
  • ปัดเศษจำนวนไบต์ใน interweaving ลงไปสู่กำลังที่ใกล้เคียงที่สุดของ 2

ตัวอย่างเช่นหากโจรแตกTIliGoEnRเป็นTIGERและlionโจรจะได้รับ 2 ^ 2 + 8 = 12 คะแนน

ผู้ชนะของความท้าทายโจรจะเป็นคนที่มีคะแนนมากที่สุดหลังจากช่วงเวลาที่เพียงพอสำหรับคนที่จะเข้าร่วม


(ใครต้องการความช่วยเหลือเกี่ยวกับตัวอย่างข้อมูล)

คำตอบ:


6

Vitsy 12 คะแนน

'o'2\I/NO

ลองออนไลน์!

a5F\aZ

ลองออนไลน์!

NaNในNaNoเป็นแถมตาย

วิธีที่ชัดเจนในการพุชNaNคือการแบ่ง0ด้วยตัวเอง2\Iดันความยาวอินพุต ( 0 ) สองครั้ง/ทำการแบ่งและNพิมพ์ทุ่น

เราเหลือไว้กับการพิมพ์oและ'o'เป็นตัวอักษรสตริงที่Oพิมพ์

ตัวละครที่เหลือจะต้องเป็นของโปรแกรมอื่น ในความเป็นจริงaดันตัวป้อนบรรทัดซึ่ง5Fเป็นแฟกทอเรียลของ5 ( 120 ) \aเปลี่ยนให้เป็นแนวป้อน 120 บรรทัดและZพิมพ์สแต็กทั้งหมด


แฟนซีมากสวยมาก ทำได้ดี. +1
Addison Crump

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 ?

ฉันจะเพิ่มคำอธิบายในภายหลัง (แยกรหัสในส่วนที่พิมพ์แต่ละส่วน)


มีคนอธิบายวิธีการคำนวณคะแนนที่ฉันไม่เข้าใจในการคำนวณได้
ไหม

1
ทำได้ดี. 2^programs + 256/bytes=pointsคะแนนจะถูกคำนวณโดย 2^2 + 256/128=6 pointsในกรณีนี้มันเป็น ฉันคิดว่าสิ่งนี้จะได้รับการแก้ไข แต่เนื่องจากเป็นตอนนี้โปรแกรมจำนวนไบต์ที่น้อยลงจะได้รับโบนัสมากขึ้นสำหรับโจร ซึ่งรู้สึกออก
Bassdrop Cumberwubwubwub

1
@Bas เมื่อวานนี้มีการเปลี่ยนแปลง
Arcturus

4

PHP , 68 คะแนน

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

เอาท์พุท: Array

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

เอาท์พุท: \^/\]co\[\$


ฉันชอบการส่งนี้เพราะมันอาศัยอยู่ไม่กี่คุณสมบัติความรู้น้อย - หนึ่งอาจจะบอกว่าmisfeatures - ของ 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 ที่

3

ทับทิม 68 คะแนน

ครั้งแรก:

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

ประการที่สอง:

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

putcมันสวยตามธรรมชาติจากการทำงานออกท้ายที่สุดด้วย


1
อ๊ะฉันมีวิธีแก้ปัญหาที่แตกต่างออกไปเล็กน้อยพร้อมกับเคล็ดลับทางไวยากรณ์ที่แปลกกว่า แต่ฉันคิดว่าฉันจะเก็บมันไว้ในกระเป๋าหลังของฉันสำหรับความท้าทายอื่น ทำได้ดี!
ประวัติศาสตร์

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

ต๊าย มันแย่มาก

หลังจากการดีบั๊กฉันพบว่าหลังจากการโทร (ส่วนของ) โปรแกรมที่ 2 มันจะไม่ทำงานอีกครั้ง นี่เป็นเพราะตัวแปรทั่วโลกfยังคงได้รับมอบหมาย เพราะfได้รับมอบหมายที่ลอง / Object.keys(f)จับไม่ได้ล้มเหลวใน ฉันไม่รู้ว่านี่เป็นเล่ห์เหลี่ยมหรือไม่ตั้งใจ แต่มันทำให้ฉันปวดหัว

นอกจากนี้ฉันเชื่อว่าผลลัพธ์ของโปรแกรมแรกนั้นเฉพาะแพลตฟอร์ม
/../gลบอักขระทั้งหมดบนเครื่องของฉันเนื่องจาก regex .ซึ่งหมายถึงอักขระใด ๆ หลบหนีไปพร้อมกับ/\../gงาน แต่ผมหวังว่าคนที่สามารถหลั่งน้ำตาแสงเพิ่มเติมบนนี้ นอกจากนี้ผลลัพธ์ของฉันมักจะเกิดข้อผิดพลาดในการปัดเศษตัวแปร javascript ทั่วโลกบางตัวสามารถเปลี่ยนแปลงสิ่งนี้ได้หรือไม่

เอาท์พุต

32666666666666643233333333333336323166666666666668313333333333333231306666666666666830333333333333323029666666666666682933333333333332292866666666666668283333333333333228276666666666666827333333333333322726666666666666682633333333333332262566666666666668253333333333333225246666666666666824333333333333322423666666666666682333333333333332232266666666666668223333333333333222216666666666666821333333333333322120666666666666682033333333333332201966666666666668193333333333333219186666666666666818333333333333321817666666666666681733333333333332171666666666666668163333333333333216156666666666666615333333333333341514666666666666661433333333333334141366666666666666133333333333333413126666666666666612333333333333341211666666666666661133333333333334111066666666666666103333333333333410966666666666666933333333333334986666666666666683333333333333487666666666666677333333333333337666666666666667633333333333333656666666666666753333333333333354666666666666674333333333333334366666666666666533333333333333353266666666666666523333333333333352166666666666666713333333333333331066666666666666603333333333333330

สิ่งนี้ได้รับการทดสอบบน chrome 46 (เบราว์เซอร์ของฉันเท่านั้น), Windows 7

ฉันหวังว่านี่ยังคงเป็นข้อเสนอที่ถูกต้องแม้จะมีผลลัพธ์ที่แตกต่างกัน


มีฟันอยู่ตรงนั้นฉันไม่รู้ว่ามันพลาดไปได้อย่างไร ทำได้ดีมาก! สิ่งนี้ถูกต้อง ฉันจะอัปเดตการส่งเมื่อไม่ได้ใช้มือถือ;)
Conor O'Brien

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

นี่คงจะยากกว่านี้อีกแล้วตำรวจคัดแยกคำหลักออกไป ;)


ฉัน interwove มันด้วยตนเองและได้ขี้เกียจ แต่งานที่ดี ฉันพยายามแอบดู โอ้ดี ขอบคุณจริง ๆ ที่ทำให้โปรแกรมนี้แตกเพราะฉันทำหายไป
ผู้ใช้ทั่วไป

1

PHP , 24 คะแนน

โปรแกรม 1

print!0;

โปรแกรม 2

print!$x;

โปรแกรม 3

print print'';

ทดสอบกับhttp://sandbox.onlinephpfunctions.com/


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.