숨겨진 반전 (고무 스레드)


16

이것은 퍼즐입니다. 경찰의 실은 여기 에서 찾을 수 있습니다.

당신의 임무는 왼쪽 역을 수행하는 경찰 스레드에서 제공된 프로그램의 아나그램을 찾는 것입니다.

답변을 해독 한 후 솔루션을 아래 답변으로 게시하고 원래 답변자에게 알립니다.

당신은 당신이 처음 크랙 한 프로그램의 수에 따라 점수를 받게됩니다.

답변:


21

파이썬 3, 46 바이트,

lambda x0223334566789:(x0223334566789*89)//178

"원래 답변자에게 알리려면"어떻게합니까?
GB

원본에 대한 귀하의 답변을 링크로 남겨주십시오
Sefa

f=코드의 시작 부분에 필요하지 않고 원래 기능의 일부가 아니기 때문에 코드를 삭제해야 합니다.
0 '

완료, 너무 빨리 복사하여 붙여 넣었습니다.
GB

16
여기서 나는 실제로 해결책을 강요하고 (하나라도 존재한다고 가정하더라도) 당신은 전체 문제를 회피합니다! +1
orlp

14

파이썬 2, 225 바이트, orlp

p=90930641353124136621573325641513715557077985927835294018496194596645372722158;q=101979812089012306249375934082966806799688507587087308196267706260111970225882#--223444799
lambda n:pow(n,pow(65537,(p*q-2*(p+q))/4,p*q),~p*~q)

내가 추측 운이있어추측 임의 주요 약수를 하루 종일 ...

(기본 c4.8xlarge spot limit은 4이지만 작년에는 10으로 충돌했습니다. FAAS 구성을 16 슬레이브에서 6 but (+3 mpi, 1 master)로 조정해야했습니다 .20m polyselect, 12h 50m sieving, 2h 25m linalg, 30m sqrt. 총 비용 ~ $ 70. 최소한 @orlp는 해결할 수있는 크기를 선택하기에 충분했지만 다시는하지 않겠습니다! 마지막 단계를 위해 @IlmariKaronen에게 감사드립니다. 추측 : P)


내가 .. 무슨 ... 지금은 내가 의도적으로 여전히 합리적으로 작은 것 크기를 집어하지만 너무 높은 비용 공격에 :( 당신에게 돈을 비용에 대한 나쁜 생각 나는 실제로 사람이 돈을 쓸 것이라고 생각하지 않았다..
orlp

1
@orlp 나에게 일회성 경험으로 가치가 있습니다. 나는 사람들이 이것으로부터 512 비트 RSA 보안에 대해 배울 것을 희망한다. :)
Sp3000

이것은 시간뿐만 아니라 돈을 소비하면서 골프에 대한 헌신입니다! 흥미롭게도 공격자는 클라우드 컴퓨팅 서비스 시험을 통해 512 비트 RSA를 무료로 중단 할 수 있습니다.
마일

@ 마일즈 나는 누군가가 시도하고 싶다면 AWS가 학생들에게 크레딧을 제공 한다고 언급해야하며 다른 서비스가 동일한 경우에도 놀라지 않을 것입니다. 따라서 당신은 아마도 처음으로 그 시련 아이디어에 그리 멀지 않을 것입니다. (누군가도 시도를 원한다면 스토리지에 요금이 청구되므로 모든 볼륨, AMI 등을 삭제 한 후 확인하십시오.)
Sp3000

11

파이썬 2, 83 바이트, orlp

기발한:

#((()))****+,,---/2289;==oppppppqqqqqw~~
lambda n:pow(n,65537,10998167423251438693)

갈라진 금:

p=3207399658;q=3428998126#--11
lambda n:pow(n,pow(65537,(p*q-2*(p+q))/4,p*q),~p*~q)

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

Wolfram Alpha에 의한 RSA 크래킹 . ;)


방금 ~p*~q보다 짧습니다 -~p*-~q. 죄송합니다.
orlp

(p*q-2*(p+q))/4그래도 부품을 어떻게 리버스 엔지니어링 했습니까? :)
orlp

가장 까다로운 부분이 아니 었습니까? 기본적으로 Carmichael 기능에 대한 지식 p/2q/2둘 다 이상한 소수 라는 사실 과 사용 가능한 문자를 사용하여 작동하는 무언가를 찾는 시행 착오에 대한 지식 .
Ilmari Karonen

나는 의도적으로 선택 p하고 q(진짜 기적은, 코드의 하나입니다 p-1q-1그러한 목적을 골프에 대한) (p-1)/2우리가 가지고 주요 그래서이입니다 φ(φ(pq)) = ((p-1)/2-1)((q-1)/2-1). 이것은 우리의 모듈 역 계산 할 수 있습니다 65537모드를 φ(pq)우리는 모듈 식 역 논리를 구현하거나 또 다른 큰 상수를 하드 코딩 할 필요가 없기 때문에 많은 짧은 대답을, 오일러의 ID를 사용하여 (우리가 RSA를 위해 필요). -~q*-~p-> 외에도 ~q*~p당신은 정확히 내 기능을 발견했습니다 :)
orlp

1
사실, 저는 믿습니다, 미성년자의 니트를 선택하는 φ(φ(pq)) = 2((p-1)/2-1)((q-1)/2-1)안전 소수를 위해 p하고 q있기 때문에 φ(4) = 2. 그러나 λ(φ(pq)) = lcm(2, (p-1)/2-1, (q-1)/2-1)기껏해야 ((p-1)/2-1)((q-1)/2-1)/2되며, 그 중 하나에서 1을 뺀 것은 지수를 위해 할 것입니다. :)
Ilmari Karonen

7

Python 3, 80 바이트, Wolfram

from bisect import*
q=int(input())
print(bisect([(h+1)**2 for h in range(q)],q))

이것은 정말로 깨지기 어려웠다! 파이썬 3 배포판에 포함 된 bisect 라이브러리를 사용합니다 . 이 bisect함수는 정렬 된 목록과 요소를 가져오고 순서를 유지하기 위해 요소를 삽입 할 수있는 가장 오른쪽의 인덱스를 반환합니다. 우리는 그것으로 q시작하는 사각형 의 길이 목록 1과 요소를 제공 q합니다.


1
로 변경 (h+1)을 제안하려고 했습니다 -~h. 그리고 나는이 문제의 요점이 아니다 것을 깨달았다 : P
ETHproductions

@ETHproductions 어쨌든 연산자 우선 순위로 인해 올바르지 않습니다.
Sp3000

@ Sp3000 허, 파이썬 **보다 우선 순위가 높은 것은 전혀 몰랐습니다 ~. -~2**2구문 오류가 발생하는 JS보다 낫다고 생각합니다 ( "** '의 왼쪽에는 괄호로 묶이지 않은 단항 표현식을 표시 할 수 없습니다).
ETHproductions

@ETHproductions 그들은 실제로 내가 추가 할 수 있습니다로,이다, 피하고 모호성, 해당했다 매우 대부분의 JS 디자인의 특색.
Esolanging 과일

@ Challenger5 사실, 나는 당신과 동의하지 않을 것입니다. 최근에 TC39는 추가 된 새로운 기능에 가능한 한 모호함 ( **ES2017에 추가 된 운영자 포함)이 완전히 없어 지도록 매우주의를 기울 였습니다.
ETHproductions

6

자바 스크립트, 21 바이트 Arnauld

기발한

b=>Math.pow(b,torc=3)

갈라진 금

o=>Math.cbrt(o,pbw=3)

큐브 루트를 반환합니다.


당신은 간다! ;)
Arnauld 2012 년

@ Arnauld : JS가 정의 된 것보다 많은 인수로 함수를 호출 할 수 있다는 것이 조금 이상합니다. 나는 그 생각이 무엇인지 궁금합니다.
Emigna

6
맞습니다. JS는 의도적으로 그것을 허용합니다. 추가 인수는 함수가 수동으로 액세스 할 수있는 arguments 객체에 저장되므로 완전히 손실되지 않습니다 .
Arnauld

5

7, 9 바이트, ais523

00000000: 0173 dc25 7e13 dcb6 1f                   .s.%~....

무차별 대입이 항상 이기고 9! 362880입니다


4

Processing.js, 59 바이트, Kritixi Lithos

기발한:

float igetuwebaoli(int p){return p*(((17*-4*-3)))+0+0;}//,,

갈라진 금:

int loabewuteg(float p,i){return (i+0**+0,(p/17/(-4*-3)));}

글쎄, 그것은 충분히 쉬웠다. 가장 어려운 부분은 여분의 쉼표와 별표를 붙일 위치를 알아내는 것이 었습니다. 다행스럽게도 Processing은 C 스타일 쉼표 표현식뿐만 아니라 여분의 사용되지 않는 함수 매개 변수를 허용하는 것으로 보입니다.


1
분명히 내가 연결 한 통역사가 틀렸다. 실제로 Processing-java가 Processing.js로 사전 컴파일되므로 대부분의 (또는 모든) 온라인 인터프리터가 잘못 될 수 있습니다. 지금은 최선의 조치가 나에게 있다고 생각하며 처리 대신 "Processing.js"로 답을 변경하면 대답이 유효하기 때문에 (Processing-java는 많은 오류를 발생시킵니다). Processing-java와 동일한 코드로 별도의 답변을 게시 할 것입니다. 그러나이 경우 중첩 인터프리터는 processing.org에서 설치합니다. 어쨌든 잘했다!
user41805

4

자바 스크립트 (ES6), 63 바이트, SLuck49

기발한:

x=>eval(atob`eCp4KzEvLyAgfXBModLS4TvEn4wp1iys9YRRKC85KLIhNMC=`)

갈라진 금:

x=>eval(atob`CgpNYXRoLnBvdyh4LTEsMC41KSAvLw4589CEIKKMRefipyz=`)

위의 base64 코드는 다음을 디코딩합니다.



Math.pow(x-1,0.5) //...

어디 ... 주석에 있기 때문에 JS 인터프리터가 무시하는 임의의 가비지 무리를 나타냅니다.

시행 착오 로이 솔루션을 찾았습니다. 결국, 유일하게 정말 까다로운 부분이 제대로 나머지 라인을 구성하고 얻을하는 데 필요한 코드의 시작 부분에 두 줄 바꿈이었다 MMath원래의 문자 세트에서 사용할 수 무언가에 base64로 인코딩은. 먼저 공백을 시도했지만 " M"base64로 인코딩하고 나중에 코드에서 인코딩 할 "ICBN"수있는 유일한 기능이 필요했습니다 . , ,B".po""0+M""1*M""1?M" 또는 내가 생각할 수있는 다른 유사한 무 조작 접두사 중 하나가 작동하지 못했지만, 뉴 라인했다.

이것이 이것이 의도 된 해결책은 아니지만 의심 할 여지없이 작동합니다. :)

데모:

var f = x=>eval(atob`eCp4KzEvLyAgfXBModLS4TvEn4wp1iys9YRRKC85KLIhNMC=`)
var g = x=>eval(atob`CgpNYXRoLnBvdyh4LTEsMC41KSAvLw4589CEIKKMRefipyz=`)
for (var i = -0; i <= 10; i++) console.log(i, '->', f(i), '->', g(f(i)))


효과가있는 것을 찾는 좋은 직업, 나는 처음에 여분의 캐릭터를 넣는 것이 좀 더 어려워
지기를 바랐다

인상적 :) 나는 똑같은 접근법을 취했지만 개행을 시도하지는 않았습니다. 나는 다른 곳에서 C를 잃어 보려고했지만 아무데도 갈 수 없었습니다.
Chris M

3

Brain-Flak, 26 바이트 밀 마법사

원본 (13 개 추가)

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

균열 (감산 13)

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




3

자바 스크립트 (ES6), 46 바이트, SLuck49

원본 (ln (x + 1) 계산)

x=>Math.log(x+(+String(t=985921996597669)[5]))

갈라진 금

x=>Math[(lg=19979699+55686).toString(9+25)](x)

역수가 Math내장되어 있다는 것을 깨닫지 못했다면 결코 이것을 깨지 않았을 것 입니다 . (lg=19979699+55686).toString(9+25)돌아 오는 복잡한 방법입니다 "expm1".


잘 했어요! 그래, 나는 Math의 기능을 살펴보고 무엇을 사용해야할지 결정하고 expm1"잠깐만 요."라고 말했습니다.
SLuck49

2

J, 10 바이트, 마일

1%:@*~>:[<

답이 너무 짧기 때문에 여기에 뭔가를 써야합니다.


2

J, 29 바이트, Zgarb

기발한

5#.[:,(3 5&#:(-$]-)7)#.inv"0]

갈라진 금

[:(](07-5)"3 #.-:&#$,)5#.inv]

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

또 다른 균열은

[:((3 ]7-5)#.-:&#$,)5#.inv"0]

설명

[:(](07-5)"3 #.-:&#$,)5#.inv]  Input: integer n
                            ]  Get n
                      5        The constant 5
                       #.inv   Get the digits of n in base 5
[:(                  )         Operate on those digits D
                    ,            Flatten D (does nothing since it is already a list)
                  #              Get the length of D
               -:&               Halve it
                   $             Reshape D to half its length (only the base 2 digits)
    (07-5)"3                     The constant 2 with rank 3
             #.                  Convert the front-half of D to a decimal from base 2
   ]                             Return the right result

그렇습니다. 내 솔루션과 약간 다르지만 많은 여유가 있습니다. 기본 논리는 동일합니다.
Zgarb
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.