코드 변경, 시퀀스 변경 : 경찰


27

이것은 도전입니다. 강도 실의 경우 여기 로 이동 하십시오 .

이 과제에는 경찰이 선택한 2 개의 OEIS 시퀀스 ( S 1 , S 2) 와 해당 시퀀스를 얼마나 잘 골라 내고 난독 처리 할 수 ​​있는지가 포함됩니다.

경찰의 도전

경찰이해야 할 일은 자유롭게 사용할 수있는 언어 와 두 개의 OEIS 시퀀스 를 선택하는 것 입니다. 그런 다음 입력 n 을 취하고 S 1 (n)을 생성 하는 해당 언어로 코드 A 를 작성하십시오 . 해당 코드가 X 문자 (X 이하 ) 의 Levenshtein 거리 에 의해 수정되고 같은 언어 로 코드 B 로 바뀌면 S 2 (n) 을 생성해야합니다 . 실제로이 코드 B를 작성해야 하지만, 도전이 안전해질 때까지 공개하지 마십시오 (아래 참조).0.5 * (length A)

경찰의 제출에는 언어 이름, 전체 코드 A , 바이트 수 A , 비밀 B 코드 에 대한 변경 횟수 X 값 및 선택한 S 1S 2 시퀀스 번호가 포함되어야합니다. 각 순서가 0 색인인지 1 색인인지를 선택할 수 있지만 제출시이를 지정하십시오.

특정 제출 균열, 강도는 프로그램을 마련한다 C S 생성 동일한 언어 (및 버젼)에서 2 (N)를이고 Y의 캐릭터로부터 멀리 변화 (함께 ). 강도는 경찰이 비밀리에 생성 한 것과 동일한 B 코드를 반드시 찾을 필요는 없습니다 .Y <= X

승리와 득점

경찰의 답변이 7 일 (168 시간) 내에 크랙되지 않은 경우 자신의 B 솔루션을 공개 할 수 있으며이 시점에서 귀하의 답변은 안전한 것으로 간주됩니다. 해결책을 밝히지 않는 한 7 일이 지난 후에도 여전히 강도에 의해 해킹 될 수 있습니다. 답변에 금이 가면 답변 헤더에 해당 강도의 답변 링크와 함께 표시하십시오.

경찰은 A 가 가장 짧은 무단 제출로 승리합니다 . 묶인 경우 가장 작은 X 가 타이 브레이커로 사용됩니다. 여전히 묶여 있으면 이전 제출이 이길 것입니다.

추가 규칙

  • 해시, 암호화 또는 난수 생성에 난수 생성기를 고정 된 값으로 시드하더라도 내장 기능을 사용해서는 안됩니다.
  • 프로그램이나 기능이 허용되지만 코드는 스 니펫이 아니어야하며 REPL 환경을 가정해서는 안됩니다.
  • 편리한 형식으로 입력하고 출력 할 수 있습니다 . 입력 / 출력 방법은 두 시퀀스에서 동일해야합니다.
  • 이 문제에 대한 Levenshtein 거리의 결정적인 계산기는 이 하나의 행성 석회질합니다.
  • CnR 챌린지 일뿐만 아니라 이것은 이므로 일반적인 모든 골프 규칙이 적용됩니다.

또한이 질문에서 무언가를 변경하면 강도를 업데이트해야합니다.
mbomb007

경찰이 시퀀스를 생성하는 실제 코드와 관련하여 함수 / 변수의 이름을 실제로 크게 지정하면 어떻게 될까요? 이 경우에 그 거리가보다 작은 시퀀스를 만들 수 있습니다.(0.5*len(A))
hashcode55

@ hashcode55 두 가지-1) 경찰의 실에서 이길 수있는 좋은 후보는 아닐 것입니다. 2) 엄청나게 큰 강도라면 강도들에게도 좋은 기회가됩니다.
AdmBorkBork

1
" 이것은 코드 골프이므로 모든 일반적인 골프 규칙이 적용됩니다. "이것은 코드 A 가 가능한 한 많이 골프를 쳐야하거나 코드 B 와 더 유사하게하기 위해 너무 장황하고 어색한 방식으로 의도적으로 작성 될 수 있다는 것을 의미합니까 ?
smls

답변:


10

뇌 - 플랙 , 28 바이트, 4의 거리, A002817 , A090809

이 답변은 1- 인덱싱을 사용합니다

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

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

관심있는 사람이라면 누구나이 프로그램에서 Levenshtein 거리 4를 가진 27475 유효한 Brain-Flak 프로그램과 거리 4 이하를 가진 27707이 있습니다. 따라서 소비자 급 컴퓨터에서는 무차별 대입 솔루션을 실행할 수 있습니다.


X = 4대신에 읽는 것이 더 짧고 빠릅니다 Levenshtein distance of 4.
mbomb007

1
@ mbomb007 도전이 혼란을 피하려고하는 일을 위해 많은 문자 변수를 사용하면 개인적으로 약간 혼란 스럽습니다. 혼란을 일으키지 않고 지금은 더 짧게 만들었습니다.
밀 마법사

어깨를 으 .하다. 모든 사람이 질문을 읽으면 이해해야합니다. X실제로 그들이 알아야 할 유일한 변수입니다.
mbomb007

@ mbomb007 그러나 질문은 바이트 수를 요구합니다.
DLosc


6

7 , 33 문자, 13 바이트, X = 10, A000124A000142 , 안전

171720514057071616777023671335133

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

Levenshtein 거리는 문자로 측정되므로 위에 포함 된 문자로 프로그램을 작성했습니다 (언어 자체를 포함하여 온라인으로 시도하십시오!는 ASCII로 인코딩 된 프로그램을 실행하는 것이 좋습니다). 그러나 프로그램은 7의 서브 바이트 인코딩을 사용하여 디스크에 저장됩니다. 이는 프로그램 자체가 실제로 다음 16 진 (길이 13 바이트)임을 의미합니다.

00000000: 3cf4 2982 f1ce 3bfe 13dc b74b 7f         <.)...;....K.

(레 벤슈 테인 거리는 문자로 측정되므로 반드시 여기에 10 바이트를 추가 / 삭제 / 변경할 필요는 없으므로 원본 ASCII로 작업하는 것이 가장 좋습니다.)

작성된 프로그램은 A000124 (삼각수 + 1)를 구현합니다. 모든 균열은 A000142 (공장)를 구현해야합니다. 두 프로그램 모두 stdin에서 입력을 받아 (10 진수 정수로) 출력을 stdout에 쓰고 1의 입력을 시퀀스의 첫 번째 요소 (2의 입력 등)로 간주합니다.

X 값이 매우 높으면 이번에는 사람들이 프로그램을 강요당하는 것을 막을 수 있기를 바랍니다 (7의 경찰과 도둑이 항상 위험합니다).

해결책

177172051772664057074056167770236713351353

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

원본과의 차이점 :

17 172051 405707 1 61677702367133513 3
17 7 172,051 77,266 405,707 405 61,677,702,367,133,513 5 3

이러한 작업 방식에 대한 설명이 없으므로 설명을 거의 얻지 못하므로 설명을 얻는 데 시간이 걸립니다. 희망적으로 결국 설명이있을 것입니다.




3

Perl 6 , 13 바이트, X = 1, A161680A000217

안전한!

{[+] [,] ^$_}
  • S 1 = A161680 = 0 0 1 3 6 10 15 21...= 0 다음에 삼각형 숫자가옵니다.
  • S 2 = A000217 = 0 1 3 6 10 15 21 28 ...= 삼각수.
  • 인덱스가 0입니다.

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

(TIO에서 실행되는 Perl 6 버전과 작동하는지 확인했습니다.)

해결책

{[+] [\,] ^$_}

원본 작동 방식 :

{           }  # A lambda.
          $_   # Lambda argument.                     e.g. 4
         ^     # Range from 0 to n-1.                 e.g. 0, 1, 2, 3
     [,]       # Reduce with comma operator.          e.g. 0, 1, 2, 3
 [+]           # Reduce with addition operator.       e.g. 6

솔루션 작동 방식 :

{            } # A lambda.
           $_  # Lambda argument.                     e.g. 4
          ^    # Range from 0 to n-1.                 e.g. 0, 1, 2, 3
     [\,]      # Triangle reduce with comma operator. e.g. (0), (0,1), (0,1,2), (0,1,2,3)
 [+]           # Reduce with addition operator.       e.g. 10

또한 같은 수치 연산자 그래서 합이 예에서, 요소의 수 등의 목록을 치료한다는 사실을 이용한다 1 + 2 + 3 + 4 = 10.

그렇습니다. 원본의 "쉼표 연산자로 줄이기"no-op는 다소 코드 골프 규칙을 따르지 않지만 가능한 한 많이 골프 된 (빈칸 등) 바보 같은 알고리즘으로 보는 것을 선호합니다. 이게 뭐야 ... :)


내가 시간이나 성향 (그리고 펄에 대한 지식)을 가지고 있다면 이것은 무자비한 강요를 요구합니다.
Rohan Jhunjhunwala

이것은 안전하다고 표시 될 정도로 오래 살아 남았습니다
fəˈnɛtɪk


2

자바 스크립트, 41 바이트, 거리 3, A061313 , A004526 , 크랙

f=x=>{return x>1?x%2?f(x+1)+1:f(x/2)+1:0}

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

1 기반 인덱싱을 사용하고 솔루션은 0 기반 인덱싱을 사용합니다.

다시 한 번 다른 솔루션은 ...

f=x=>{return x>1?x<2?f(x-1)+1:f(x-2)+1:0}


3
그건 그렇고, 당신은 tio.run 영구 링크를 사용해서는 안됩니다 . 그들은 곧 작동을 멈출 것입니다.
Dennis

^ 대신 tio.run/nexus 를 사용하십시오 .
mbomb007


1

WolframAlpha, 18 바이트, X = 1

math_junkie에 의해 금이!

(sum1to#of n^1)*2&

때때로 WolframAlpha는 실제로 이와 같은 순수한 기능을 기능적인 형태로 표시 할 수 있습니다 (다른 경우에는 혼동 될 수 있음). 그러나 주어진 입력 값 (예 : (sum1to#of n^1)*2&@5yields) 으로 기분 좋게 호출 할 수 있습니다 30.

S1 = A002378 (프로 닉 숫자)

S2 = A000537 (첫 번째 n큐브의 합 )

두 시퀀스 모두 0 인덱스입니다.




1

자바 스크립트, 15,704 바이트, 2, 거리 A059841A000004은 -

이 솔루션은 매우 길기 때문에이 github 요지에서 전체 코드 찾을 수 있습니다 .

원래 답변 (이 답변)은 1 색인입니다. (이것이 너무 길다는 것을 알고 있습니다. 재미 있습니다.)


금이 . 또한, 절대적으로 쓸모없는 코드를 추가하는 것이 더 이상 규칙의 정신이 아닙니다
fəˈnɛtɪk

아시다시피이 답변은이 과제의 OP에 몇 가지 문제를 야기합니다. 분명히 전체 페이지가 스케치 JavaScript처럼 보이기 때문에 전체 페이지가 차단 됩니다. 코드를 외부 링크에 넣을 수 있습니까? (Gist, pastedump 등)
DJMcMayhem

사실, 나는 그것을 요지에 넣었습니다. 어딘가에 코드를 사용하려면 경계를 넘어 서면 자유롭게 다시 편집하십시오.
DJMcMayhem

! + []-(! + [])는 변환을 되돌릴 수 없도록 만듭니다. 그러나 다른 쓰레기 중 일부는 더 길어집니다. 동등한 코드는 15640 바이트입니다.
fəˈnɛtɪk


0

자바 스크립트, 30 바이트, 거리 4, A000290 , A000079 , - 깨짐!

f=x=>{return x?2*x-1+f(x-1):0}

0 기반 인덱싱

@ Kritixi Lithos의 솔루션은 실제로 내 것과 다릅니다

f=x=>{return x?f(x-1)+f(x-1):1}

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


1
이것은x**22**x
Kritixi Lithos

나는 그것이 A000079 가 아니라 A000290 이라고 생각합니다 .
betseg

@KritixiLithos 둘 다 있어야합니다. 다른 쪽 끝을 변경했을 때 상단의 잘못된 시퀀스 링크를 변경했습니다.
fəˈnɛtɪk


0

자바 스크립트 (ES6), 거리가 1이다 A000079A000004 -

as=function(){ return 2*2**((11)*-1*~arguments[0]/11-(4-(as+[]).length%89))-(as+[]).length%7}

원래 답변 (이 답변)은 0을 기준으로합니다. 이제 크랙되었으므로 다음은 원래 B 함수입니다.

as=function(){ return 2*2**((1^1)*-1*~arguments[0]/11-(4-(as+[]).length%89))-(as+[]).length%7}

1
균열 codegolf.stackexchange.com/a/109976/64505 를 사용하여 서로 다른 두 환경간에 일관되지 않은 동작 을 수행 할 수있었습니다 .
fəˈnɛtɪk


0

Java 7, Levenshtein 거리 4, A094683 , A000290 , 금이

int x{double r=1;for(int i=0;i<42;i++)r=r/2+n/r/2;int k=(int)((int)n*(float)n/Math.pow(n,(Math.sin(n)*Math.sin(n)+Math.cos(n)*Math.cos(n))/2));return n%4%2==(int)Math.log10(Math.E)/Math.log((double)'H'-'@')?(int)r:k;}

인덱스가 0입니다.
여기 사용해보십시오!


@LliwTelracs는 음수가 아닌 첫 15 개의 정수에 대해 업데이트 된 답변을 참조하십시오.
peech

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