아나그램 퀸 (Cops 'Thread)


26

이것은 강도의 스레드가 여기 에서 찾을 수 있는 도전입니다

문제는 소스 코드의 아나그램을 출력하지만 원래 소스 코드 자체는 출력하지 않는 프로그램을 작성하는 것입니다.

예를 들어 다음 Python 프로그램은

print`'print*2``'*2`

인쇄물

'print*2``print*2``'

원본 소스와 동일한 문자를 갖지만 순서가 다릅니다.

이러한 프로그램을 찾으면 프로그램의 출력을 프로그램을 생략하는 응답으로 포함 시키십시오. 짐작할 수 있듯이 강도는 숨은 프로그램이나 사양에 맞는 프로그램을 찾으려고합니다. 당신의 목표는 강도가 부술 수없는 가장 짧은 프로그램을 만드는 것입니다.

규칙

  • 대부분의 문제 마찬가지로 , 일주일 동안 답변이 깨지지 않은 경우 답변에 의도 된 솔루션을 추가하고 안전으로 표시 할 수 있습니다 . 일단 안전 해지면 강도는 대답을 할 수 없습니다.

  • 의도 한 솔루션의 언어를 포함 할 필요는 없지만, 언어를 포함하지 않으면 문제를 제기하는 모든 언어에서 언어를 해독 할 수 있지만 언어를 지정하면 제공된 언어로만 언어를 해독 할 수 있습니다.

  • Quines의 표준 규칙이 적용됩니다.


내 일반적인 질문 : 바이트가 문자와 일치하지 않는 언어에서 아나그램은 바이트 또는 문자 수준입니까?

@ ais523 바이트의 아나그램이어야합니다.
밀 마법사


강도에 일반적인 퀴니 규칙이 적용됩니까? 경찰에 적용됩니까?
Dennis

1
@Fatalize 출력을 변경하지 않으면 괜찮지 만 출력 정적 이어야 합니다.
밀 마법사

답변:


12

뇌 - 플랙 , 231 바이트 밀 마법사 금을

}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{][][][][][][][)()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(

원래 프로그램은 -A인수를 사용합니다 .

카운트는 다음과 같습니다.

( -> 74
) -> 74
{ -> 34
} -> 34
[ -> 7
] -> 7



4

하스켈, 107 바이트, 크래킹

"$$$$'''''''',,----....::<<<<<<<<========>>>>[[[[[[[[]]]]]]]]aaddddddddddddiiiiiiiiiiiimmnnnnpprrtt||||||"

추가 줄 바꿈이 있습니다.


독창적 인 솔루션 :


main=print$id=<<[[id|i<-"main=print$id=<<[[id|i<-,i==d]>>d:[d]|d<-['$'..'|']]",i==d]>>d:[d]|d<-['$'..'|']]

온라인으로 사용해보십시오!

내 주요 아이디어는 라이브러리 sort함수 를 사용하지 않고 출력하기 전에 자체 소스 코드를 정렬하는 quine을 작성하는 것이 었습니다 . nimi 의 초기 크래킹 시도 후에 만 프로그램 코드를 수동으로 정렬하고 프로그램에 하드 코딩 한 다음 각 문자를 두 배로 늘리면서 인쇄 할 수있었습니다. 그러나 사용 가능한 문자가 제한되어 있어이 접근법이 더 번거롭고 nimi의 성공적인 균열은 내 원래 프로그램과 매우 유사합니다.

설명:

main=print$                                      -- full program which prints the following string
  id=<<[[id|i<-"...",i==d]>>d:[d]|d<-['$'..'|']]
                                 |d<-['$'..'|']  -- for each char d in "$%&'()*+,-./012 ... xyz{|"
        [id|i<-"...",i==d]                       -- build a list with as many elements as d is contained in the string
                          >>d:[d]                -- replicate the string "dd" as often as the previous list is long 
  id=<<[                                       ] -- concatenate the resulting list of srings to one single string

@nimi 예, 그것은 전체 프로그램입니다. 이것이 quines의 표준 규칙이 아닙니까?
Laikoni

확실하지 않다. 허용 된 함수 전에 quines가있었습니다. 전체 프로그램이 표준이더라도 문제의 "프로그램"은 기본값을 덮어 쓰고 기능을 허용 하는 것으로 해석 될 수 있습니다 .
nimi

@nimi 이전 버전이 오도되어 죄송합니다. 나는 당신의 첫 번째 시도를 본 후에 그것을 눈치 채기 전에 사양에 따라 유효하지 않다는 것을 기록했습니다. 나는 심지어 그것을 출판 한 다음 개정 내역에서 볼 수 있듯이 아무도 보지 않았다는 희망으로 빠르게 롤백했습니다. 고정 버전을 확인한 후 설명이 더 이상 맞지 않다는 것을 고려하지 않고이 버전으로 롤백했습니다.
Laikoni

내 답변을 언급했는지 확실하지 않아서 내 의견을 삭제했습니다. 실제로 미리 정렬 된 문자열 ( ;NL로 대체 ) : i[]d=[d,d];main=print$i[]=<<"$$ ... |||"--과 뒤에없는 모든 문자를 사용할 수 --있습니다. 강도 스레드에서 내 답변을 찾은 후 지금 변경된 설명으로 답변을 공개 한 후이 버전을 찾았습니다.
nimi

4

지정되지 않은 언어, 124 바이트

DJMcMayhem의 답변 주제에서 이것은 0x00각각 4 번 인쇄 된 첫 32 개의 ASCII 문자 (를 제외하고 )입니다. 이들 중 어느 것도 보이지 않기 때문에 실제 코드를 답변에 포함시키지 않았습니다.

다음은 16 진수 덤프입니다.

00000000: 0101 0101 0202 0202 0303 0303 0404 0404  ................
00000010: 0505 0505 0606 0606 0707 0707 0808 0808  ................
00000020: 0909 0909 0a0a 0a0a 0b0b 0b0b 0c0c 0c0c  ................
00000030: 0d0d 0d0d 0e0e 0e0e 0f0f 0f0f 1010 1010  ................
00000040: 1111 1111 1212 1212 1313 1313 1414 1414  ................
00000050: 1515 1515 1616 1616 1717 1717 1818 1818  ................
00000060: 1919 1919 1a1a 1a1a 1b1b 1b1b 1c1c 1c1c  ................
00000070: 1d1d 1d1d 1e1e 1e1e 1f1f 1f1f            ............

그러나 여기에 원하는 경우 파이썬 (및 줄 바꿈)을 인쇄하는 파이썬이 있습니다.

print"".join(chr(x)*4for x in range(1,32))

4

Pyth , 32 바이트, math_junkie에 의해 크랙 됨

J+J=JJ 1-2#pTN%"J+J=JJ 1-2#pTN%"

독창적 인 솔루션

J2#p+"J+J=JJ 1-2#pTN%"N=J-J1 %TJ

온라인으로 사용해보십시오!

J2                               # Assign 2 to the variable J
  #                              # Infinite loop, break on error
    +"J+J=JJ 1-2#pTN%"N          # appending a '"' to the string 'J+J=JJ 1-2#pTN%'
   p                             # print the string above
                       =J-J1     # subtract 1 from J and assign back to J
                             %TJ # calculated 10%J, with a blank space before to supress output,
                                 # on the 3rd iteration this will be 10%0 that will generate an
                                 # erro and will break out the loop



4

V , 21 바이트 (안전!)


"&./124ipq|ÍÓÚîñòÿ

선행 줄 바꿈에 유의하십시오.

여기에는 인쇄 할 수없는 것이 포함되어 있으므로 다음은 16 진 덤프입니다.

00000000: 0a16 1b22 262e 2f31 3234 6970 717c cdd3  ..."&./124ipq|..
00000010: daee f1f2 ff                             .....

사람들을 돕기 위해 여기에 표준 확장 가능 V quine에 대한 링크가 있습니다.


원본 버전은 다음과 같습니다.

ñi241"qp|Ó./ò&
ÚÍîÿ

온라인으로 사용해보십시오!

읽을 수있는 버전은 다음과 같습니다.

ñi<C-v>241<esc>"qp|Ó./ò&
ÚÍîÿ

이것이 작동하는 방식 은 기본 확장 가능 퀴인에 정렬 을 포함시키는 입니다. 이 답변으로 인해 V- 퀸에 대해 생각할 때 표준 확장 가능 퀴가 3 바이트 단축 될 수 있음을 깨달았 으므로이 솔루션은 다음과 같습니다.

ñiéÑ~"qp|Ó./ò&
ÚÍîÿ

설명:

ñi<C-v>241<esc>"qp  " Standard V-quine. Everything after this is recorded into register 'q'
                    " so we can do whatever we want without ruining it's "quine-ness"


|       " Go the first character on the line (I just realized now that this is pointless)
 Ó./ò&  " Put every character on a newline
Ú       " Sort every line
 Íî     " Join all lines together
   ÿ    " Necessary for V-quines

1
냄새 나는 신선한 정규식 냄새
Kritixi Lithos

3

지정되지 않은 언어, 254 바이트 @Dennis에 의해 크랙 됨!

나는 이것이 간결함을 위해 이길 것이라 의심하지만, 깨기가 어려울 것이므로 여전히 가치가 있습니다.

버그로 인해 순서가 0x0b, 0x0c, 0x0a약간 뒤섞여 있지만 실제 결과입니다.

나는 언어를 지정하지 않기 때문에 이것이 가능한 다른 언어를 볼 수 있다고 생각했습니다. 출력은 대부분 비 ASCII이므로 출력의 hexdump는 다음과 같습니다.

00000000: 0102 0304 0506 0708 090b 0c0a 0e0f 1011  ................
00000010: 1213 1415 1617 1819 1a1b 1c1d 1e1f 2021  .............. !
00000020: 2223 2425 2627 2829 2a2b 2c2d 2e2f 3031  "#$%&'()*+,-./01
00000030: 3233 3435 3637 3839 3a3b 3c3d 3e3f 4041  23456789:;<=>?@A
00000040: 4243 4445 4647 4849 4a4b 4c4d 4e4f 5051  BCDEFGHIJKLMNOPQ
00000050: 5253 5455 5657 5859 5a5b 5c5d 5e5f 6061  RSTUVWXYZ[\]^_`a
00000060: 6263 6465 6667 6869 6a6b 6c6d 6e6f 7071  bcdefghijklmnopq
00000070: 7273 7475 7677 7879 7a7b 7c7d 7e7f 8081  rstuvwxyz{|}~...
00000080: 8283 8485 8687 8889 8a8b 8c8d 8e8f 9091  ................
00000090: 9293 9495 9697 9899 9a9b 9c9d 9e9f a0a1  ................
000000a0: a2a3 a4a5 a6a7 a8a9 aaab acad aeaf b0b1  ................
000000b0: b2b3 b4b5 b6b7 b8b9 babb bcbd bebf c0c1  ................
000000c0: c2c3 c4c5 c6c7 c8c9 cacb cccd cecf d0d1  ................
000000d0: d2d3 d4d5 d6d7 d8d9 dadb dcdd dedf e0e1  ................
000000e0: e2e3 e4e5 e6e7 e8e9 eaeb eced eeef f0f1  ................
000000f0: f2f3 f4f5 f6f7 f8f9 fafb fcfd feff       ..............

즉 제외한 모든 단일 ASCII 문자입니다 0x00그리고 0x0D둘 다 TIO에 이상한 행동을 야기하기 때문이다. 재미 크랙! > : D


원래 코드는 V입니다.

온라인으로 사용해보십시오

16 진 덤프 :

00000000: ee02 0304 0506 0708 090b 0c0e 0f10 1112  ................
00000010: 1314 1516 1718 191a 1b1c 1d1e 1f20 2122  ............. !"
00000020: 2324 2526 2728 292a 2b2c 2d2e 2f30 3132  #$%&'()*+,-./012
00000030: 3334 3536 3738 393a 3b3c 3d3e 3f40 4142  3456789:;<=>?@AB
00000040: 4344 4546 4748 494a 4b4c 4d4e 4f50 5152  CDEFGHIJKLMNOPQR
00000050: 5455 5657 5859 5a5b 5c5d 5e5f 6061 6263  TUVWXYZ[\]^_`abc
00000060: 6465 6667 6869 6a6b 6c6d 6e6f 7071 7273  defghijklmnopqrs
00000070: 7475 7677 7879 7a7b 7c7d 7e7f 8081 8283  tuvwxyz{|}~.....
00000080: 8485 8687 8889 8a8b 8c8d 8e8f 9091 9293  ................
00000090: 9495 9697 9899 9a9b 9c9d 9e9f a0a1 a2a3  ................
000000a0: a4a5 a6a7 a8a9 aaab adae afb0 b1b2 b3b4  ................
000000b0: b5b6 b7b8 b9ba bbbc bdbe bfc0 c1c2 c3c4  ................
000000c0: c5c6 c7c8 c9ca cbcc cdce cfd0 d1d2 d3d4  ................
000000d0: d5d6 d7d8 d9da dbdc ddde dfe0 e1e2 e3e4  ................
000000e0: e5e6 e7e8 e9ea ebec edef f0f1 f2f3 f4f5  ................
000000f0: f6f7 f8f9 fafb fcfd feff 0a53 ac01       ...........S..

기본적으로 모든 것은 S쓰레기를 버퍼에 넣습니다. 0xEE처음에 그냥 줄 바꿈이 루프 또는 매크로의 일부에서 발생하지 않습니다 후 그 모든 것을 보장하는 것입니다. 그런 다음에

¬<C-a>   "Insert every character in the range 0x01-0xFF



2

PHP, 130 바이트 (안전)

    $$$$$$''''(((((((()))))))),,22;;;;;;<<==??\\\\____aaccddeeeeeeeehhhhiiiillllmmoooooopppppppppprrrrrrrrssssssssttttttttttvvvvvv

독창적 인 솔루션

금이 간 것이 아니라는 것을 이해할 수 없었습니다

<?php $v=str_split(str_repeat('<?php\ $v=str_split(str_repeat(\'\',2));sort($v);echo\ implode($v);',2));sort($v);echo implode($v);

0

추측, 43 바이트

{4"2)4q):)u(4o'{4t:q(e)(",(t22(u()o)?,?'2e

언어를 공유할지 여부를 결정하는 것은 어려운 일이지만이 옵션이 더 낫다고 생각합니다. 후행 줄 바꿈이 있습니다.


1
답변은 의도 한 솔루션을 답변에 추가 한 경우에만 안전합니다. 그때까지이 답변은 안전하지 않습니다.
mbomb007
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.