Сдвиг-ориентированное программирование


41

Строка может быть сдвинута на число nпутем получения значения байта cкаждого символа в строке, вычисления (c + n) mod 256и преобразования результата обратно в символ.

Например, смещение "ABC123"на 1 приводит к "BCD234"смещению на 10 "KLM;<="дюймов и смещению на 255 дюймов "@AB012".

Задание

Выберите , как много чисел nс , 0 < n < 256как вы смеете и написать программу или функцию , которая принимает строку в качестве входных данных и

  • возвращает строку без изменений, если исходный код не изменился, но
  • возвращает строку, сдвинутую на nкогда исходный код сдвинут на n.

правила

  • Оценка вашего представления - это число поддерживаемых n, причем чем выше оценка, тем лучше. Максимальная оценка 255.
  • Ваша заявка должна поддерживать хотя бы одну смену, поэтому минимальный балл - 1.
  • В случае ничьей выигрывает более короткая программа.
  • Все сдвинутые программы должны быть на одном языке.



Допустимо ли иметь вывод перед желаемым выводом, который очищается через escape-последовательности ANSI или скрыт через \r?
Дом Гастингс

4
@DomHastings Поскольку 0x0D и 0x1B потенциально являются частью фактического вывода строки, я бы так не думал.
Мартин Эндер

Ответы:


24

Brainfuck, оценка: 31 (2208 байт)

Программа в кодировке Base64:

LFsuLF0oVycnJycqKFkkUyMjIyMjIyMjJiRVIE8fHx8fHx8fHx8fHx8iIFEMOwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLDgw9CDcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcKCDkEMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGBDUAL8O / W7 / Dv8O / W7 / Dv8O / W7 / Dv8O / W7 / Dv8O / W7 / Dv8O / W7 / Dv8O / W7 / Dv8O / W7 / Dv8O / W7 / Dv8O / W7 / Dv8O / W7 / Dv8O / W7 / Dv8O / W7 / Dv8O / W7 / Dv8O / w78CADHDrBvDq8Orw6vDq8Orw6vDq8Orw6vDq8Orw6vDq8Orw6vDq8Orw6vDq8Orw6vDq8Orw6vDq8Orw6vDq8Orw6vDq8Orw6vDq8Orw6vDq8Orw6vDq8Orw6vDq8Orw6vDq8Orw6vDq8Orw6vDq8Orw6vDq8Orw6vDq8Orw6vDq8Orw6vDq8Ouw6wdw6gXw6fDp8Onw6fDp8Onw6fDp8Onw6fDp8Onw6fDp8Onw6fDp8Onw6fDp8Onw6fDp8Onw6fDp8Onw6fDp8Onw6fDp8Onw6fDp8Onw6fDp8Onw6fDp8Onw6fDp8Onw6fDp8Onw6fDp8Onw6fDp8Onw6fDp8Onw6fDp8Onw6fDp8Onw6fDp8Onw6fDp8Oqw6gZw6QTw6PDo8Ojw6PDo8Ojw6PDo8Ojw6PDo8Ojw6PDo8Ojw6PDo8Ojw6PDo8Ojw6PDo8Ojw6PDo8Ojw6PDo8Ojw6PDo8Ojw6PDo8Ojw6PDo8Ojw6PDo8Ojw6PDo8Ojw6PDo8Ojw6PDo8Ojw6PDo8Ojw6PDo8Ojw6PDo8Ojw6PDo8Ojw6PDo8Ojw6PDo8Ojw6PDo8Ojw6bDpBXDoA / Dn8Ofw5 / Dn8Ofw5 / Dn8Ofw5 / Dn8Ofw5 / Dn8Ofw5 / Dn8Ofw5 / Dn8Ofw5 / Dn8Ofw5 / Dn8Ofw5 / Dn8Ofw5 / Dn8Ofw5 / Dn8Ofw5 / Dn8Ofw5 / Dn8Ofw5 / Dn8Ofw5 / Dn8Ofw5 / Dn8Ofw5 / Dn8Ofw5 / Dn8Ofw5 / Dn8Ofw5 / Dn8Ofw5 / Dn8Ofw5 / Dn8Ofw5 / Dn8Ofw5 / Dn8Ofw5 /w4PDg8ODw4PDg8ODw4PDg8ODw4PDg8ODw4PDg8ODw4PDg8ODw4PDg8ODw4PDg8ODw4PDg8ODw4PDg8ODw4PDg8ODw4PDg8ODw4PDg8ODw4PDg8ODw4PDg8ODw4PDg8ODw4PDg8ODw4PDg8ODw4PDg8ODw4PDg8ODw4PDg8ODw4PDg8ODw4PDg8ODw4PDg8ODw4PDg8ODw4PDg8ODw4PDg8ODw4PDg8ODw4PDg8ODw4PDg8ODw4PDg8ODw4bDhMO1w4DDr8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8K / WR / Cv8OCw4DDscKsw5vCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvC/ CocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqLCoMORwozCu8KNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKOwozCvcKIwrfCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJworCiMK5woTCs8KFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXC==

Работы в смены 0, 4, 8, 12, 32, 36, 40, 44, 64, 68, 72, 76, 96, 100, 104, 108, 128, 132, 136, 140, 160, 164, 168, 172 192, 196, 200, 204, 224, 228, 232 и 236.

Для каждого значения от 0 до 255 есть ровно одно из тех сдвигов, которое отправляет этого персонажа в действительную инструкцию по бреду.

Программа опирается на 8-битные ячейки с переносом на переполнения. Это может быть, вероятно, довольно немного, поскольку сдвиг состоит только из повторения +или -(в зависимости от того, что короче).

Код Python, используемый для генерации этого:

l = [0, 4, 8, 12, 32, 36, 40, 44, 64, 68, 72, 76, 96, 100, 104, 108, 128, 132, 136, 140, 160, 164, 168, 172, 192, 196, 200, 204, 224, 228, 232, 236]
shift = lambda s,n:"".join(chr((ord(i)+n)%256) for i in s)
code = ""
for i in l:
    code += shift(",[{}.,]".format(i*"+" if i<=128 else (256-i)*"-"),-i)

Можете ли вы показать некоторые из действующего рабочего кода, который был закодирован и защищен от сдвига? (то есть +[>,.<]?)
Стэн Струм

@StanStrum Это просто сдвинутые версии ,[+.,], где +количество +с или -с
Джо Кинг

20

lHaskell, оценка 255 (27,026 байт)

Программа работает, но помещение ее в буфер обмена, похоже, разрушает ее, поэтому вот код, который выводит мою программу.

верификация

Итак, если копирование чего-либо в буфер обмена нарушает его, как я могу убедиться, что оно работает?

Вы можете использовать это здесь . Вы можете настроить Nи строку (в настоящее время Big ol' egg), чтобы увидеть, что она работает самостоятельно.

Это будет проверять все N на одном входе подряд, но имеет тенденцию к превышению времени ожидания.

объяснение

Это злоупотребляет грамотной нотацией комментариев Хаскелла. В грамотном Haskell любая строка, которая не начинается с >комментария. Таким образом, чтобы наш код работал, мы делаем 255 копий программы, каждая из которых смещается, nа затем мы смещаем каждую отдельную копию на -n.



7

05AB1E , оценка: 3 (24 байта)

¶Ä0(ä.g){n·Å0)åH*oHÆ0*æI

Попробуйте онлайн!

объяснение

¶Ä0(ä.g){n·Å0)åH*oHÆ0*æ  # Doesn't matter
                       I # Push the original input to the stack, implicit display

Сдвинут один раз:

·Å1)å/h*|o¸Æ1*æI+pIÇ1+çJ

Попробуйте онлайн!

объяснение

·Å1)å/h*|o¸Æ1*æI+p       # Doesn't matter    
                  IÇ     # Push the ASCII values of the input 
                    1+   # Increment by 1
                      çJ # Push the chars of the ASCII values, join, implicit display

Перенесено дважды:

¸Æ2*æ0i+}p¹Ç2+çJ,qJÈ2,èK

Попробуйте онлайн!

объяснение

Æ2*æ0i+}p         # Doesn't matter    
         ¹Ç       # Push the ASCII values of the input 
           2+     # Increment by 2
             çJ   # Push the chars of the ASCII values, join
               ,q # Print and terminate

Сдвоенный трижды:

¹Ç3+ç1j,~qºÈ3,èK-rKÉ3-éL

Попробуйте онлайн!

объяснение

¹Ç        # Push the ASCII values of the input 
  3+      # Increment by 3
    ç1j   # Push the chars of the ASCII values, join
       ,q # Print and terminate

6

Javascript, оценка: 1 4 ( 94 346 байт)

Довольно просто, с различными разделами, закомментированными при повороте, сложным было найти пригодные имена переменных и разделы комментариев, которые не нарушают синтаксис Javascript.

неповёрнутых:

hc/*% *%nnS/0S eb^[fRR _SbS/0Efd[`Y Xda_5ZSd5aVWS UZSd5aVW3f"#&$'( \a[`RR!! %34hc/*$ifb_jVV$cWfW34Ijh_d]$\hec9^Wh9eZ[W$Y^Wh9eZ[7j&!'&(+,$`e_dVV%%%*89hc/)nkgdo[[)h\k#\89Nomdib)amjh>c\m>j_`###\)^c\m>j_`<o#+$&0$ -01$$$)ejdi[[***/=>/*ch*/hc//chhcchvw*/g¬©¥¢­g¦©avw­«¢§ g«¨¦|¡«|¨aaag¡«|¨z­aibdjrrb^knobbbg£¨¢§

Повернуто на 5:

mh4/*%$/*ssX45X%jgc`kWW%dXgX45Jki`e^%]ifd:_Xi:f[\X%Z_Xi:f[\8k' "(+ ),-   %af`eWW &&%*89mh4/)nkgdo[[)h\k#\89Nomdib)amjh>c\m>j_`###\)^c\m>j_`<o#+$&,+$ -01$$$)ejdi[[***/=>mh4.split``.map(a=>String.fromCharCode(((a.charCodeAt(0)+5)%256))).join``///4BC4/hm/4mh44hmmhhm{|/4l±®ª§²l«®f{|²°§¬¥l¤°­«¦°­¢£fffl¡¦°­¢£²fngiowwgcpstgggl¨­§¬

Повернуто на 10:

rm94/*)4/xx$]9:]*olhep\\*i]l$]9:Opnejc*bnki?d]n?k`a$$$]*_d]n?k`a=p$,%'-0%!.12%%%*fkej\\%++*/=>rm94.split``.map(a=>String.fromCharCode(((a.charCodeAt(0)+10)%256))).join``///4BCrm93xuqnyee3rfu-fBCXywnsl3kwtrHmfwHtij---f3hmfwHtijFy-5.0:.*7:;...3otnsee4449GH94mr49rm99mrrmmr49q¶³¯¬·££q°¤³k¤·µ¬±ªq©µ²°«¤µ²§¨kkk¤q¦«¤µ²§¨·kslnt||lhuxylllq­²¬±££

Повернуто на 14: здесь наконец-то стало интересно, что нужно злоупотреблять системой типов Javascript.

vq=83.-83||(a=>a.split``.map(a=>String.fromCharCode(((a.charCodeAt(0)+14)%256))).join``)//.3ABvq=82wtpmxdd2qet,eABWxvmrk2jvsqGlevGshi,,,e2glevGshiEx,4-/54-)69:---2nsmrdd3338FGvq=7|yur}ii7vjy1jFG\}{rwp7o{xvLqj{Lxmn111j7lqj{LxmnJ}1924>2.;>?2227sxrwii888=KL=8qv8=vq==qvvqqv8=uº·³°»§§u´¨·o¨»¹°µ®u­¹¶´¯¨¹¶«¬ooo¨uª¯¨¹¶«¬»owprxply|}pppu±¶°µ§§

Повернуто на 199:

/*öñìçæñì55áö÷ç,)%"-ç&)áö÷-+"' ç+(&ü!+ü(áááç!+ü(ú-áéâäêíâÞëîïâââç#("'âèèçìúû/*öñë0-)&1ë*-åúû1/&+$ë#/,*%/,!"åååë %/,!"þ1åíæèîíæâïòóæææë',&+ìììñÿ/*öð52.+6""ð/#2ê#ÿ64+0)ð(41/*#41&'êêê#ð%*#41&'6êòëí÷ëçô÷øëëëð,1+0""ñññööñ*/ñö/*öö*//**/=>ñö.split``.map(a=>String.fromCharCode(((a.charCodeAt(0)+199)%256))).join``

Чтобы найти решения, я построил небольшой инструмент чтобы показать разные фрагменты при повороте на переменную величину, затем я нашел определенные шаблоны, которые я мог бы использовать в качестве полезных строительных блоков.

Основная суть в том, что a/**/=>aэто все еще допустимое определение функции, которое позволяет встроить функцию с обратным поворотом в разделе комментариев. Оттуда, это может быть повторено несколько раз, если все сделано правильно.

Поскольку большинство разделов комментариев являются вложенными, возможно, можно найти другой результат, но заставить его работать с каждым добавленным ответом становится все труднее из-за коллизий и управляющих символов.


Замена всех значений на charCodeAt(0)with charCodeAt``сбрасывает 4 байта всего решения, но это слишком много работы с нуля.


Я попробовал тот же подход с другой стартовой настройкой, но он также был ограничен 4 баллами, кажется вероятным, что этот подход не дает более высокий балл.
Nit

Можете ли вы хотя бы использовать charCodeAt()для сохранения 2 байта?
Нил

5

PHP с -d output_buffering=on -d short_open_tag=on, оценка: 255 (25 731 байт)

<?die($argv[1]);?>
=@pc`dmfbo)*<ejf)qsfh`sfqmbdf`dbmmcbdl)#0/0#-gvodujpo)%n*|sfuvso!dis)pSe)%n\1^*.2*<~-%bshw\2^**<@?>Aqdaengcp*+=fkg*rtgiatgrncegaecnndcem*$101$.hwpevkqp*&o+}tgvwtp"ejt*qTf*&o]2_+/4+=.&ctix]3_++=A@?Brebfohdq+,>glh+suhjbuhsodfhbfdooedfn+%212%/ixqfwlrq+'p,~uhwxuq#fku+rUg+'p^3`,06,>?/'dujy^4`,,>BA
@Csfcgpier,-?hmi,tvikcvitpegicgeppfego,&323&0jyrgxmsr,(q-vixyvr$glv,sVh,(q_4a-18-??0(evkz_5a--?CBADtgdhqjfs-.@inj-uwjldwjuqfhjdhfqqgfhp-'434'1kzshynts-)r.?wjyzws%hmw-tWi-)r`5b.2:.@?1)fwl{`6b..@DCBEuheirkgt./Ajok.vxkmexkvrgikeigrrhgiq.(545(2l{tizout.*s/?xkz{xt&inx.uXj.*sa6c/3</A?2*gxm|a7c//AEDCFvifjslhu/0Bkpl/wylnfylwshjlfjhssihjr/)656)3m|uj{pvu/+t0?yl{|yu'joy/vYk/+tb7d04>0B?3+hyn}b8d00BFEDGwjgktmiv01Clqm0xzmogzmxtikmgkittjiks0*767*4n}vk|qwv0,u1?zm|}zv(kpz0wZl0,uc8e15@1C?4,izo~c9e11CGFEHxkhlunjw12Dmrn1y{nph{nyujlnhljuukjlt1+878+5o~wl}rxw1-v2?{n}~{w)lq{1x[m1-vd9f26B2D?5-j{pd:f22DHGFIylimvokx23Enso2z|oqi|ozvkmoimkvvlkmu2,989,6pxm~syx2.w3?|o~|x*mr|2y\n2.we:g37;:3E?6.k|q?e;g33EIHGJzmjnwply34Fotp3{}prj}p{wlnpjnlwwmlnv3-:9:-7q?yntzy3/x4?}p?}y+ns}3z]o3/xf;h48<<4F?7/l}r?f<h44FJIHK{nkoxqmz45Gpuq4|~qsk~q|xmoqkomxxnmow4.;:;.8r?zo?u{z40y5?~q??~z,ot~4{^p40yg<i59=>5G?80m~s?g=i55GKJIL|olpyrn{56Hqvr5}rtlr}ynprlpnyyonpx5/<;</9s?{p?v|{51z6?r??{-pu5|_q51zh=j6:>@6H?91nt?h>j66HLKJM}pmqzso|67Irws6~?sum?s~zoqsmqozzpoqy60=<=0:t?|q?w}|62{7??s???|.qv?6}`r62{i>k7;?A;?7I?:2o?u?i?k77IMLKN~qnr{tp}78Jsxt7?tvn?t{prtnrp{{qprz71>=>1;u?}r?x~}73|8??t???}/rw?7~as73|j?l8<@D8J?;3p?v?j@l88JNMLOros|uq~89Ktyu8??uwo?u?|qsuosq||rqs{82?>?2<v?~s?y~84}9??u???~0sx?8bt84}k@m9=AF9K?<4q?w?kAm99KONMP?spt}vr9:Luzv9??vxp?v?}rtvptr}}srt|93@?@3=w?t?z?95~:??v???1ty?9?cu95~lAn:>BH:L?=5r?x?lBn::LPO
...

Подобно решению Haskell, копирование и вставка этих разрывов, поэтому я сгенерировал это, используя этот скрипт Perl .

Проверка для сдвинутых 1, 16, 32 и 255 раз.

объяснение

Использование РНР <?разделителем сделал это довольно легко, но я должен был избегать любых строк , которые могли бы в конечном итоге , как в <?других местах в коде, это в основном означает 03, 14, 25, 36, 47, 58и 69. Обойти это было довольно легко, используя арифметику. Также вполне возможно уменьшить количество байтов в исходной программе.


4

Crane-Flak , счет 3 (252 байта)

%&'()%&%X'Z&xx\()'()z%xz|%&'()%&'()%&'()9;=&'()9;=%XZ\&'z|%&'(9;=(9;=%&'XZ\(|xz|9;=%&'%&(%X'Z&\('()xxz%xz|9;=&'()9;=%XZ\&'z|9;=(9;=%&'XZ\(|9;=)))))))%&Y[]'()yy{}%&y{}%&'()%&'():<>'():<>%&Y[]'(){}y{}:<>%&Y[]'()yy{}::<><>:<>%&y{}:<>'():<>%&Y[]'(){}::<><>

Попробуйте онлайн!

(Не совсем работает в Brain-Hack, потому что только 256 модов Crane-Flak на 256)

Смещено на 1

&'()*&'&Y(['yy])*()*{&y{}&'()*&'()*&'()*:<>'()*:<>&Y[]'({}&'():<>):<>&'(Y[])}y{}:<>&'(&')&Y(['])()*yy{&y{}:<>'()*:<>&Y[]'({}:<>):<>&'(Y[])}:<>*******&'Z\^()*zz|~&'z|~&'()*&'()*;=?()*;=?&'Z\^()*|~z|~;=?&'Z\^()*zz|~;;=?=?;=?&'z|~;=?()*;=?&'Z\^()*|~;;=?=?

Попробуйте онлайн!

Смещено на 2

'()*+'('Z)\(zz^*+)*+|'z|~'()*+'()*+'()*+;=?()*+;=?'Z\^()|~'()*;=?*;=?'()Z\^*~z|~;=?'()'(*'Z)\(^*)*+zz|'z|~;=?()*+;=?'Z\^()|~;=?*;=?'()Z\^*~;=?+++++++'([]_)*+{{}'({}'()*+'()*+<>@)*+<>@'([]_)*+}{}<>@'([]_)*+{{}<<>@>@<>@'({}<>@)*+<>@'([]_)*+}<<>@>@

Попробуйте онлайн!

Смещено на 3

()*+,()([*]){{_+,*+,}({}()*+,()*+,()*+,<>@)*+,<>@([]_)*}()*+<>@+<>@()*[]_+{}<>@()*()+([*])_+*+,{{}({}<>@)*+,<>@([]_)*}<>@+<>@()*[]_+<>@,,,,,,,()\^`*+,||~€()|~€()*+,()*+,=?A*+,=?A()\^`*+,~€|~€=?A()\^`*+,||~€==?A?A=?A()|~€=?A*+,=?A()\^`*+,~€==?A?A

Попробуйте онлайн!

объяснение

Основной код на работе здесь

([]){{}({}n<>)<>([])}{}<>([]){{}({}<>)<>([])}<>

где nпроизвольное число. Это перемещает все к добавлению nк каждому элементу в стек (по модулю 256 подразумевается при выводе), а затем перемещает их обратно.

Однако для первой программы (т.е. смещенной на 0) нам не нужно ничего делать, потому что смещение на ноль - это программа cat. Итак, начнем с этого кода:

([]){{}({}()<>)<>([])}{}<>([]){{}({}<>)<>([])}<>

и сдвинуть его вниз на 1

'Z\(zz|'z|m;=(;='Z\(|z|;='Z\(zz|'z|;=(;='Z\(|;=

Это не сбалансировано, поэтому мы должны это исправить. Есть несколько способов, которыми мы могли бы сделать это с помощью моего метода выбора (по причинам, которые станут очевидными):

'Z\(zz|'z|m;=(;='Z\(|z|;='Z\(zz|'z|;=(;='Z\(|;=)))))){}{}{}{}{}

Сдвинув это на 2 мы получим

)\^*||~)|~o=?*=?)\^*~|~=?)\^*||~)|~=?*=?)\^*~=?++++++}}}}}

Поскольку с ()ним легче иметь дело, чем {}мы будем использовать }s для завершения желаемой программы. Это означает, что их )можно сбалансировать довольно очевидными средствами. С некоторой тряской мы можем превратить это в:

()\^*||~()|~()*=?*=?()\^*~|~=?()\^*||~()|~=?*=?()\^*~=?+++++++([]_)*+{{}({}()*+()*+<>@)*+<>@([]_)*+}{}<>@([]_)*+{{}<<>@>@<>@({}<>@)*+<>@([]_)*+}<<>@>@

Сдвигая это назад мы получаем

&'Z\(zz|&'z|&'(;=(;=&'Z\(|z|;=&'Z\(zz|&'z|;=(;=&'Z\(|;=)))))))&Y[]'()yy{}&y{}&'()&'():<>'():<>&Y[]'(){}y{}:<>&Y[]'()yy{}::<><>:<>&y{}:<>'():<>&Y[]'(){}::<><>

Шаг до 3 настолько сложен, что я его больше не понимаю. Я использовал ту же технику и просто возился с ней, пока наконец не заставил всех 4 работать одновременно. Техника почти такая же, просто намного больше возни.


3

Питон 3, Оценка 1, 76 байт

Сдвиг 0: без изменений

""!="";print(input());exit()#   oqhms'&&-inhm'bgq'nqc'i(*0(enq'i(hm'hmots'((((

Сдвиг 1:

##">##<qsjou)joqvu)**<fyju)*$
print(''.join(chr(ord(j)+1)for(j)in(input())))

Начал работу в смену 2, но "" становится $$, и вы не можете начать с этого строку.

Когда вы сохраните его в файл, убедитесь, что он не заканчивается переводом строки. (vim -b file.py + set noeol)


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.