การเขียนโปรแกรมเชิงเลื่อน


41

สตริงสามารถเลื่อนได้โดยตัวเลขnโดยรับค่าไบต์cของอักขระแต่ละตัวในสตริงการคำนวณ(c + n) mod 256และการแปลงผลลัพธ์กลับไปเป็นอักขระ

ตัวอย่างเช่นการขยับ"ABC123"ขึ้น 1 ผลในการ"BCD234"ขยับขึ้น 10 ใน"KLM;<="และขยับจาก 255 "@AB012"ใน

งาน

เลือกเป็นตัวเลขมากnกับการ0 < n < 256เป็นคุณกล้าและเขียนโปรแกรมหรือฟังก์ชั่นที่ใช้เวลาสตริงเป็น input และ

  • ส่งคืนสตริงที่ไม่เปลี่ยนแปลงเมื่อซอร์สโค้ดไม่เปลี่ยนแปลง แต่
  • กลับสตริงขยับโดยเมื่อซอร์สโค้ดขยับnn

กฎระเบียบ

  • คะแนนของการส่งของคุณคือจำนวนของการสนับสนุนnด้วยคะแนนที่สูงขึ้นจะดีกว่า คะแนนสูงสุดคือ 255
  • การส่งของคุณจะต้องสนับสนุนการเปลี่ยนแปลงอย่างน้อยหนึ่งครั้งดังนั้นคะแนนขั้นต่ำคือ 1
  • ในกรณีที่เสมอโปรแกรมที่สั้นกว่าจะชนะ
  • โปรแกรมที่ถูกเลื่อนทั้งหมดจะต้องเป็นภาษาเดียวกัน



เป็นที่ยอมรับหรือไม่ที่จะมีเอาต์พุตก่อนเอาต์พุตที่ต้องการซึ่งจะถูกล้างผ่าน ANSI escape sequences หรือซ่อนผ่าน\r?
Dom Hastings

4
@DomHastings ตั้งแต่ 0x0D และ 0x1B อาจเป็นส่วนหนึ่งของเอาต์พุตสตริงจริงฉันไม่คิดอย่างนั้น
Martin Ender

คำตอบ:


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 มีหนึ่งในการเปลี่ยนแปลงที่ส่งอักขระนั้นไปยังคำสั่ง brainfuck ที่ถูกต้อง

โปรแกรมใช้เซลล์ 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)

คุณสามารถแสดงรหัสการทำงานจริงบางส่วนที่เข้ารหัสและป้องกันการเปลี่ยนแปลงได้หรือไม่ (เช่น+[>,.<]?)
Stan Strum

@StanStrum มันเป็นเพียงแค่การเปลี่ยนเวอร์ชั่นของ,[+.,]ซึ่ง+เป็นจำนวนเงิน+หรือ-s
Jo King

20

lHaskell, คะแนน 255 (27,026 ไบต์)

โปรแกรมทำงานได้ แต่วางไว้ในคลิปบอร์ดของฉันดูเหมือนว่าจะทำลายมันนี่คือรหัสที่ส่งออกโปรแกรมของฉัน

การตรวจสอบ

ดังนั้นหากการคัดลอกสิ่งต่าง ๆ ไปยังคลิปบอร์ดแตกฉันจะยืนยันได้อย่างไรว่ามันใช้งานได้?

คุณสามารถใช้ที่นี่ คุณสามารถปรับNและสตริง (ปัจจุบันBig ol' egg) เพื่อดูว่ามันทำงานด้วยตัวเอง

สิ่งนี้จะทดสอบ N ทั้งหมดในอินพุตเดี่ยวติดต่อกัน แต่มีแนวโน้มที่จะหมดเวลา

คำอธิบาย

การใช้ในทางที่ผิดนี้จะแสดงความคิดเห็นของ Haskell ใน 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

Unrotated:

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)ด้วยcharCodeAt``จะโกน 4 ไบต์ออกจากโซลูชันทั้งหมด แต่ทำงานได้มากเกินไปตั้งแต่เริ่มต้น


ฉันลองวิธีเดียวกันโดยใช้การตั้งค่าเริ่มต้นที่แตกต่างกัน แต่มันถูก จำกัด ไว้ที่ 4 คะแนนดูเหมือนว่าวิธีนี้จะไม่ให้คะแนนที่สูงกว่า
Nit

อย่างน้อยคุณสามารถใช้charCodeAt()บันทึก 2 ไบต์ได้หรือไม่?
Neil

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 ครั้ง

คำอธิบาย

การใช้ของ PHP <?คั่นทำนี้ค่อนข้างง่าย แต่ผมต้องหลีกเลี่ยงสตริงใด ๆ ที่อาจจบลงเช่น<?ที่อื่น ๆ ในรหัสนี้โดยทั่วไปหมายถึง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 เพราะมีเพียง Crane-Flak mods 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เป็นตัวเลขใดก็ได้ สิ่งนี้จะย้ายทุกอย่างไปที่ offstack ที่เพิ่มnเข้าไปในแต่ละรายการ (modulo 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

Python 3, คะแนน 1, 76 ไบต์

Shift 0: ไม่มีการเปลี่ยนแปลง

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

Shift 1:

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

เริ่มทำงานกับ shift 2 แต่ "" กลายเป็น $$ และคุณไม่สามารถเริ่มบรรทัดได้

เมื่อคุณบันทึกลงในไฟล์ตรวจสอบให้แน่ใจว่าไม่ได้ขึ้นบรรทัดใหม่ (vim -b file.py + set noeol)


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.