Знайдіть переплетені вихідні коди (грабіжники)


13

Це нитка розбійників. Для нитки поліцейських йдіть сюди .

Вступ

Для цього виклику «Копи / Розбійники» поліцейські записують програми, що виробляють вихід, і переплітають їх разом. Робота грабіжника - розбирати програми поліцейських, щоб отримати бажані результати.

Правила грабіжника

Розбійники намагатимуться знайти різні програми, які люди публікують у поданнях до теми поліцейських (пов’язаних вище). Якщо грабіжник вирішує код поліцейського, він повинен розмістити окремі програми і співставити їх зі своїми результатами у відповіді тут та опублікувати, що вони зламали код у відповіді поліцейського.

Оцінка балів

Є два компоненти, які додаються разом при оцінці зламаного подання.

  • 2 на потужність кількості різних програм, що використовуються у відповіді поліцейського
  • Заокругляйте кількість байтів у переплетенні аж до найближчої сили 2.

Наприклад, якщо грабіжник тріщить TIliGoEnRяк такий, TIGERі lionграбіжник отримує 2 ^ 2 + 8 = 12 балів.

Переможцем виклику грабіжників стане людина, яка отримає найбільше балів через достатній проміжок часу для участі людей.


(Хто хоче допомогти з фрагментом?)

Відповіді:


6

Віци , 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 ?

Пізніше додам опис (розділіть код на частини, які друкують окремі частини)


Хтось може пояснити, як підрахувати рахунок, я не дуже розумію підрахунок
Dennis_J

1
Молодці. Оцінка обчислюється за 2^programs + 256/bytes=points. У цьому випадку це 2^2 + 256/128=6 points. Я думаю, що це буде відредаговано, тому що, як це зараз, менше програм для підрахунку байтів отримує більший бонус для грабіжників. Що відчуває себе
Bassdrop Cumberwubwubwub

1
@Bas Вчора це було змінено.
Арктур

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
Хороша робота, яка йде з чудовим поясненням. :)
Вставтекористування

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

Ява, 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!


А, я на годину запізнився. Хороша робота.
Арктур

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

Вау. Це було жахливо.

Після багато налагодження я з'ясував, що після виклику (частин) другої програми вона не запуститься знову. Це тому, що глобальна змінна fвсе ж призначалася. Через fприсвоєння не вдалося виконати спробу / ловити Object.keys(f). Я не знаю, чи це підлий трюк чи ненавмисне, але це заподіяло мені головний біль.

Крім того, я вважаю, що результат першої програми залежить від платформи.
/../gвидаляє всі символи на моїй машині, через регулярний вираз, .який означає будь-який символ. /\../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 "  ))

Це було б набагато важче, якби поліцейський розірвав ключові слова. ;)


Я вручну переплела його і отримала ледачий, але добру роботу. Я намагався бути підступним. Що ж, добре. Власне дякую, що зламали цю, бо я якось втратив оригінальні непереплетені програми.
Загальний користувач


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.