번역 중 손실


15

이것은이다 위키로 이동 태그를 클릭 형식에 익숙하지 않은 경우. 이 질문에 대한 강도는 없습니다.

경찰

Cops로서의 임무는 Online Encyclopedia of Integer Sequences 에서 두 개의 시퀀스를 선택 하고 한 시퀀스의 n 번째 요소를 입력으로 사용하고 두 번째 시퀀스의 n 번째 요소를 출력하는 프로그램을 작성하는 것입니다. 그런 다음 코드를 포함하고 선택한 시퀀스를 생략하여 답변을합니다. 강도는 선택한 시퀀스를 찾으려고 시도하고 원하는 시퀀스 또는 프로그램에서 사용하는 다른 시퀀스를 찾은 경우 답을 Cracked 로 표시해야합니다 . 강도가 유효하지 않다고 생각하는 균열을 사용자에게 알리면 균열이 아니라는 증거를 제시 할 수 있습니다. 그렇지 않으면 표시해야합니다.

7 일 동안 크랙되지 않은 일반적인 답변에 따라 안전하다고 표시 될 수 있습니다. 경찰은 자신이 생각한 순서를 밝힘으로써 그들의 답변을 안전한 것으로 표시 할 수 있습니다. 일단 안전 해지면 더 이상 답이 깨지지 않을 수 있습니다.

목표는 크랙되지 않은 상태로 프로그램의 바이트 수를 최소화하는 것입니다.

다음 Python 코드는 A000290 의 n 번째 요소 (제곱 숫자)를 A000217 (삼각 숫자)로 변환합니다.

lambda x:sum(range(0,int(x**.5+1)))

규정 및 요구 사항

  • 유한 한 것으로 입증되지 않은 시퀀스를 선택하는 경우 OEIS 페이지에 나열된 것 이외의 모든 용어를 출력해야합니다.

  • 무한 정밀 정수가없는 이전 규칙 언어의 예외로, 범위 밖의 숫자를 출력하거나 입력 할 필요는 없습니다.

  • 입력 시퀀스의 크기가 출력 시퀀스보다 작은 것으로 입증되어서는 안됩니다.

  • 입력 시퀀스에는 반복 요소가 없어야합니다 (그렇지 않으면 작업이 거의 불가능합니다)

  • OEIS는 기본적으로 페이지에 색인 ( "OFFSET"헤더 다음의 첫 번째 숫자)을 포함합니다. 다른 색인을 선택하는 경우 기본적으로 n에 대한 오프셋입니다 (n은 시퀀스의 첫 번째 요소에 대한 색인과 같습니다) 너의 답.

  • OEIS에 나와있는 오프셋과 다른 오프셋을 선택한 경우에도 입력 시퀀스의 모든 요소를 ​​출력 시퀀스의 해당 요소에 매핑해야합니다.

  • 프로그램이 입력 순서에없는 입력을 수신하면 원하는대로 수행 할 수 있습니다 (정의되지 않은 동작). 그러나 여전히 정수를 출력하는 것이 가장 좋습니다.

  • 코드를 실행하는 데 시간이 많이 걸리거나 자유 언어가 아닌 언어를 선택 하여 의도적으로 코드를 실행하기 어렵게 만드는 것은 스포츠맨이 아닙니다 . 나는 후자를 집행 할 것이지만 객관적으로 전자를 집행 할 수는 없다. 그러나 나는 컴퓨터를 약한 사람들에게는 도전이 더 어려워지기 때문에 재미를 위해 전자를 시도하지 말라고 간청합니다.

강도

강도로서의 임무는 깨지지 않은 안전하지 않은 답변을 선택하고 그들이 매핑하는 시퀀스를 찾는 것입니다. 해결책을 찾으면 작동하는 솔루션 (필수 경찰의 의도 된 솔루션은 아님)이 해당 답변에 대한 순서를 설명합니다.

강도는 두 가지 특정 시퀀스가 ​​솔루션인지 확인하는 것에 대해 걱정할 필요가 없으며, OEIS의 모든 항목과 일치하는 경우 솔루션을 게시해야합니다. 경찰이 염두에 둔 순서가 아닌 경우 경찰은 자신이 잘못되었다는 증거를 제시하거나 찾을 수없는 경우 균열로 표시 할 수 있습니다.


3
강도는 그의 답변이 모든 입력에 적합한 지 어떻게 확신 할 수 있습니까? 수학적으로 증명해야합니까?
Leo

1
@Leo 강도는 OEIS의 모든 항목과 일치하는 경우 솔루션을 게시해야합니다. 그 경찰이 생각했던 것이 순서가 아닌 경우 그들은 그것이 있다는 증거를 제공 할 수 있습니다 부정확 하거나 일을 찾을 수없는 경우 금으로 표시합니다. 강도의 실을 업데이트하겠습니다.
Post Rock Garf Hunter

2
일반적인 가정과 입증되지 않은 아이디어 사이에 선을 그리는 것은 어렵습니다. 명확성을 기 하기 위해 귀하의 답변이 효과 가 있음증명할 수 있어야 합니다.
Dennis


2
@ 데니스 나는 그것이 좋은 지적이라고 생각합니다. 사람들이 균열을 발견 한 것에 대한 담당자를받을 수있는 방법은 없지만이 도전에는 매우 까다로운 것으로 보임에 틀림 없습니다.
0 '

답변:


6

젤리 , 14 바이트 (@Wolfram에 의해 크랙)

+66%444µ111<µ¡

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

이것이 무엇을하는지는 분명해야합니다. 사실, 젤리가 아닌 사용자의 이익을 위해 다음과 같은 설명도 제공합니다.

설명

+66%444µ111<µ¡
       µ    µ¡  Run the transformation
+66%444           "add 66, then modulo 444"
        111<    once if 111 is less than the input, zero times otherwise 

문제는 왜 이것을 하는가?

갈라진 금

해당 서열은 A201647A201647이었다 . 그것들은 유한하며 마지막 두 요소에서만 다릅니다.

  • 3, 5, 7, 9, 11, 15, 21, 165, 693
  • 3, 5, 7, 9, 11, 15, 21, 231, 315

따라서 입력이 낮 으면 그대로두고 마지막 두 변환에 함수를 맞추기 만하면됩니다.


@WheatWizard : 이점을 얻을 수 있다고 생각되면 활용하십시오. 그러나 다른 사람이 캐시를 활성화 한 상태에서 테스트하는 것처럼 빠른 속도를 유지해야합니다.

@WheatWizard 출력 캐시 비활성화 는 서버에서 새로운 결과를 얻지 만 새로운 결과는 여전히 캐시됩니다.
Dennis

1
@WheatWizard 또는 테스트 할 때 캐시 차단기를 추가하십시오 : 주석의 일부로 무작위로 선택된 문자열 또는 사용되지 않은 입력 필드.
Dennis

+1이 답변은 실제로 매우 간단하지만 여전히 강도에게 도전을합니다
Kritixi Lithos


3

Jelly , 7 바이트 (@JonathanAllan에 의해 크랙 됨)

ÆFḅÆdÆẸ

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

그것이하는 일

ÆFḅÆdÆẸ  Main link. Argument: n

ÆF       Factor n into prime-exponent pairs.
   Æd    Compute σ, the number of divisors of n.
  ḅ      Convert each pair from base σ to integer.
     ÆẸ  Yield the integer whose prime signature (infinite sequence of all prime
         exponents, including zeroes, in order) is equal to the result.

3
다른 유효한 매핑이있을 수도 있지만, 내가 생각한 것으로 생각되는 것은 소수-A000040 ~ 2 ^ (2p + 1), p prime-A100626 입니다.
Jonathan Allan

@JonathanAllan 나는 또한 A000040-> A100626에 왔지만, 당신은 내 느린 손가락을
이겼지 만

입력 값이 소수 일 때 p, ÆFyields (p,1)Ædyields 2이므로 우리를 가져 옵니다. 2p+1ÆẸ, 첫 번째 소수를 산출합니다.2 결과의 위력으로2^(2p+1) .
Jonathan Allan

@JonathanAllan 그렇습니다.
Dennis

2

파이썬 3, 256 바이트 ( 크랙! )

from math import*
def p(i,m):
 r=0;d=floor(log(i))
 for y in range(d):r+=(pow(16,d-y-1)%(8*y+m))/(8*y+m)
 o=-1;y=d
 while r!=o:o=r;r+=pow(16,d-y-1)/(8*y+m);y+=1
 return r
def q(n):r=4*p(n,1)-2*p(n,4)-p(n,5)-p(n,6);return floor((1-(-r%1)if r<0 else r%1)*16)

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

이 코드가 끔찍해 보인다면 죄송합니다. 이것이 첫 파이썬 골프라고 생각합니다. 파이썬으로 캐스팅하면 쉽게 코딩 할 수 있습니다.


문제의 기능이 있다고 가정합니다 q.
Post Rock Garf Hunter

또한 변수 k가 사용되지 않은 것으로 보이므로 일부 바이트를 제거하여 저장할 수 있습니다.
Post Rock Garf Hunter

그것은이다 A001671A062964 ?
Post Rock Garf Hunter

@WheatWizard 예, 감사합니다.
betseg

2

가공184 바이트 , SAFE!

int x(int y){int b=TRIANGLES-MITER;for(int i=OVERLAY/BURN;i>#fffffe;b*=(int)pow(y,(MOVE-HAND+0.)/(int)sqrt(red(color(-1<<16))/(int)log(color(0)*color(-1)))),i-=QUAD/DARKEST);return b;}

int를 받아서 int를 반환하는 함수입니다. 입력 번호가 int범위 내에 있으면 프로그램이 정상적으로 작동합니다.

느리지 않고 읽을 수 없습니다. 행운을 빕니다!


이 제출이 오래 지속되어 놀랐습니다. 오, 적어도 그것은 첫 번째 안전한 제출입니다 :)

A000578 에서 A000290

다시 말해, 정사각형에 대한 큐브입니다.

설명

첨부 된 문자열 (또는 숫자)에 응답하는 동안 int를 나타내는 처리 상수 목록을 발견했습니다. 예를 들어CORNER 값은 0입니다. 전체 목록은 여기 에서 찾을 수 있습니다 . 상수 값을 찾으려면print .

이것을 사용하여 특정 숫자를 이러한 상수의 조합으로 바꾸어 난독 화하기로 결정했습니다. 따라서 상수를 각각의 int 값으로 대체하면 얻을 수있는 결과가 있습니다.

int x(int y){int b=9-8;for(int i=512/8192;i>#fffffe;b*=(int)pow(y,(13-12+0.)/(int)sqrt(red(color(-1<<16))/(int)log(color(0)*color(-1)))),i-=16/16);return b;}

지금도 완전한 코드는 공개되지 않습니다. 색상이 남아 있습니다. 처리 중 색상 변수에는 int 값이 있습니다 (예 : white ( #ffffff) is -1, #fffffeis-2 , #fffffdis -3등). print색상을 선택하면 찾을 수 있습니다 . 색상을 단순화합시다.

int x(int y){int b=9-8;for(int i=512/8192;i>-2;b*=(int)pow(y,(13-12+0.)/(int)sqrt(red(color(-1<<16))/(int)log(-16777216*-1))),i-=16/16);return b;}

우리는 중간 쯤에 있습니다 :) 값을 이해하려면 숫자 표현을 단순화해야합니다.

int x(int y){int b=1;for(int i=0;i>-2;b*=(int)pow(y,(1.)/(int)sqrt(red(color(-65536))/(int)log(16777216))),i-=1);return b;}

훨씬 더 명확하다! 이제 로그를 단순화 해 봅시다.

int x(int y){int b=1;for(int i=0;i>-2;b*=(int)pow(y,(1.)/(int)sqrt(red(color(-65536))/(int)16.6...)),i-=1);return b;}


int x(int y){int b=1;for(int i=0;i>-2;b*=(int)pow(y,(1.)/(int)sqrt(red(color(-65536))/16)),i-=1);return b;}

거의 끝났다! 이제 우리는이 (int)sqrt(red(color(-65536))/16))입을 알아 내야합니다 . color(-65536)빨간색 rgb(255, 0, 0)입니다. 이제 red()함수는 인수의 빨간색 구성 요소 값 (색상)을 반환합니다. 빨간색이 얼마나됩니까? 정답은255 입니다. 그것으로 우리는 얻을

(int)sqrt(255/16))
(int)sqrt(15)
(int)3.8...
3

프로그램에서 이것을 대체하면 다음과 같은 결과가 발생합니다.

int x(int y){int b=1;for(int i=0;i>-2;b*=(int)pow(y,(1.)/3),i-=1);return b;}

예, 끝났습니다!

int x(int y){                        // y is the cube
  int b=1;                           // variable that holds the final result
  for(int i=0;                       // for-loop that
          i>-2;                      // loops twice
          b*=(int)pow(y,(1.)/3),     // multiply b by the cube root of y
          i-=1);                     // decrement the looping variable
  return b;                          // finally return b
}

요약하면 입력 숫자의 큐브 루트의 제곱 (for 루프에서 두 번 곱함)을 반환합니다.


0

Mathematica (또는 무엇이든) —  금이 간!

f[x_] := Quotient[ 366403414911466530559405368378193383110620062 - 
    755296348522256690003418238667147075159564695 x + 
    525778437135781349270885523650096958873079916 x^2 - 
    156594194215500250033652167655133583167162556 x^3 + 
    20861131421245483787723229627506507062999392 x^4 - 
    1181515772235154077024719095229309394979146 x^5 + 
    29382627265060088525632055454760915985604 x^6 - 
    308672970015057482559939241399297150364 x^7 + 
    1087516675449597417990589334580403666 x^8 - 
    312989984559486345089577524231879 x^9, 
  265451130886621254401938908479744271974400 ]

Mathematica는 자유 소프트웨어가 아니라는 것을 알고 있지만,이 기능은 원하는 언어로 포팅하기에는 쉽지 않습니다. 문자 그대로 입력 정수에서 평가 된 주어진 차수 9 다항식의 값을 계산 한 다음 정수 몫을 취합니다 그 값과 마지막 줄의 42 자리 숫자. 예를 들어로 f[100]평가됩니다 -3024847237.


2
A003173 내지 A165892 . 그래도 프로그래밍 문제는 아닙니다.;)
Leo

2
어쨌든, 수학은 공짜가 아니기 때문에 이것을 파이썬 함수로 바꾸기 위해 이것을 썼습니다
Leo

@ 레오 : 잘 했어! 이 기능에는 부활절 달걀도 있습니다. 찾았습니까? : D
Greg Martin

어 ... 아니요 :(
Leo

하나의 9 개 요소 집합을 다른 9 개 요소 집합에 매핑하려면 8의 다항식 만 필요합니다. 특정 출력 값에 매핑 된 입력 값이 하나 더 있다는 (올바르게) 결론을 그릴 수 있습니다. 당신이 그것을 발견하면 알려주십시오 :)
Greg Martin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.