Programação Orientada à Mudança


41

Uma string pode ser alterada por um número n, obtendo o valor cde byte de cada caractere na string, calculando (c + n) mod 256e convertendo o resultado em um caractere.

Como exemplo, alternar "ABC123"1 resulta em "BCD234", alternar 10 "KLM;<="polegadas e 255 polegadas "@AB012".

A tarefa

Escolha como muitos números ncom 0 < n < 256que você se atreve e escrever um programa ou função que recebe uma string como entrada e

  • retorna a string inalterada quando o código fonte não é alterado, mas
  • retorna a string deslocada nquando o código-fonte é deslocado n.

Regras

  • A pontuação do seu envio é o número de suportados n, com uma pontuação maior sendo melhor. A pontuação máxima é, portanto, 255.
  • Seu envio deve suportar pelo menos um turno; portanto, a pontuação mínima é 1.
  • Em caso de empate, o programa mais curto vence.
  • Todos os programas alterados precisam estar no mesmo idioma.



É aceitável ter saída antes da saída desejada que é limpa por meio de seqüências de escape ANSI ou oculta por \r?
Dom Hastings

4
@DomHastings Como 0x0D e 0x1B são potencialmente parte da saída real da string, eu não pensaria assim.
Martin Ender

Respostas:


24

Brainfuck, pontuação: 31 (2208 bytes)

Programa codificado em 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/ CocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqLCoMORwozCu8KNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKOwozCvcKIwrfCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJworCiMK5woTCs8KFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXC==

Trabalha para os turnos 0, 4, 8, 12, 32, 36, 40, 44, 64, 68, 72, 76, 96, 100, 104, 108, 128, 132, 136, 140, 140, 160, 164, 168, 172 192, 196, 200, 204, 224, 228, 232 e 236.

Para todo valor entre 0 e 255, existe exatamente uma dessas mudanças que envia esse caractere para uma instrução válida de troca de cérebro.

O programa depende de células de 8 bits com quebra automática de transbordamentos. Provavelmente isso poderia ser um pouco jogado, já que o turno consiste apenas em um repetido +ou -(o que for menor).

Código Python usado para gerar isso:

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)

Você pode mostrar um pouco do código de trabalho real que foi codificado e à prova de mudança? (ie +[>,.<]?)
Stan Strum

@StanStrum É só mudou versões de ,[+.,]onde +é a quantidade de +s ou -s
Jo rei

20

lHaskell, pontuação 255 (27.026 bytes)

O programa funciona, mas colocá-lo na minha área de transferência parece destruí-lo, então aqui está o código que gera o meu programa.

Verificação

Portanto, se copiar coisas para uma área de transferência o interrompe, como verifico se funciona?

Você pode usar isso aqui . Você pode ajustar Ne a sequência (atualmente Big ol' egg) para ver se ela funciona.

Isso testará todo N em uma única entrada em sucessão, mas tende a atingir o tempo limite.

Explicação

Isso abusa da notação alfabética de comentários de Haskell. No alfabetizado Haskell, qualquer linha que não comece >é um comentário. Portanto, para fazer nosso código funcionar, fazemos 255 cópias do programa, cada uma alternando ne, em seguida, cada cópia individual -n.



7

05AB1E , Pontuação: 3 (24 bytes)

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

Experimente online!

Explicação

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

Mudou uma vez:

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

Experimente online!

Explicação

·Å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

Deslocado duas vezes:

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

Experimente online!

Explicação

Æ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

Deslocado três vezes:

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

Experimente online!

Explicação

¹Ç        # 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, score: 1 4 ( 94 346 bytes)

Bem simples, com diferentes seções comentadas quando rotacionadas, o difícil foi encontrar nomes de variáveis ​​utilizáveis ​​e seções de comentários que não quebram a sintaxe Javascript.

Não rotacionado:

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£¨¢§

Rodado por 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¨­§¬

Rodado por 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­²¬±££

Rodado por 14: as coisas finalmente ficaram interessantes aqui, conseguiram abusar do sistema de tipos 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±¶°µ§§

Rodado por 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``

Para encontrar as soluções, criei uma pequena ferramenta para me mostrar diferentes trechos quando girados por uma quantidade variável, e então encontrei certos padrões que eu poderia usar como blocos de construção úteis.

O principal é que a/**/=>aainda é uma definição de função válida, que permite incorporar uma função de rotação reversa na seção de comentários. A partir daí, pode ser repetido algumas vezes, se feito corretamente.

Como a maioria das seções de comentários está aninhada, pode ser possível encontrar outro resultado, mas torná-lo cada vez mais difícil com cada resposta adicionada devido a colisões e caracteres de controle.


Substituir todos os usos de charCodeAt(0)por charCodeAt``eliminaria 4 bytes de toda a solução, mas é muito trabalho para fazer do zero.


Tentei a mesma abordagem com uma configuração inicial diferente, mas também foi limitada em 4 pontos; parece provável que essa abordagem não produza uma pontuação mais alta.
Nit

Você pode pelo menos usar charCodeAt()para salvar 2 bytes?
Neil

5

PHP com -d output_buffering=on -d short_open_tag=on, score: 255 (25.731 bytes)

<?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
...

Semelhante à solução Haskell, copiando e colando essas quebras, então eu gerei isso usando esse script Perl .

Verificação deslocada 1, 16, 32 e 255 vezes.

Explicação

Utilizando PHP <?delimitador fez esta bastante fácil, mas eu tinha que evitar quaisquer cordas que pode acabar como <?em outras partes do código, isto significa, basicamente 03, 14, 25, 36, 47, 58e 69. Contornar esses problemas era bastante fácil usando aritmética. Também é possível reduzir a contagem de bytes no programa original.


4

Crane-Flak , Pontuação 3 (252 bytes)

%&'()%&%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[]'(){}::<><>

Experimente online!

(Não funciona muito bem no Brain-Hack porque apenas os mods Crane-Flak são 256)

Deslocado por 1

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

Experimente online!

Deslocado por 2

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

Experimente online!

Deslocado por 3

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

Experimente online!

Explicação

O código principal em ação aqui é

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

onde né um número arbitrário. Isso move tudo para o offstack, acrescentando na cada item (o módulo 256 está implícito na saída) e depois move todos eles de volta.

No entanto, para o primeiro programa (ou seja, deslocado por 0), não precisamos fazer nada disso, porque mudar para zero é o programa gato. Então começamos com este código:

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

e desloque-o para baixo em 1

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

Isso está desequilibrado, então temos que corrigi-lo. Existem várias maneiras pelas quais podemos fazer isso usando meu método de escolha (por razões que se tornarão aparentes) é o seguinte:

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

Mudando isso em 2, obtemos

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

Como ()é mais fácil lidar do {}que usaremos os }s para concluir o programa que desejamos. Isso significa que o )pode ser equilibrado com meios bastante óbvios. Com algumas brincadeiras, podemos transformar isso em:

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

Mudando isso de volta, temos

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

O passo 3 é tão complexo que eu realmente não o entendo mais. Usei a mesma técnica e brinquei com ela até que finalmente consegui todas as quatro para trabalhar de uma só vez. A técnica é praticamente a mesma, há muito mais mexida.


3

Python 3, Pontuação 1, 76 bytes

Shift 0: nenhuma alteração

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

Mudança 1:

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

Iniciou o trabalho no turno 2, mas "" se torna $$ e você não pode iniciar uma linha com isso.

Ao salvá-lo em um arquivo, verifique se não termina com uma nova linha. (vim -b arquivo.py + definir noeol)


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.