Lập trình chuyển hướng


41

Một chuỗi có thể được thay đổi bởi một số nbằng cách lấy giá trị byte ccủa từng ký tự trong chuỗi, tính toán (c + n) mod 256và chuyển đổi kết quả trở lại thành một ký tự.

Ví dụ, thay đổi "ABC123"1 kết quả "BCD234", thay đổi 10 in "KLM;<="và thay đổi 255 in "@AB012".

Nhiệm vụ

Chọn như nhiều số nvới 0 < n < 256khi bạn dám và viết một chương trình hoặc chức năng mà phải mất một chuỗi như là đầu vào và

  • trả về chuỗi không thay đổi khi mã nguồn không thay đổi, nhưng
  • trả về chuỗi được dịch chuyển nkhi mã nguồn được dịch chuyển theo n.

Quy tắc

  • Điểm số của bài nộp của bạn là số lượng được hỗ trợ n, với điểm cao hơn là tốt hơn. Do đó, điểm tối đa là 255.
  • Bài nộp của bạn phải hỗ trợ ít nhất một ca, vì vậy điểm tối thiểu là 1.
  • Trong trường hợp hòa, chương trình ngắn hơn sẽ thắng.
  • Tất cả các chương trình thay đổi cần phải ở cùng một ngôn ngữ.



Có thể chấp nhận để có đầu ra trước khi đầu ra mong muốn bị xóa thông qua các chuỗi thoát ANSI hoặc bị ẩn thông qua \rkhông?
Dom Hastings

4
@DomHastings Vì 0x0D và 0x1B có khả năng là một phần của đầu ra chuỗi thực tế, tôi sẽ không nghĩ vậy.
Martin Ender

Câu trả lời:


24

Brainfuck, điểm: 31 (2208 byte)

Chương trình mã hóa 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 / Đn8Ofw5 /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 Cv8K / wr / Cv8K / wr / Cv8K / wr / Cv8K / wr / Cv8K / wr / Cv8K / wr / Cv8K / wr / Cv8K / wr / Cv8K / wr / Cv8K / wr / Cv8K / wr / Cv8OCw4DDscKsw5vCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvCq8KrwqvC/ CocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqHCocKhwqLCoMORwozCu8KNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKNwo3CjcKOwozCvcKIwrfCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJwonCicKJworCiMK5woTCs8KFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXChcKFwoXC==

Làm việc cho ca 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 và 236.

Đối với mỗi giá trị trong khoảng từ 0 đến 255, có chính xác một trong những ca làm việc gửi nhân vật đó đến một hướng dẫn Brainfuck hợp lệ.

Chương trình dựa trên các ô 8 bit với gói tràn. Điều này có thể có thể được đánh golf khá nhiều, vì sự thay đổi chỉ bao gồm một lặp đi lặp lại +hoặc -(cái nào ngắn hơn).

Mã Python được sử dụng để tạo này:

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)

Bạn có thể hiển thị một số mã làm việc thực tế đã được mã hóa và chống dịch chuyển không? (tức là +[>,.<]?)
Stan Strum

@StanStrum Đây chỉ là phiên bản thay đổi của ,[+.,], +số lượng +s hoặc -s
Jo King

20

lHaskell, Điểm 255 (27.026 byte)

Chương trình hoạt động nhưng đặt nó vào clipboard của tôi dường như phá hủy nó vì vậy đây là mã xuất ra chương trình của tôi.

xác minh

Vì vậy, nếu sao chép mọi thứ vào một bảng tạm, nó làm thế nào để tôi xác minh rằng nó hoạt động?

Bạn có thể sử dụng ở đây . Bạn có thể điều chỉnh Nvà chuỗi (hiện tại Big ol' egg) để thấy rằng nó hoạt động chính mình.

Điều này sẽ kiểm tra tất cả N trên một đầu vào liên tiếp nhưng có xu hướng hết thời gian.

Giải trình

Điều này lạm dụng ký hiệu nhận xét của Haskell. Trong biết chữ Haskell, bất kỳ dòng nào không bắt đầu bằng >một nhận xét. Vì vậy, để làm cho mã của chúng tôi hoạt động, chúng tôi tạo ra 255 bản sao của chương trình mỗi lần dịch chuyển nvà sau đó chúng tôi chuyển từng bản sao riêng lẻ theo -n.



7

05AB1E , Điểm: 3 (24 byte)

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

Hãy thử trực tuyến!

Giải trình

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

Đã thay đổi một lần:

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

Hãy thử trực tuyến!

Giải trình

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

Đã thay đổi hai lần:

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

Hãy thử trực tuyến!

Giải trình

Æ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

Thay đổi ba lần:

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

Hãy thử trực tuyến!

Giải trình

¹Ç        # 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, điểm: 1 4 ( 94 346 byte)

Khá đơn giản, có các phần khác nhau được nhận xét khi xoay, phần khó khăn là tìm các tên biến và phần bình luận có thể sử dụng mà không phá vỡ cú pháp Javascript.

Không bảo vệ:

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

Xoay theo 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¨­§¬

Xoay theo 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­²¬±££

Xoay vòng bởi 14: mọi thứ cuối cùng đã trở nên thú vị ở đây, đã lạm dụng hệ thống loại 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±¶°µ§§

Xoay theo 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``

Để tìm giải pháp, tôi đã xây dựng một công cụ nhỏ để hiển thị cho tôi các đoạn khác nhau khi được xoay bởi một lượng thay đổi, sau đó tôi tìm thấy một số mẫu nhất định mà tôi có thể sử dụng làm các khối xây dựng hữu ích.

Ý chính của nó a/**/=>avẫn là một định nghĩa hàm hợp lệ, cho phép bạn nhúng một hàm xoay ngược trong phần bình luận. Từ đó, nó có thể được lặp lại một vài lần, nếu được thực hiện đúng.

Vì hầu hết các phần bình luận được lồng nhau, có thể tìm thấy kết quả khác, nhưng làm cho nó hoạt động ngày càng khó khăn hơn với mỗi câu trả lời được thêm vào do va chạm và các ký tự điều khiển.


Thay thế tất cả các cách sử dụng charCodeAt(0)bằng charCodeAt``sẽ loại bỏ 4 byte toàn bộ giải pháp, nhưng quá nhiều việc phải làm từ đầu.


Tôi đã thử cách tiếp cận tương tự với một thiết lập bắt đầu khác, nhưng nó cũng được giới hạn ở 4 điểm, có vẻ như cách tiếp cận này không mang lại điểm cao hơn.
Nit

Bạn có thể sử dụng ít nhất charCodeAt()để lưu 2 byte không?
Neil

5

PHP với -d output_buffering=on -d short_open_tag=on, điểm: 255 (25.731 byte)

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

Tương tự như giải pháp Haskell, sao chép và dán phần ngắt này, vì vậy tôi đã tạo phần này bằng cách sử dụng tập lệnh Perl này .

Xác minh cho thay đổi 1, 16, 32 và 255 lần.

Giải trình

Sử dụng PHP <?delimiter làm được điều này khá dễ dàng, nhưng tôi đã phải tránh bất kỳ chuỗi mà có thể kết thúc như <?ở những nơi khác trong mã, điều này về cơ bản có nghĩa là 03, 14, 25, 36, 47, 5869. Làm việc xung quanh những người này khá dễ dàng bằng cách sử dụng số học. Cũng có thể giảm số byte trong chương trình gốc.


4

Cần cẩu-Flak , Điểm 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[]'(){}::<><>

Hãy thử trực tuyến!

(Không hoạt động trong Brain-Hack vì chỉ có mod Crane-Flak bằng 256)

Thay đổi bởi 1

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

Hãy thử trực tuyến!

Thay đổi bởi 2

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

Hãy thử trực tuyến!

Thay đổi bởi 3

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

Hãy thử trực tuyến!

Giải trình

Mã chính trong công việc ở đây là

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

trong đó nlà một số tùy ý. Thao tác này sẽ chuyển mọi thứ sang offstack thêm nvào từng mục (modulo 256 được ẩn theo đầu ra), và sau đó di chuyển tất cả chúng trở lại.

Tuy nhiên, đối với chương trình đầu tiên (tức là thay đổi bằng 0), chúng ta không cần thực hiện bất kỳ điều nào trong số này vì dịch chuyển bằng 0 là chương trình con mèo. Vì vậy, chúng tôi bắt đầu với mã này:

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

và thay đổi nó xuống 1

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

Điều này là không cân bằng vì vậy chúng tôi phải sửa nó. Có một số cách chúng ta có thể làm điều này bằng phương pháp lựa chọn của tôi (vì những lý do sẽ trở nên rõ ràng) như sau:

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

Thay đổi điều này lên 2, chúng tôi nhận được

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

()dễ đối phó hơn nên {}chúng tôi sẽ sử dụng }s để hoàn thành chương trình mà chúng tôi mong muốn. Điều đó có nghĩa là )có thể được cân bằng với các phương tiện khá rõ ràng. Với một số khó khăn, chúng ta có thể biến điều đó thành:

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

Dịch chuyển trở lại chúng tôi nhận được

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

Bước lên 3 rất phức tạp Tôi không thực sự hiểu nó nữa. Tôi đã sử dụng cùng một kỹ thuật và chỉ loay hoay với nó cho đến khi cuối cùng tôi có cả 4 người cùng làm việc. Các kỹ thuật là khá nhiều giống nhau chỉ là khó khăn hơn rất nhiều.


3

Python 3, Điểm 1, 76 byte

Ca 0: không thay đổi

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

Ca 1:

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

Bắt đầu làm việc trên ca 2, nhưng "" trở thành $$ và bạn không thể bắt đầu một dòng với điều đó.

Khi bạn lưu nó vào một tệp, hãy đảm bảo rằng nó không kết thúc bằng một dòng mới. (vim -b file.py + đặt noeol)


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.