Polyglot Anagrams 강도 스레드


22

이것은 도전 의 강도 스레드입니다

경찰은 OEIS 시퀀스 를 선택하고 STDIN을 통해 n이 주어지면 시퀀스에서 해당 n 번째 항목을 생성하는 두 개의 다른 언어로 두 개의 전체 프로그램 을 작성합니다. 두 프로그램은 서로에 대한 아나그램이어야합니다. 즉, 서로의 문자에서 재 배열 될 수 있습니다.

그들은 OEIS 번호에 대한 소스 코드의 이름을 선물 할 것이다 이 개있는 언어를.

경찰이 사용하는 언어가 아닌 다른 언어로 실행되는 원본 경찰의 제출에 대한 아나그램을 찾아야합니다. 답을 금하기 만 발견해야한다 어떤 순서를 생산하고 반드시 원래의 철자 바꾸기가 아닌 경찰에 대해 생각했다 대답은 언어와 프로그램을.

경찰이 숨겨진 솔루션으로 표시 한 경우에만 문자 코드로 출력하거나 STDERR을 솔루션에 포함시킬 수 있습니다. STDOUT으로의 십진 출력은 항상 유효한 균열입니다.

따라서 경찰은 기호 목록을 사용하여 작업을 수행하는 모든 언어를 찾기가 어렵도록 장려합니다.

채점

균열이 가장 많은 사람이이 섹션의 승자가 될 것입니다. 각 솔루션의 첫 번째 균열 만 점수에 포함됩니다.

리더 보드

이 도전에서 일어난 모든 사람에게 큰 감사를드립니다.

여기 리더 보드가 있습니다

Place  User             Score
-----------------------------
1      Adnan            3
1      Kritixi Lithos   3
1      Emigna           3
1      milk             3
5      Steven H.        2
5      Wheat Wizard     2
5      jimmy23013       2
8      ETH Productions  1
8      Dennis           1
8      alleks           1
8      Martin Ender     1
8      Oliver           1
8      Conor O'Brien    1

"아나그램"부분을 이해하지 못하는 경우 조금 더 자세히 설명해 주시겠습니까?
버퍼 오버 읽기

@TheBitByte 다른 솔루션은 원본과 동일한 문자를 사용해야하지만 다른 순서로 재 배열해야합니다.
밀 마법사

추가 문자가 없습니까?
버퍼 오버 읽기

@TheBitByte 예, 문자를 제거하지 않고
Wheat Wizard

답변:


9

05AB1E , 38 바이트, Loovjo , A000290

nXtdief e():return X*X
pr e(input())##

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

의도 된 해결책은 아니지만 작동합니다.

설명

n      # square input
 X     # push 1
  t    # push sqrt(1)
   d   # push is_number(1.0)
    i  # if true do the rest of the code (1.0 is not a number so it will never execute)

1
1.0 is not a number? 좀 더 자세히 설명해 주시겠습니까?
ETHproductions

1
@ETHproductions :이 함수 is_number는 숫자 가로 만 구성되어 있는지 확인합니다 0-9. 으로 .숫자가 아니라, 거짓이된다. 이 함수는 더 설명하는 이름 : 사용할 수 있습니다
Emigna

8

Jolf, 15 바이트, Adnan , A000290

*&"?!#$|<=@\^{}

여기 사용해보십시오! 확실히 의도 된 해결책은 아니지만 작동합니다.

설명

*&"?!#$|<=@\^{}
*                multiply
 &               the two inputs to this func, x, y: x && y
                 returns y if x and y, or the falsey argument.
  "?!#$|<=@\^{}  this string is always truthy, so the second arg is used.
                 two implicit inputs are taken, both equal to the first arg
                 so, this corresponds to *xx, which is x^2.




6

Hexagony , 13 바이트, Adnan , A002378

?"&\>=})\*!@<

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

펼쳐진 :

  ? " &
 \ > = }
) \ * ! @
 < . . .
  . . .

왼쪽 상단 \이 사용되지 않기 때문에 원본인지 100 %가 아닙니다 .

<\>프로그램이 실제로 완전히 선형 그래서, 단지 거울과 같습니다

?"&)}=*!@

?          Read input.
 "         Move back and left.
  &        Copy input.
   )       Increment copy.
    }=     Move forward and right and turn around (to face the n and n+1 edges).
      *    Multiply.
       !   Print.
        @  Terminate.

5

V , 13 바이트, DJMcMayhem , A002275

v!:x]''"
@ai1

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

이것은 저자가 의도 한 언어로 된 첫 번째 해결책 일 수 있습니다.


설명

v!:x]''"   Does nothing
@ai1       inserts 1 a times

아마도 당신은 DJMcMayhem에게 당신이 그것을 깨뜨렸다는 것을 알려 주어야합니까? ;)
ETHproductions

@ETHproductions 채팅에서 그에게 말했을 것입니다. 아마도 댓글로 다시 말할 것입니다.
밀 마법사

1
This might be the first solution in the language the author intended.에 딱 맞다. :)
DJMcMayhem

5

2 세이블, 코너 오브라이언 , A000290

~*

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

어떻게 작동하는지 모르겠습니다. 실제로 요구 사항을 충족하는 프로그램은 하나 뿐이며 작동하는 언어를 찾기 위해 무차별 강제 수행했습니다.

문서를 살펴본 후 설명을 얻을 수 있습니다.

~         Push Input OR Input (always pushes the input)
 *        Multiply that by Input 

5

Pyth , 26 바이트, Steven H. , A023443

암호:

tQ.qly 7:esau0euii s uxC !

온라인으로 시도하십시오 .

상당히 간단합니다 :

 Q                            Reads input
t                             Substracts 1 from it
  .q                          Quits program (implicit print)
    ly 7:esau0euii s uxC !    None of this ever plays a part...
                                I just thought it'd be fun to scramble it.

2
의도 된 솔루션! (물론 스크램블 빼기)
Steven H.

1
대단해! 좋은 생각. 직접 알리지 않아서 죄송합니다. 담당자가 너무 적습니다.
alleks

문제 없어! 축하합니다.
Steven H.

5

Python 3, 118 바이트, ETHproductions, A042545

s,a=801**.5-28,[0,0==0]
for i in range(int(input())):a+=[a[i]+a[-1]*int(1/s)];s=1/s-1//s
(print(a[-2]),) #.0fhlmop|

Ideone에서 테스트하십시오 .

경찰 제출

i=input();s=1/(801**.5-28);a=[0,1]
for p in range(i):a+=[a[-2]+a[-1]*int(s)];s=1/(s-int(s))
print a[i]#,,,.//000fhlmo|

다른 점

경찰 제출은 두 가지 이유로 Python 3에서 작동하지 않습니다.

  • 파이썬 2의 입력 함수는 한 줄의 입력을 자동으로 회피하는 반면, 파이썬 3의 대응자는 그 줄을 문자열로 반환합니다. int 를 호출 하여이 문제를 해결할 수 있습니다 .

  • print 파이썬 2의 문장이지만 파이썬 3의 함수입니다. 특히, 우리는 인수를 괄호로 묶어야합니다.

즉, 우리가 필요 int()하고 (), 그러나 그 문자는 주석의 모든 부분이 아니다. 그것은 우리가 약간의 변경을해야한다는 것을 의미합니다.

대신에 소수 , 우리는 추적 유지 1 / s의 .

ss=1/(801**.5-28)– 의 초기화가 s=801**.5-28문자를 저장합니다 1/().

의 요인 이 [-1] 의 업데이트에 - -하게 문자를 비용, .int(s)int(1/s)1/

ss=1/(s-int(s))– 의 업데이트는 s=1/s-1//s문자 비용 이 들지만 문자 1//는 저장 (int())됩니다.

저장된 문자 ()(int())는 코드를 Python 3으로 이식하는 데 필요한 문자를 포함하지만이를 얻는 데 비용이 듭니다 1//. 우리는 //의견을 취할 수는 있지만 1다른 곳에 저장해야합니다 .

한 가지 방법 (유일한?) 필요한 절약은 1을 대체하는 것입니다 1의 초기화에 와 . 이 네 문자는 비용이 들지만 주석에서 가져올 수 있습니다 .0==000

지금까지 다음 코드가 있습니다.

i=int(input());s=801**.5-28;a=[0,0==0]
for p in range(i):a+=[a[-2]+a[-1]*int(1/s)];s=1/s-1//s
print(a[i]) #,,,.()0fhlmo|

중 하나를 복구하려면 ="빚"지금 우리를, 우리는 초기화 다시 작성할 수 있습니다 하나의 과제로 : s,a=801**.5-28,[0,0==0]또한, 이것은을 절약 ;하고 비용 ,에 추가하고, 주석에서 제거 할 수있는가.

두 번째 =는 입력을 변수에 저장하지 않고 (즉, range(int(input()))대신 쓰는 대신) 문자를 저장하여 저장할 수 i=있습니다. 우리는 사용 전을 뿐만 아니라 루프 후,하지만 번째 의 요소 A는 우리가 교체 할 수 있도록, 오른쪽에서 단지 두 번째입니다 i함께 -2. 같은 이유로 a[-2]루프 바디에서로 대체 할 수 있습니다 i.

이제 Python 3 코드 작동에 대한 순열이 있습니다.

s,a=801**.5-28,[0,0==0]
for i in range(int(input())):a+=[a[i]+a[-1]*int(1/s)];s=1/s-1//s
print(a[-2]) #,.()0fhlmop|

그러나이 코드는 Python 2에서도 작동합니다! 이를 수정하는 한 가지 방법은 다음 print(a[-2])과 같이 바꾸는 것 입니다 (print(a[-2]),). 주석에 필요한 문자가 있습니다. 앞에서 언급했듯이 print 는 Python 3의 함수이므로 튜플 ( None )을 구성 합니다. 그러나 Python 2의 print 은 튜플 리터럴 내부의 SyntaxError 입니다.


Dang, nice ... 아마도 주석이없는 버전을 작성하는 데 약간의 시간이 더 걸렸을 것입니다. 원하는 솔루션을 게시하겠습니다.
ETHproductions

파이썬 2와 3에서 작동하고 주석을 사용하지 않으며 매우 다른 (의도 된) 솔루션을 가진 수정 된 버전의 프로그램을 만들었습니다. 별도의 답변으로 게시 할 가치가 있습니까?
ETHproductions

파이썬 2와 3에서 모두 작동한다면 유효한 솔루션이 아닙니다. 균열은 원래 언어로는 작동하지 않습니다.
Dennis

이해가 안 돼요 의도 한 균열은 파이썬이 아닙니다.
ETHproductions

아, 당신은 새로운 경찰 제출 을 의미합니다 . 나는 우리가 이것에 대한 다른 균열에 대해 이야기하고 있다고 생각했다 ... 물론, 그것을 게시하십시오.
Dennis







2

볼록한, 75 바이트, boboquack , A004526

2/Q2 2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2*2*2*; 2*;                 2; 2; 2;

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

작동 방식 :

2  e# push 2
 / e# pop first 2, divide, push result
   e# push a bunch of garbage but discard it all with semi-colons (;)
  Q2 2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2*2*2*; 2*;                 2; 2; 2;



1

05AB1E , 25 바이트, Mego , A000583

암호:

nnYi=put("");prit`Y**4`,X

설명:

n       # Square the input
 n      # Square the squared input
  Y     # Constant that pushes 2
   i    # If equal to 1, do the following:
    =put...

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


오 어서, 당신은 12 초 나에게 이겼습니다 :)
Emigna

@Emigna 답변 사이의 시간은 uncanny : p입니다.
Adnan

1
내가 처음으로 게시물을 눌렀을 때 등록하지 않았기 때문에 거의 즉각적인 내용
이었습니다.

1

, 8 바이트, 올리버 , A000042

(1J&F},1

설명

              #Implicit Input
(             #Start range loop
 1            #Push 1 to the stack
  J           #Join all the elements in the stack
   &          #End program
    F},1      #These are ignored

재미있는 것은 이것이 의도 된 언어 였다는 것입니다! Dip은 Oliver가 만든 esolang입니다.

명령 줄에서 테스트 사례 및 딥 실행

$python3 dip.py
Dip v1.0.0 by Oliver Ni.
>>> (1J&F},1
> 4
1111
>>> (1J&F},1
> 7
1111111

1

2sable, 14 바이트, Dopapp , A121377

Q@5 2*%6 8*+.&

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

작동 방식 (약간) :

Q@
  5              # Push 5
    2            # Push 2
     *           # Pop (2), pop (5), push 5*2=10
      %          # Pop (10), pop (input), push input%10
       6         # Push 6
         8       # Push 8
          *      # Pop (8), pop (6), push 8*6=48
           +     # Pop (48), pop (input), push input+48
            .&


1

, 5 바이트, Oliver , A000012

`¸WW/

시퀀스 1는 입력이 무엇이든 상관없이 인쇄합니다 . Oliver의 답변은을 인쇄합니다 1.0. 이 프로그램은 또한를 인쇄합니다 1.0. 이것은 분명히 의도 된 해결책입니다.

설명

`¸                  # push character `¸`
  W                 # pushes 1000000
   W                # pushes 1000000 also
    /               # divides the last two items in stack resulting in 1.0
                    # implicit output (1.0)

대체 솔루션 (@milk 제공)

볼록한 , 5 바이트

WW¸`/

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

설명

                  // implicit input
W                 // pushes -1
 W                // pushes -1 also
  ¸               // calculates the LCM of the two numbers (which evaluates to 1)
   `              // finds its string representation
    /             // slices the string (so that it would evaluate to "1")
                  // implicit output

1
볼록한 대체 균열 : WW¸` /
milk

@milk 감사합니다! 최신 편집에 추가했습니다
Kritixi Lithos

생각보다 Convex 프로그램이 작동하지 않습니다. 현재로서는 -1을 두 번 푸시하고 LCM에서 1로 설정하고 (1이 됨) 문자열 표현을 찾은 다음 마지막 "1"으로 모든 [input]문자를 기준으로 문자열을 슬라이스합니다 ( 입력은 숫자
이므로

@GamrCorps 지금 어때요?
Kritixi Lithos
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.