비밀 스와핑 시퀀스 찾기


19

이것은 도전, 강도 스레드는 여기 에서 찾을 수 있습니다 .

귀하의 작업은 OEIS 시퀀스를 출력하고 코드의 시퀀스 이름 ( A______)을 포함하고 코드 의 시퀀스 이름이 두 번째 시퀀스의 이름으로 변경 될 때 별도의 두 번째 시퀀스를 출력하는 일부 코드를 작성 하는 것입니다.

다음은 Haskell의 예이며 A000217A000290에 적용 됩니다.

f x|last"A000217"=='0'=x^2|1>0=sum[1..x]

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

그런 다음 두 시퀀스 중 하나와 두 번째 시퀀스를 비밀로 유지하는 코드를 공개해야합니다. 강도는 숨겨진 시퀀스가 ​​무엇인지 파악하려고 시도합니다. 강도가 시퀀스가 ​​무엇인지 (또는 기준에 맞는 다른 시퀀스)를 결정하면 관리자가 해킹합니다. 답변을 게시 한 지 1 주일 내에 답변이없는 경우 답변을 안전 하다고 표시 하고 확인을위한 의도 된 해결책을 공개 할 수 있습니다 . 안전한 답은 깨질 수 없습니다.

입출력

여기 에서 찍은

코드는 취하는 함수 또는 전체 프로그램 일 수 N 은 A 표준 입력 방식을 통해 출력하는 N OEIS 페이지의 인덱스에 의해 인덱스로서 서열 번째 용어.

해당 순서에 대해 OEIS b 파일에 제공된 모든 값을 지원해야하며 b 파일에없는 숫자는 지원할 필요가 없습니다.

채점

점수는 코드의 바이트 수이며 적은 바이트가 더 좋습니다.


1
점수는 코드의 바이트 수이며 적은 바이트가 더 좋습니다. -왜이 태그가 code-golf가 아닌가?
Mr. Xcoder

@ Mr.Xcoder 내가 잊어 버렸습니다. 이 내용을 너무 많이 읽지 마십시오;)
밀 마법사

그래서 코드는 어떤 길이의 시퀀스 (정의되었거나 그렇지 않습니까?) 또는 시퀀스의 n 번째 요소를 출력해야합니까?
Dead Possum

@DeadPossum n 번째 항 입니다.
Mr. Xcoder

@WheatWizard는 내가 다른 곳을 찾고 있다고 생각하지만 모니터. 내 나쁜
죽은 Possum

답변:



5

파이썬 3 , 62 바이트, A017016 ( 크랙 )

n=int(input())
print(sum(1for i in"A017016"if i>"0")*-~n//-~n)

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


가능한 한 난독 화하려고 노력했습니다 ...
Mr. Xcoder

1
@officialaimm 나는 의도적으로 그 일을했다. 나는 이것을 난독 화시키고 싶다. 파이썬은 코드 골프 난독 화 콘테스트에서 우승하지 않기 때문에 골프에 관심이 없습니다 .p
Mr. Xcoder


그건 그렇고, 그 의도 된 해결책입니까?
완전히 인간적인

@totallyhuman 그래, 의도 된 해결책이었다.
Mr. Xcoder

4

Japt , 13 바이트 ( 크랙 )

다른 누군가가 찌르기를 원한다면 적어도 하나의 다른 해결책이 있습니다.

p#A000012uCnG

온라인으로 시도
A000012


설명

#JAPT 그래서, 우리에게 그 문자의 charCode 값을 제공에 문자 뒤에 #A=65숫자의 나머지 부분은 다음 우리에게주는 추가됩니다, 65000012또는 65000290.

u는 모듈로 방법입니다 ( %항상 양수를 반환한다는 점과 다릅니다 ).

n메소드는 전달 된 숫자에서 적용된 숫자를 뺍니다. C그리고 G, 각각 11 및 15에 대한 JAPT 상수이다. 그래서 CnG우리에게 4.

우리는 지금이 65000012%4=065000290%4=2. 이 p메서드는 U전달 된 숫자의 거듭 제곱에 적용되는 숫자 (이 경우 암시 적으로 입력 정수 )를 제곱하여 U**0and 의 두 가지 최종 공식을 제공 U**2합니다.



1
@officialaimm : 정확하고 훌륭합니다.
Shaggy

나는 Japt를 모르기 때문에, 제기 될 권력은이라고 가정했다 (sum_of_numbers_in_oeis(excluding 'A') + 1)%4. : D
officialaimm

1
@officialaimm : 나는 그들이 모르는 언어로 강도 균열 문제를 보는 것을 좋아합니다. :) 실제로 Japt에 익숙하지 않은 누군가가 그것을 깨뜨릴 것이라는 희망으로 이것을 게시했습니다.
Shaggy

문자열 입력이 허용되는 경우 (1- 인덱스) A020338작동 할 수 있습니다 .
버블 러

4

MATL , 30 29 바이트 ( 크랙 )

A077430I\2-|Gw^1Mwx*10&Ylk1+&

A077430

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

@Sanchises 덕분에 -1 바이트


1
지금 수정해야합니다
Cinaski

1
힌트 : '3' I을 1 바이트로 바꿀 수 있습니다 .
Sanchises

@Sanchises 감사합니다! 몰랐습니다 I3으로 초기화
Cinaski

2
표 3을 확인해야합니다. l(1)과 O(0) 과 함께 MATL 프로그램에서 공백을 사용할 필요는 거의 없습니다. 관련 메모에서 표 7을 확인하십시오. 여기에는 유용한 사전 정의 된 많은 상수가 포함되어 있습니다 (예 : 4X2Z%속기 등 1Z%)
Sanchises



3

파이썬 2, 43 바이트, A000079 ( )

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

lambda n:((sum(map(ord,'A000079'))*2)%8)**n


@ TheLethalCoder 잘 .. 그것은 맞지만 내가 선택한 것은 아닙니다. 또한 귀하의 의견을 편집하기 전에 편집 한 결과 더 이상 맞지 않습니다
Dead Possum

5
게시 후 변경 했습니까? 약간 불공평합니다.
TheLethalCoder

@TheLethalCoder 나는이 거짓 양성 시퀀스로부터 보호하기 위해 그것을했다 : C
Dead Possum

1
항목을 편집하는 방법은 모르지만 OP의 규칙에서 " 강도가 강도 (또는 기준에 맞는 다른 시퀀스)를 결정하는 경우 FYI 만 발생합니다."
alleks

3

C #, 75 바이트, ( Cracked )

n=>{int r=1,e=3-0xA000244%2;for(;n>0;e*=e){r*=(n%2>0?e:1);n>>=1;}return r;}

A000244

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



@ 린 무엇을 줬어? 첫 번째 순서?
TheLethalCoder

3
당신은 OEIS 번호를 복용 % 2- 프로그램이 수 말 그대로 두 가지 할 그 결과에 따라 : 하나 0와 하나를 1. 그래서 나는 그 자리에 홀수를 넣었고, 그 도전은 다소 깨졌습니다.
Lynn

@Lynn Ah는 그 부분을 난독 화하지 않았다고 생각했습니다.
TheLethalCoder

2

Python 2 , 53 바이트, A000012 [cracked]

lambda x:len(`x**(sum(map(int,'A000012'[1:]))==22)`) 

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

다음 순서는 A055642 (10 진수의 자릿수 길이)입니다. OEIS의 자릿수는 22와 같기 때문에 숫자는 자체적으로 평가됩니다. 따라서 len (...)은 'A055642'에 대한 입력 숫자의 실제 길이를 계산합니다. 시퀀스 A000012 (또는 A055642 이외의 것)의 경우, len은 항상 1과 동일합니다. 증발 된 숫자는 '1'이기 때문입니다.



1

Python 3, 65 바이트, A000027, 크랙

a=lambda a,n=((int("A000027",11)-0x103519a)%100%30+1)/2:a//(14-n)

예이 미친 산술!


음, A004526은 n=12어느 것이 옳은지 보여 주지만 결과는 하나의 색인으로 사라질 것입니다 .
Jonathan Allan

둘 다; A004526을 잘못 해석했습니다 a(n) = floor(n/2). 나열된 순서는 0으로 시작합니다. 그러나 이것이 의도 된 솔루션입니다.
pppery

아 그래, 오프셋-맞아. 그럼 금이 간 .
Jonathan Allan

1

스몰 토크, 148 바이트, 안전!

|x o|x:=(16rA018253*0.00861-1445345)floor. o:=OrderedCollection new. 1 to:x/2 do:[:i|x\\i=0 ifTrue:[o add:i]].o add:x.^o at:stdin nextLine asInteger

A018253

정수를 입력으로 취하고 순서는 1부터 시작합니다.

의도 된 제 2 시퀀스는 A133020 이다. A018253에 대한 글 에는 숫자의 제수와 관련된 시퀀스의 항목 목록에 대한 링크 가 있습니다 . 이 목록에서 A133020제곱의 제수 아래에 있습니다 : 100² . 전체 시퀀스를 보려면 코드에서 Transcript show: o printString; cr.return ^문 앞에 삽입하십시오 .


1

하스켈, 226 바이트, 안전!

영리하거나 추악한 지 확실하지 않을 수도 있습니다.

o n=read.pure.(!!n)$"A001906"
m::Integral a=>[a->a->a]
m=[const,(+),(-),(*),div,(^)]++(flip<$>m)
l=o 1:o 3-o 1:zipWith(m!!(o 6+o 3-o 2))(tail l)l
f=(l!!).((m!!(o 4+o 5+o 6-2*o 1-o 2))$sum[1|n<-[1..6],odd(o n)]).((m!!o 6)$o 3)

이제 A001906을 계산 하지만 많은 시퀀스를 생성 할 수 있어야합니다.

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


솔루션 : A131078

이것이 너무 어려웠거나 아무도 시도하지 않았는지 궁금하십니까?

o 1o 6일련 번호의 자리입니다, m작업의 목록입니다. l는 일련 번호에서 파생 된 첫 번째 두 값과의 고정 연산을 사용하여 이전 두 값에서 계산 된 나머지 두 값을 가진 재귀 적으로 정의 된 무한 목록입니다 m. A001906의 경우 정의를 다음과 같이 단순화 할 수 있습니다.

l=0:1:zipWith(flip(+))(tail l)l

(flip(+))는 (보통)과 같 (+)으며 피보나치 수의 잘 알려진 (최단은 아님) 정의를 얻습니다. 이 재귀 체계는 A001906을 직접 계산할 수 있지만의 재귀 연산보다 복잡한 연산이 필요합니다 m. 또 다른 예 : 시작 값 12연산을 (*)사용하면 A000301 시리즈가 나타납니다 . 일련 번호가로 대체되면 코드로 계산됩니다 ?103206.

마지막으로 함수 는 입력으로 변환 된 후에 만 flist로 색인을 생성 l합니다. A001906의 경우 중간 부분이로 줄어들어 (*)2피보나치 수는 짝수 위치에서만 얻습니다. 오른쪽 부분은 flip const 1아이덴티티 함수이며 더 이상 간섭하지 않습니다.

용액의 경우 A131078의 개시 값 l이다 1하고 0, 상기 동작은 flip const수있는 l1,0,1,0,.... 의 중간 부분 f(flip div 4)결과가됩니다 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,.... 이것은 나는 톱 A131078 그 시작에 좋은 답변처럼 보였다하지만 n=1나는 오른쪽의 추가, 그래서 f여기, flip(-)1하나를 빼야합니다.

내 생각은 m일련 번호의 숫자로 숫자를 사용 하여 색인을 작성 하여 조금 난독 화 하게하고 작동하도록하기 위해 더 난독 화되었습니다 (복잡한 용어). 그런 다음 f실제로 작동하도록 훨씬 난독 화되었습니다 (의 오른쪽 부분 ). 아직도 나는 추측하고 노력하는 것이 그것을 깨뜨릴 수 있다고 생각합니다.


나는 몇 가지 시퀀스를 시도했으며 일반적으로 0 오류, 음의 지수 오류로 나누거나 영원히 실행되는 것처럼 보였습니다. 솔직히 말하면, Haskell은 나를 놀라게합니다 . 절차를 너무 오래 보냈다고 생각합니다.

방금 시도하는 경우 솔루션에서도 주어진 경우 "음의 색인"오류가 발생하는 추가 문제가 0있습니다. 그것만 시작하기 때문에 괜찮습니다 1! 1또한 시작시 "0으로 나누기"오류 중 일부가 제거되어야합니다. 나는 영원히 실행되는 예에 놀랐습니다. 이 경우 인덱스 변환이 매우 큰 값을 생성 할 수 있습니다.
Christian Sievers


0

Python 3.6, 114 바이트, 크랙

from random import*
g=lambda n:eval(''.join(Random("A005843").choices('n8-9+17n#8*+26%n1 32-3+4-545*-#6*7',k=34)))

A005843

g(n) n> = 0에 대한 시퀀스의 n 번째 값을 반환합니다.

random.choices(s,k)Python 3.6의 새로운 기능 으로 대체 k항목에서 선택한 항목 을 반환 합니다 s.


암호화 / 해싱과 매우 흡사합니다.
pppery

@ppperry-규칙에 위배되는 경우 제거하겠습니다.
RootTwo


0

Yimin Rong에 의해 크랙 , 67 바이트

2D5B#{*Cm49!}E-7
(A000012d#,zkmsh
b-\6/e2)[1Zv^~^S
33a#kcf3g88taz1@

A000012 . 약간 건방진입니다.

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

i / o에 바이트를 사용하므로 좋았고 bashy / pythony 래퍼를 만들었습니다.


대체 순서는 A060843 입니다. 입력 위해 온라인으로 사용해보십시오1..4 .

Yimin Rong은 바로 이런 칩 칩 프로그램은 아주 간단한 것들만 계산할 수있게했다고 말했다. 원래 시퀀스는 모두 하나이며 대체 시퀀스는 사용중인 비버 번호이며 그 중 4 개만 알려져 있습니다.

이 숫자 1, 6, 21, 107는 입력을 위해 단순히 하드 코딩되어 있습니다 1..4.

이 도전을 위해 칩을 사용하는 방법에 대한 한 가지 흥미로운 점은 자리가 있다는 것입니다 0- 9수 있지만, 논리적 요소가 아니다. 구체적으로 0- 7스택의 헤드를 처리하는 8 비트 8이며 9읽기 및 쓰기 토글입니다. 그것은 이것을 좀 더 흥미롭고 더 난독하게 만들었습니다.

잠재적 공짜는 것입니다 A- D우리는 단지 순서를 색인 4 개 비트를 가지고 있다는 것을 의미 나타납니다. 이는 최대 16 개의 서로 다른 값이있을 수 있음을 의미했습니다. 실제로, 오직 A- C만 실제로 대체 시퀀스에 사용되며 최대 8 개의 서로 다른 값을 제공합니다.

관심이있는 사람들을 위해 다음은 동일한 코드이며 no-ops 및 사용하지 않는 요소는 제거되었습니다.

.

   B  *C 49!
 A000012d ,z  s
b-\6/e   1Zv-~^S
`3a`-cf3g`8taz1

명백한 것을 배제하기 위해 빈 시퀀스로 몰래 들어 가려고하지 않습니다 (예 : A290000 ? 기술적으로 코드에서 0을 입력해도 아무것도 반환하지 않으므로이 시퀀스는 일치합니다!

Ha, 다른 순서에는 적어도 하나의 값이 있습니다.
Phlarx

(반드시, 반례를 찾았습니다. 내 코드는 여전히 1- 색인입니다.)
Phlarx

그래서 나는 그것에 대해 좀 더 조사했고, 아무것도하지 않는 것은 파이썬의 잘못입니다. 0에 대한 출력을 제공하지 않았으므로 코드가 실행되지 않았습니다. TIO 링크에서 수정했습니다. (비트 길이는 1 바이트의 플로어를 제공하십시오).
Phlarx

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