Schaltorientierte Programmierung

41

Eine Zeichenfolge kann um eine Zahl verschoben werden, nindem der Bytewert cjedes Zeichens in der Zeichenfolge abgerufen, berechnet (c + n) mod 256und das Ergebnis zurück in ein Zeichen konvertiert wird.

Zum Beispiel führt eine Verschiebung "ABC123"um 1 zu einer "BCD234"Verschiebung um 10 "KLM;<="Zoll und eine Verschiebung um 255 Zoll "@AB012".

Die Aufgabe

Wählen Sie so viele Zahlen nmit , 0 < n < 256wie Sie es wagen , und schreiben Sie ein Programm oder eine Funktion , die einen String als Eingabe und

  • Gibt den String unverändert zurück, wenn der Quellcode unverändert ist, aber
  • Gibt den String zurück, um den verschoben wurde, nwenn der Quellcode um verschoben wurde n.

Regeln

  • Die Punktzahl Ihrer Einreichung ist die Anzahl der unterstützten n, wobei eine höhere Punktzahl besser ist. Die maximale Punktzahl beträgt somit 255.
  • Ihr Beitrag muss mindestens eine Schicht unterstützen, daher beträgt die Mindestpunktzahl 1.
  • Bei Gleichstand gewinnt das kürzere Programm.
  • Alle verschobenen Programme müssen in derselben Sprache sein.
Laikoni
quelle
Verbunden.
Martin Ender
Verbunden.
Jimmy23013
Ist es akzeptabel, dass die Ausgabe vor der gewünschten Ausgabe erfolgt, die über ANSI-Escape-Sequenzen gelöscht oder über ausgeblendet wird \r?
Dom Hastings
4
@DomHastings Da 0x0D und 0x1B möglicherweise Teil der eigentlichen String-Ausgabe sind, würde ich das nicht glauben.
Martin Ender

Antworten:

24

Brainfuck, Punktzahl: 31 (2208 Bytes)

Base64-codiertes Programm:

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/ CocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqLCoMORwozCu8KNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKOwozCvcKIwrfCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJworCiMK5woTCs8KFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXC==

Arbeitet für die Schichten 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 und 236.

Für jeden Wert zwischen 0 und 255 gibt es genau eine dieser Verschiebungen, die dieses Zeichen an einen gültigen Brainfuck-Befehl sendet.

Das Programm stützt sich auf 8-Bit-Zellen mit Zeilenumbruch bei Überläufen. Dies könnte wahrscheinlich ziemlich viel Golf sein, da die Schicht nur aus einem wiederholten +oder -(je nachdem, was kürzer ist) besteht.

Python-Code, mit dem dies generiert wird:

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
quelle
Können Sie einen Teil des tatsächlichen Arbeitscodes anzeigen, der verschlüsselt und verschiebungssicher ist? (dh +[>,.<]?)
Stan Strum
@StanStrum Es ist nur eine verschobene Version von ,[+.,], wo +ist die Menge von +s oder -s
Jo King
20

lHaskell, Score 255 (27.026 Bytes)

Das Programm funktioniert, aber wenn ich es in meine Zwischenablage lege, wird es anscheinend zerstört. Hier ist also Code, der mein Programm ausgibt.

Nachprüfung

Wie überprüfe ich, ob das Kopieren von Dingen in eine Zwischenablage funktioniert?

Sie können dies hier verwenden . Sie können Ndie Zeichenfolge anpassen und (derzeit Big ol' egg) überprüfen, ob sie selbst funktioniert.

Dadurch werden alle N nacheinander an einem einzelnen Eingang geprüft, es tritt jedoch eine Zeitüberschreitung auf.

Erläuterung

Dies missbraucht die Schreibweise von Haskell. In gebildeten Haskell ist jede Zeile, die nicht mit >einem Kommentar beginnt, ein Kommentar. Damit unser Code funktioniert, erstellen wir 255 Kopien des Programms, die sich jeweils verschieben, nund verschieben dann jede einzelne Kopie um -n.

Weizen-Assistent
quelle
7

05AB1E , Score: 3 (24 Byte)

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

Probieren Sie es online!

Erläuterung

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

Einmal verschoben:

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

Probieren Sie es online!

Erläuterung

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

Zweimal verschoben:

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

Probieren Sie es online!

Erläuterung

Æ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

Dreimal verschoben:

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

Probieren Sie es online!

Erläuterung

¹Ç        # 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
quelle
6

Javascript, Bewertung: 1 4 ( 94 346 Bytes)

Ziemlich unkompliziert, hat verschiedene Abschnitte beim Drehen auskommentiert. Das Schwierige dabei war, verwendbare Variablennamen und Kommentarabschnitte zu finden, die die JavaScript-Syntax nicht verletzen.

Nicht gedreht:

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

Gedreht um 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¨­§¬

Gedreht um 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­²¬±££

Gedreht um 14: hier wurde es endlich interessant, das Javascript-Typ-System zu missbrauchen.

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±¶°µ§§

Gedreht um 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``

Um die Lösungen zu finden, habe ich ein kleines Tool erstellt , mit dem ich verschiedene Ausschnitte anzeigen kann, wenn sie um einen variablen Betrag gedreht werden. Dann habe ich bestimmte Muster gefunden, die ich als nützliche Bausteine ​​verwenden kann.

Das Wichtigste dabei ist, dass a/**/=>aes sich immer noch um eine gültige Funktionsdefinition handelt, mit der Sie eine umgekehrt gedrehte Funktion in den Kommentarbereich einbetten können. Von da an kann es ein paar Mal wiederholt werden, wenn es richtig gemacht wird.

Da die meisten Kommentarbereiche verschachtelt sind, ist es möglicherweise möglich, ein anderes Ergebnis zu finden. Aufgrund von Kollisionen und Steuerzeichen wird es jedoch mit jeder hinzugefügten Antwort schwieriger, dies zu tun.


Das Ersetzen aller Verwendungen von charCodeAt(0)mit charCodeAt``würde 4 Byte der gesamten Lösung einsparen, aber es ist zu viel Arbeit, um es von Grund auf neu zu machen.

Nit
quelle
Ich habe den gleichen Ansatz mit einem anderen Start-Setup ausprobiert, aber er wurde auch auf 4 Punkte begrenzt. Es ist wahrscheinlich, dass dieser Ansatz keine höhere Punktzahl ergibt.
Nit
Können Sie mindestens charCodeAt()2 Bytes speichern?
Neil
5

PHP mit -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
...

Ähnlich wie bei der Haskell-Lösung wurde beim Kopieren und Einfügen dieser Unterbrechungen dies mithilfe dieses Perl-Skripts generiert .

Überprüfung für 1, 16, 32 und 255-mal verschoben.

Erläuterung

Mit PHP- <?Begrenzer das machte ziemlich einfach, aber ich hatte keine Saiten zu vermeiden, als könnte am Ende an <?anderer Stelle im Code, dies im Grunde Mittel 03, 14, 25, 36, 47, 58und 69. Mit Arithmetik war es ziemlich einfach, diese zu umgehen. Möglicherweise kann die Anzahl der Bytes auch im ursprünglichen Programm reduziert werden.

Dom Hastings
quelle
4

Crane-Flak , Score 3 (252 Byte)

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

Probieren Sie es online!

(Funktioniert nicht ganz in Brain-Hack, da nur Crane-Flak Mods von 256)

Um 1 verschoben

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

Probieren Sie es online!

Um 2 verschoben

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

Probieren Sie es online!

Verschoben um 3

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

Probieren Sie es online!

Erläuterung

Der Hauptcode bei der Arbeit ist hier

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

wo nist eine willkürliche Zahl. Dies verschiebt alles in den Offstack und fügt es nzu jedem Element hinzu (Modulo 256 ist bei der Ausgabe impliziert) und verschiebt sie dann alle zurück.

Für das erste Programm (dh um 0 verschoben) brauchen wir dies jedoch nicht zu tun, da das Verschieben um Null das cat-Programm ist. Also fangen wir mit diesem Code an:

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

und verschiebe es um 1 nach unten

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

Dies ist unausgeglichen, daher müssen wir es beheben. Es gibt eine Reihe von Möglichkeiten, wie wir dies mit meiner Auswahlmethode tun können (aus Gründen, die sich später herausstellen werden):

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

Wenn wir dies um 2 erhöhen, erhalten wir

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

Da ()es einfacher ist, damit umzugehen, als {}wir es verwenden werden }, um das von uns gewünschte Programm zu vervollständigen. Das bedeutet, dass das )mit ziemlich offensichtlichen Mitteln ausgeglichen werden kann. Mit einigem Geigen können wir daraus machen:

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

Wenn wir das wieder nach unten verschieben, erhalten wir

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

Der Schritt bis 3 ist so komplex, dass ich ihn nicht mehr richtig verstehe. Ich habe die gleiche Technik angewendet und nur herumgespielt, bis ich endlich alle 4 auf einmal zum Arbeiten gebracht habe. Die Technik ist so ziemlich die gleiche, es wird nur viel mehr herumgespielt.

Weizen-Assistent
quelle
3

Python 3, Score 1, 76 Bytes

Shift 0: keine Änderung

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

Schicht 1:

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

Begann die Arbeit an Schicht 2, aber "" wird zu $$ und Sie können damit keine Zeile beginnen.

Wenn Sie es in einer Datei speichern, stellen Sie sicher, dass es nicht mit einem Zeilenumbruch endet. (vim -b file.py + set noeol)

Rick Rongen
quelle