Programmation orientée vers le changement

41

Une chaîne peut être décalée d'un nombre nen récupérant la valeur en octets cde chaque caractère de la chaîne, en calculant (c + n) mod 256et en reconvertissant le résultat en caractère.

Par exemple, un décalage "ABC123"de 1 entraîne un "BCD234"décalage de 10 "KLM;<="po et un décalage de 255 po "@AB012".

La tâche

Choisissez autant de numéros navec 0 < n < 256que vous osez et d' écrire un programme ou une fonction qui prend une chaîne en entrée et

  • renvoie la chaîne inchangée lorsque le code source est inchangé, mais
  • retourne la chaîne décalée par nquand le code source est décalé par n.

Règles

  • Le score de votre soumission est le nombre de personnes soutenues n, un score plus élevé étant meilleur. Le score maximum est donc de 255.
  • Votre soumission doit prendre en charge au moins un quart de travail, le score minimal est donc 1.
  • En cas d'égalité, le programme le plus court l'emporte.
  • Tous les programmes décalés doivent être dans la même langue.
Laikoni
la source
En relation.
Martin Ender
En relation.
Jimmy23013
Est-il acceptable d'avoir une sortie avant la sortie souhaitée qui est effacée via des séquences d'échappement ANSI ou masquée via \r?
Dom Hastings
4
@DomHastings Étant donné que 0x0D et 0x1B font potentiellement partie de la sortie de chaîne réelle, je ne le pense pas.
Martin Ender

Réponses:

24

Brainfuck, score: 31 (2208 octets)

Programme encodé en 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/ CocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqLCoMORwozCu8KNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKOwozCvcKIwrfCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJworCiMK5woTCs8KFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXC==

Fonctionne pour les équipes 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 et 236.

Pour chaque valeur comprise entre 0 et 255, il existe exactement l'un de ces décalages qui envoie ce caractère à une instruction brainfuck valide.

Le programme repose sur des cellules 8 bits avec habillage sur les débordements. Cela pourrait probablement être un peu joué au golf, car le changement consiste simplement en une répétition +ou -(selon la valeur la plus courte).

Le code Python utilisé pour générer ceci:

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)
ManfP
la source
Pouvez-vous montrer une partie du code de travail réel qui a été codé et protégé contre le changement? (c'est-à +[>,.<]- dire ?)
Stan Strum
@StanStrum C'est juste des versions décalées de ,[+.,], où +est la quantité de +s ou de -s
Jo King
20

lHaskell, score 255 (27 026 octets)

Le programme fonctionne mais le mettre dans mon presse-papiers semble le détruire. Voici donc le code qui sort mon programme.

Vérification

Donc, si la copie d'éléments dans un presse-papiers est brisée, comment puis-je vérifier que cela fonctionne?

Vous pouvez l'utiliser ici . Vous pouvez ajuster Net la chaîne (actuellement Big ol' egg) pour voir que cela fonctionne vous-même.

Ceci testera tous les N sur une seule entrée successivement, mais a tendance à expirer.

Explication

Cela abuse de la notation commentée de Haskell. En alphabète alphabétisé Haskell, toute ligne qui ne commence pas par >est un commentaire. Donc, pour que notre code fonctionne, nous faisons 255 copies du programme à chaque passage n, puis nous déplaçons chaque copie individuellement -n.

Assistant de blé
la source
20

C, note: 1 (73 octets)

aZ0;/*0\:..*/f(s){puts(s);}//	e'bg`q)r(zenq':)r:**r(otsbg`q'')r*0($145(:|

Essayez-le en ligne!

Décalé de 1:

b[1<0+1];//+0g)t*|qvut)t*<~00
f(char*s){for(;*s;++s)putchar((*s+1)%256);}

Essayez-le en ligne!

Steadybox
la source
7

05AB1E , score: 3 (24 octets)

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

Essayez-le en ligne!

Explication

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

Décalé une fois:

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

Essayez-le en ligne!

Explication

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

Déplacé deux fois:

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

Essayez-le en ligne!

Explication

Æ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

Déplacé trois fois:

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

Essayez-le en ligne!

Explication

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

Javascript, score: 1 4 ( 94 346 octets)

En termes simples, différentes sections ont été commentées lors de la rotation, le difficile étant de trouver des noms de variables utilisables et des sections de commentaires qui ne cassent pas la syntaxe Javascript.

Sans rotation:

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

Tourné de 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¨­§¬

Tourné de 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­²¬±££

Rotation de 14: les choses sont finalement devenues intéressantes ici, il faut abuser du système de type 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±¶°µ§§

Rotation de 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``

Pour trouver les solutions, je construit un petit outil pour me montrer différents extraits lorsque la rotation est effectuée de manière variable. J'ai ensuite trouvé certains motifs que je pourrais utiliser comme blocs de construction utiles.

L'essentiel est que a/**/=>a s'agit toujours d'une définition de fonction valide, ce qui vous permet d'intégrer une fonction inversée avec rotation dans la section de commentaire. À partir de là, il peut être répété plusieurs fois, si cela est fait correctement.

Étant donné que la plupart des sections de commentaires sont imbriquées, il peut être possible de trouver un autre résultat, mais son travail devient de plus en plus difficile à chaque nouvelle réponse en raison de collisions et de caractères de contrôle.


Remplacer toutes les utilisations de charCodeAt(0)par charCodeAt``réduirait de 4 octets la totalité de la solution, mais il reste trop de travail à faire à partir de zéro.

Lente
la source
J'ai essayé la même approche avec une configuration de départ différente, mais celle-ci était également limitée à 4 points. Il semble donc probable que cette approche ne donne pas un score plus élevé.
Nit
Pouvez-vous au moins utiliser charCodeAt()pour économiser 2 octets?
Neil
5

PHP avec -d output_buffering=on -d short_open_tag=on, score: 255 (25 731 octets)

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

Semblable à la solution Haskell, copier et coller ces sauts, alors j’ai généré ceci en utilisant ce script Perl .

Vérification pour décalé 1, 16, 32 et 255 fois.

Explication

L' utilisation de PHP <?délimiteur fait ce assez facile, mais je devais éviter toutes les chaînes qui pourraient finir comme <?ailleurs dans le code, ce moyen essentiellement 03, 14, 25, 36, 47, 58et 69. Travailler autour de ceux-ci était assez facile en utilisant l'arithmétique. Il pourrait également être possible de réduire le nombre d'octets dans le programme d'origine.

Dom Hastings
la source
4

Crane-Flak , Score 3 (252 octets)

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

Essayez-le en ligne!

(Cela ne fonctionne pas vraiment dans Brain-Hack parce que seulement les mods Crane-Flak par 256)

Décalé de 1

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

Essayez-le en ligne!

Décalé de 2

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

Essayez-le en ligne!

Décalé de 3

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

Essayez-le en ligne!

Explication

Le code principal au travail ici est

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

nest un nombre arbitraire. Cela déplace tous les éléments hors pile en ajoutant nà chaque élément (le modulo 256 est implicite à la sortie), puis les déplace tous vers l'arrière.

Cependant, pour le premier programme (c'est-à-dire décalé de 0), nous n'avons pas besoin de faire cela, car le décalage est le programme cat. Nous commençons donc avec ce code:

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

et décaler par 1

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

Ceci est déséquilibré, nous devons donc le réparer. Il y a un certain nombre de façons de le faire par ma méthode de choix (pour des raisons qui deviendront évidentes):

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

En changeant cela de 2, nous obtenons

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

Comme il ()est plus facile de traiter que d’ {}utiliser le }s pour mener à bien le programme souhaité. Cela signifie que le )peut être équilibré avec des moyens assez évidents. Avec quelques manipulations, nous pouvons transformer cela en:

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

En reculant, nous obtenons

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

Le passage à 3 est si complexe que je ne le comprends plus vraiment. J'ai utilisé la même technique et je l'ai manipulée jusqu'à ce que je puisse enfin les faire fonctionner tous les 4 en même temps. La technique est à peu près la même, il y a juste beaucoup plus de violon.

Assistant de blé
la source
3

Python 3, Score 1, 76 octets

Décalage 0: pas de changement

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

Décalage 1:

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

Commencé à travailler au poste 2, mais "" devient $$ et vous ne pouvez pas commencer une ligne avec cela.

Lorsque vous enregistrez dans un fichier, assurez-vous qu'il ne se termine pas par une nouvelle ligne. (vim -b fichier.py + set noeol)

Rick Rongen
la source