Quine đảo chữ! (Chủ đề của kẻ cướp)


8

Đây là chủ đề của bọn cướp. Đối với chủ đề của cảnh sát, bấm vào đây .

Nhiệm vụ của cảnh sát

Đối với chủ đề của cảnh sát, bấm vào đây .

Nhiệm vụ của bọn cướp

  • Tìm một đệ trình không bị theo dõi trên chủ đề của cảnh sát. (Một bài nộp chỉ có thể bị bẻ khóa một lần.)
  • Xắp xếp lại mã để tìm một quine làm việc.
  • Gửi một câu trả lời trên chủ đề của tên cướp. Bao gồm ngôn ngữ, số byte, người dùng đã đăng mã được xáo trộn, liên kết đến câu trả lời đó và mã được xáo trộn.

Dưới đây là một ví dụ về đệ trình tên cướp:

Python, 29 byte, Oliver

_='_=%r;print _%%_';print _%_

Chấm điểm

Người dùng có nhiều vết nứt nhất sẽ là người chiến thắng trong phần này.


1
Có chuyện gì với liên kết vậy?!
Solomon Ucko

Câu trả lời:


6

Vim, 22 byte, Loojvo

qtiqtqx0l"tp^V^[^[qx0l"tp

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

Giải trình:

qt                  " Start recording in register 'q'
  i                 " Enter insert mode
   qtqx0l"tp        " Enter this string
            ^V^[    " Enter a literal 'esc' character
                ^[  " Exit insert mode
                  q " Stop recording

Tại thời điểm này, bộ đệm trông như thế này:

qtqx0l"tp^[

Và con trỏ ở trên cột cuối cùng (phím 'esc').

x                   " Delete the esc character
 0l                 " Move to the second character on this line
   "tp              " And paste register 't'

6

Dưới tải , 20 byte, ais523

(:a~*(*S)):a~*(*S)*S

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

Giải trình

Câu hỏi cơ bản trong Underload là thế này:

(:aSS):aSS

Đây là cách nó làm việc:

                                  Stack:               Output:
(:aSS)      # Push string.        (:aSS)
      :     # Duplicate.          (:aSS) (:aSS)
       a    # Wrap in (...).      (:aSS) ((:aSS))
        S   # Print.              (:aSS)               (:aSS)
         S  # Print.                                   (:aSS):aSS

Vấn đề đầu tiên là giảm số lượng Schúng tôi cần, bởi vì chúng tôi chỉ có 3 để sử dụng ở đây. Chúng ta có thể làm điều này bằng cách sử dụng hoán đổi ( ~) và ghép ( *):

(:a~*S):a~*S

Ở đây, thay vì in hai lần, chúng tôi đặt (...)phiên bản và phiên bản đơn giản của chuỗi và in chỉ một lần.

Câu đố lớn hơn là làm thế nào để in một số lẻ *S. Tôi thậm chí không chắc chắn làm thế nào tôi thực sự đi đến giải pháp cuối cùng, nhưng hóa ra chúng ta có thể làm điều này bằng cách đặt đuôi của đầu ra trong một chuỗi riêng biệt. Chuỗi đó tự được sao chép trong chuỗi đầu tiên, nhưng nội dung thì không, điều này cho chúng ta thêm các lần xuất hiện *Schúng ta cần. Đây là một sự cố của giải pháp cuối cùng:

                        Stack:                       Output:
(:a~*(*S))              (:a~*(*S))              
          :             (:a~*(*S)) (:a~*(*S))              
           a            (:a~*(*S)) ((:a~*(*S)))
            ~           ((:a~*(*S))) (:a~*(*S))
             *          ((:a~*(*S)):a~*(*S))
              (*S)      ((:a~*(*S)):a~*(*S)) (*S)
                  *     ((:a~*(*S)):a~*(*S)*S)
                   S                                 (:a~*(*S)):a~*(*S)*S

6

MATL, 20 byte, Luis Mendo

'wo&GzL0fk'tl#DwI-ch

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

Tôi chưa bao giờ sử dụng MATL trước đây, vì vậy sự hiểu biết của tôi có thể hơi bị tắt, nhưng về cơ bản, đây là cách nó hoạt động:

'wo&GzL0fk' This is a string representation of the code, offset by 3
t           Creates a duplicate copy of the string
l#D         Adds quotes to the second copy
w           Swap the unquoted version to the top of the stack
I-          Offset the characters in that version by 3
c           Convert back to characters
h           Join with the quoted string

Ấn tượng! Đặc biệt xem xét đây là câu trả lời Matlab đầu tiên của bạn. Làm tốt!
Luis Mendo

4

Python 2, 54 byte, Loojvo

l= ['l=', ';print l[0],`l`,l[1]'] ;print l[0],`l`,l[1]

Có một thời gian khó khăn để tìm thấy nó, vì về cơ bản tôi gần như không bao giờ chạm vào con trăn


4

Võng mạc, 20 byte, Martin Ender


\)1S*`\(?
\)1S*`\(?

Dùng thử trực tuyến

Tôi tìm thấy điều này chỉ đơn giản bằng cách loay hoay tìm cách tạo ra một quine. Tôi đã tìm thấy "quine ngắn hơn" mà anh ấy đã gợi ý lúc đầu (hoặc ít nhất là một cái tương tự), chỉ bằng cách thử nghiệm (14 byte):


\)1S*`
\)1S*`

Dùng thử trực tuyến

Tôi mất khoảng nửa giờ đến một giờ. Rất thông minh, Martin!


Công việc tốt! :) Có khoảng 6 biến thể của quine 14 byte, tôi nghĩ vậy.
Martin Ender

@MartinEnder Tôi đã bắt đầu bằng cách xáo trộn đảo chữ của bạn xung quanh, nhưng điều đó không có ích, vì vậy tôi đã bắt đầu với câu hỏi đã biết và sửa đổi điều đó.
mbomb007

@MartinEnder Bạn đã thêm câu hỏi mới vào câu hỏi "Golf you a quine" chưa?
mbomb007



3

> <> , 36 byte, Erik the Golfer

'''000**rd3*:::?!;od0.!!+..233??dfrr

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

Tôi khá chắc chắn rằng đây không phải là giải pháp dự định. Tuy nhiên,> <> quines làm cho khá dễ dàng để loại bỏ hầu hết các ký tự không mong muốn, ngoại trừ '. May mắn thay, :làm cho nó khá dễ dàng để chăm sóc những người là tốt.

Giải trình

'''                                    Push everything except these quotes onto the stack.
   000**                               In effect, pushes a zero.
        r                              Reverse the stack.
         d3*                           Push 39 (the quote character).
            ::                         Make two copies. The stack now holds
                                       a null-terminated representation of the
                                       entire code.
                                       The print loop begins here...
              :                        Duplicate top of stack.
               ?!;                     Terminate if zero.
                  o                    Otherwise, print.
                   d0.                 Jump back to position 13, i.e. the
                                       beginning of the print loop.
                      !!+..233??dfrr   Unused characters.

Đúng, không phải là giải pháp dự kiến: P Tốt lắm.
Erik the Outgolfer

2

JavaScript, 147 byte, jrich

+function e(){window[(w=[``>``]+``)[i=9/9]+w[i+i]+"ert"]('+'+e+'()');"  +./;;;;;=======>[]````````ccddddddeeeeeeeefiinnnnoooooorrrrrrrsttuwwx{}"}()

Với tất cả các ký tự bổ sung, đây chắc chắn không phải là giải pháp dự định :-)


Đúng, chắc chắn không phải là giải pháp dự định, nhưng tôi rất ấn tượng! Làm tốt lắm!
jrich

@jrich Phần khó nhất là tìm ra cách cân bằng dấu ngoặc và dấu sao để tôi không sử dụng thêm bất kỳ cái nào. Tôi thấy bạn đã không nhận ra rằng (false+"")[1]thủ thuật sẽ hữu ích ở đây? ;)
Sản phẩm điện tử

Đừng nghĩ về điều đó một cách trung thực ... giải pháp của tôi là ... khó nói hơn một chút
jrich

2

Haskell, 86 byte, Laikoni

y!r=r:y:r:[y]>>=id;main=putStr$[succ$'!']!"y!r=r:y:r:[y]>>=id;main=putStr$[succ$'!']!"

Ý tưởng tuyệt vời để có được "thông qua succ$'!'(ascii char sau !). Có một số ký tự bị thiếu để có được chúng theo cách thông thường, tức là ngầm thông qua showhoặc print.


1

Befunge , 15 byte, James Holdiness

<:0:+1_@#%9,:g-

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

Giải trình

Điều hấp dẫn ở đây là vòng lặp chấm dứt khi ký tự hiện tại chia hết cho 9, đây chỉ là trường hợp -. Do đó, cần phải đi vào cuối.

<                 Run code from right to left.
              -   There will always be 2 zeros on top of the stack at this
                  point, and this just reduces them to 1 zero.
             g    Get the character at the coordinates given by the top
                  two stack values, (0, 0) initially.
           ,:     Print a copy of that character.
         %9       Modulo 9.
      _@#         Terminate if that is 0.
    +1            Increment the x coordinate.
   :              Duplicate it.
 :0               Push two zeros.

1

PHP, 110 byte, Oliver

<?php $x='<?php $x=0; echo strtr($x, array(chr(39).$x.chr(39)));'; echo strtr($x, array(chr(39).$x.chr(39)));

Cảm ơn, tôi đã rất vui và strtr([])mánh khóe là một cái mới đối với tôi mà tôi hy vọng sẽ tiết kiệm cho tôi một số byte trong tương lai.



0

Python 2, 105 byte, Erik the Golfer

a='a=%r;print a%%a ###(((())))**-01::@@@@@[[]]gggiiirrr~';print a%a ###(((())))**-01::@@@@@[[]]gggiiirrr~

Nó chỉ là định dạng chuỗi Python chuẩn ...


0

Ruby, 53 byte, wat

puts <<ENDIT*2,"ENDIT"
puts <<ENDIT*2,"ENDIT"
ENDIT

Chỉ là một sửa đổi của tiêu chuẩn di truyền:

puts <<2*2,2
puts <<2*2,2
2
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.