İç içe Kaynak Kodlarını Bul (Soyguncular)


13

Bu soyguncuların iş parçacığı. Polislerin konusu için buraya gidin .

Giriş

Bu Polisler / Soyguncular meydan okuması için polisler çıktı üreten programlar yazacak ve bunları birbirine karıştıracak. İstenilen çıktıları üretmek için polislerin programlarını ayırmak soyguncunun görevidir.

Soyguncu kuralları

Soyguncular, insanların polisin iş parçacığına (yukarıda bağlantılı) gönderdikleri farklı programları bulmaya çalışacaklar. Bir soyguncu bir polisin kodunu çözerse, ayrılan programları yayınlamalı ve buradaki bir cevapta çıktılarıyla eşleştirmeli ve polisin cevabındaki kodu kırdıklarını bildirmelidir.

puanlama

Çatlamış bir başvuruyu puanlarken birbirine eklenen iki bileşen vardır.

  • 2 polisin cevabında kullanılan farklı program sayısının gücüne
  • Dokunmasıyla içinde bayt sayısı Yuvarlak aşağı 2'nin en yakın gücüne.

Örneğin, bir hırsız çatlak olursa TIliGoEnRolarak TIGERve liondaha sonra hırsız 2 ^ 2 + 8 = 12 puan alır.

Soyguncuların mücadelesinin kazananı, insanların katılması için yeterli bir süre sonra en çok puanı alan kişi olacaktır.


(Snippet'e kim yardım etmek ister?)

Yanıtlar:


6

Vitsy , 12 puan

'o'2\I/NO

Çevrimiçi deneyin!

a5F\aZ

Çevrimiçi deneyin!

NaNİçinde NaNoölü bir hediye oldu.

İtmek için bariz yol 0'ı kendi kendine NaNbölmek , giriş uzunluğunu ( 0 ) iki kez itmek , bölme yapmak ve bir kayan nokta yazdırmak olacaktır.2\I/N

Biz baskı ile sol ove 'o'bu değişmez bir dizedir Obaskılar.

Kalan karakterler diğer programa ait olmak zorundaydı. Aslında, 5 ( 120 ) faktöriyel abir satır beslemesini iter , bunu 120 satır beslemesine dönüştürür ve tüm yığını yazdırır.5F\aZ


Çok süslü, çok güzel. Aferin. +1
Addison Crump

4

BitShift , 2 ^ 2 + 64 = 68 puan

polisler iplik

0101100110110101001001010110111011101110111011101101010

baskılar ! ?

1011101110111011101110110101000000000110010101101101010

baskılar ? !

kod

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 ?

Daha sonra bazı açıklamalar ekleyeceğim (kodları ayrı ayrı yazdıran parçalara ayırın)


Birisi skoru nasıl hesaplayacağımı açıklayabilir miyim Hesaplamayı tam olarak anlamıyorum
Dennis_J

1
Aferin. Puan ile hesaplanır 2^programs + 256/bytes=points. Bu durumda 2^2 + 256/128=6 points. Bence bu düzenlenecek, çünkü şimdi olduğu gibi, daha az bayt sayısı programı soyguncular için daha fazla bonus alıyor. Hangi hissediyor kapalı
Bassdrop Cumberwubwubwub

1
@Bas Dün itibariyle bu değişti.
Arcturus

4

PHP , 68 puan

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

Çıktı: Array

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

Çıktı: \^/\]co\[\$


Ben bu gönderimi seviyorum, çünkü PHP daha az biliyorum özellikleri - biri yanlış özellikleri söyleyebilir - dayanmaktadır. PHP, işlev başvurularının değişkenlere atanmasına izin verir, örneğin:

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

tam olarak beklediğiniz şeyi yapardı. Olduğu gibi:

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

... düşündüğünüzü yapması dışında. $f = powBir işlev başvurusu atamaz $f(sağ, çok fazla mantıklı olacağını?), daha çok dize 'pow' . Bunun anlamı, tanımlı bir işlevin adını temsil ediyorsa, herhangi bir dizenin işlev çağrısı olarak kullanılabilmesidir. Hatalı kod olmasını bekliyor. Buna neden izin vermek istediğini bile bilmiyorum .

PHP'nin bir başka yanlış özelliği de işlev adlarının ve anahtar kelimelerin büyük / küçük harfe duyarlı olmamasıdır. Keşke şaka yapsaydım. Yani echo pow(2, 4),, ECHO POW(2, 4)ve EcHo PoW(2,4)hepsi işlevsel olarak eşdeğerdir.

Vitrindeki son yanlış özellik, bir dizi yazdırma gibi bir dize olarak yazıldığında, sonucun her zaman inanılmaz derecede yararlı dize olmasıdır Array. Birisinin bunu gerçekten kasten yaptığını düşünmek için bir dakikanızı ayırın.

İlk programda, @insertusernamehere dizeyi oluşturur stR_split, bu dize bir işlev başvurusu olarak kullanılır (yukarıdaki nedenlerden dolayı gerçekten çalışır) ve sonuç bir dizi çıkar.


1
Harika bir açıklama ile gelen güzel çalışma. :)
insertusernameburada

3

Ruby , 68 puan

İlk:

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

İkinci:

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

Sonunda çalışarak oldukça doğal bir şekilde takip etti putc.


1
Hata! Bir daha garip sözdizimi hilesi ile biraz farklı bir çözüm buldum, ama sanırım başka bir meydan okuma için arka cebimde tutacağım. Aferin!
histokrat

3

JavaScript, 68 puan

Polisler iplik

İlk program

Çıktı: ffttff

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

İkinci program

Çıktı: 1010

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

birbirinin içine girme

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

2

Java, 132 puan

Polisler iplik

İlk program:

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

İkinci program:

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

İlk program çıktıları Hell0ve ikinci program çıktılarıBye!


Ah, çok geç kalmıştım. Aferin.
Arcturus

2

Javascript , 132 puan

Program 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,""))}

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

Whew. Bu korkunçtu.

Çok sayıda hata ayıklamadan sonra, 2. programı çağırdıktan sonra (bir kısmını), tekrar çalışmadığını öğrendim. Bunun nedeni, genel değişkenin fhala atanmış olmasıdır. Atandığı fiçin try / catch başarısız olmadı Object.keys(f). Sinsi bir hile mi yoksa kasıtsız mı bilmiyorum ama bana başım ağrıyor.

Ayrıca, ilk programın çıktısının platforma özel olduğuna inanıyorum. herhangi bir karakter anlamına
/../ggelen normal .ifade nedeniyle makinemdeki tüm karakterleri kaldırır . /\../gAncak işlerden kaçmak , umarım birisi buna daha fazla ışık tutabilir. Ayrıca, benim çıktı yuvarlama hataları eğilimli, belki de bazı küresel javascript değişken bunu değiştirebilir?

Çıktı

32666666666666643233333333333336323166666666666668313333333333333231306666666666666830333333333333323029666666666666682933333333333332292866666666666668283333333333333228276666666666666827333333333333322726666666666666682633333333333332262566666666666668253333333333333225246666666666666824333333333333322423666666666666682333333333333332232266666666666668223333333333333222216666666666666821333333333333322120666666666666682033333333333332201966666666666668193333333333333219186666666666666818333333333333321817666666666666681733333333333332171666666666666668163333333333333216156666666666666615333333333333341514666666666666661433333333333334141366666666666666133333333333333413126666666666666612333333333333341211666666666666661133333333333334111066666666666666103333333333333410966666666666666933333333333334986666666666666683333333333333487666666666666677333333333333337666666666666667633333333333333656666666666666753333333333333354666666666666674333333333333334366666666666666533333333333333353266666666666666523333333333333352166666666666666713333333333333331066666666666666603333333333333330

Bu, krom 46 (tek tarayıcım) Windows 7'de test edildi.

Umarım farklı çıktılara rağmen bu hala geçerli bir sunumdur


Orada bir eğik çizgi vardı, nasıl kaçırıldığını bilmiyorum. İyi iş olsa! Doğru. Mobil
Conor O'Brien

2

JavaScript (ES6) , 68 puan

Program 1

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

Program 2

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

İç içe programlar

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

Polis anahtar kelimeleri parçalara ayırmış olsaydı bu çok daha zor olurdu. ;)


Manuel olarak iç içe geçtim ve tembel, ama iyi bir iş buldum. Sinsi olmaya çalıştım. Oh iyi. Aslında bunu kırdığınız için teşekkür ederim çünkü kaybettim Orijinal dokunmamış programlar bir şekilde.
Genel Kullanıcı


1

Python 2 , 320 puan

print "This"
print "hello"
print "well"
print "no"
print "alas"
print "but"
print "oh"
print "done"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.