강도-제곱 시간 제곱근


18

작업 : 정수 n의 제곱근에 제곱을 곱하기 위해 스크램블 된 코드를 해독하십시오 !

당신은 그것을 크래킹 했다는 것을 분명히 언급하면서, 당신의 작업 소스에 대한 링크와 함께 경찰 스레드에 코멘트를 게시해야 합니다 . 답변 제목에 원래 답변에 대한 링크를 포함시켜야합니다.

규칙 :

  • 원본 소스의 문자 순서 만 변경할 수 있습니다.
  • 안전한 답변은 더 이상 금이 갈 수 없습니다.
  • 경찰 실에 언급 된 다른 규칙들
  • 당신이 해답을 편집하십시오

수상자 : Emigna-10 개 서브 미션 (계산에 문제가 있음)

존경 할만한 언급 : Notjagan, Plannapus, TEHTMI

답변:



9

자바 스크립트 (ES7), Neil

_26_=>_26_**6.25**.5

물론 어려운 부분은 모든 여분의 캐릭터로 무엇을 해야할지 파악하는 것이 었습니다. (그리고 실수로 처음에 한 것처럼이 솔루션을 잘못된 스레드에 게시하지 않습니다. 죄송합니다 ...)


1
@ SethWhite : Neil이 스크램블 코드에서 사용한 모든 문자를 사용해야했습니다. 그렇지 않으면 유효한 균열이 아니었을 것입니다.
Ilmari Karonen

이것은 어떻게 작동합니까?
Arjun

@Arjun _26_=>은 하나의 매개 변수를 사용하는 익명 함수를 정의합니다 _26_(변수는 밑줄로 시작할 수 있지만 숫자는 아닙니다). 이어서 나머지는 그냥 사용하고 **같은 Math.pow()2.5 (6.25 전원 0.5)의 전력 입력을 인상.
Joe

아! 나는 그것이 _26_ES7과 관련 이 있다고 생각했습니다 . 변수도이 형식 일 수 있다는 것을 몰랐습니다! (알파벳이없는 변수는 본 적이 없습니다). 그것은 @Neil의 매우 영리한 접근법이었습니다. 그리고 당신은 그것을 부수기에 너무 영리했습니다! 당신의 잘 +1해야합니다! :)
Arjun



4

C ++ (gcc) , 100 바이트, Mr. Xcoder

#include<math.h>
#include"iostream"
using namespace std;int main(){float n;cin>>n;cout<<pow(n,2.5);}

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


잘 했어! 지금 할 수 없기 때문에 답을 수정하십시오!
Mr. Xcoder

익명의 사용자가 제거 using하고 방금 수행 하여 8 바이트를 절약하기위한 편집을 제안했습니다.int main(){float n;std::cin>>n;std::cout<<pow(n,2.5);}
Martin Ender

math.h. :) 대신 <cmath>를 포함하여 다른 바이트 #를 저장하십시오.
zyndor

4

하스켈, 레오

x=exp.(2.5*).log

이름이없는 pointfree 함수 x. 용법:x 4 ->32.0


4

통보 7알려 , corvus_192

Cool, Inform7 항목입니다. :) 나는 이것을 시도해보아야했다.

이것이 의도 한 해결책이라고 확신합니다.

R is a room.

To f (n - number): say "[n * n * real square root of n]".

이 솔루션은 real square root of함수 사용으로 인해 Glulx 백엔드로 컴파일 된 경우에만 작동 합니다.


BTW, 큰 따옴표와 대괄호는 실제로 불필요합니다. 그냥 say n * n * real square root of n잘 작동합니다. 명령이 끝날 때의 기간도 생략 할 수 있습니다. 또는 첫 번째 기간을 유지하고 개행을 대신 제거 할 수 있습니다. 우리가 다룰 수있는 코드의 다른 부분에는 "방"앞의 기사 "a"와 괄호 앞과 콜론 뒤의 공백이 포함됩니다. 다행스럽게도 여분의 대괄호 쌍이 있으므로 항상이 대괄호를 사용하여 이러한 모든 추가 문자를 주석 처리 할 수 ​​있습니다. ;) 따라서 이것은 유효한 해결책이기도합니다.

R is room.To f(n - number):say n * n * real square root of n[
" a . "
]

이 솔루션을 대화식으로 테스트하려면 코드에 다음 테스트 하네스를 추가하는 것이 편리합니다.

Effing is an action applying to one number.
Understand "f [number]" as effing.
Carry out effing: f the number understood.

프로그램을 컴파일하고 실행 한 후 f 4. f 6. f 9. f 25, >프롬프트 에서 예 를 들어 다음과 같은 결과를받을 수 있습니다.

Welcome
An Interactive Fiction
Release 1 / Serial number 170404 / Inform 7 build 6L38 (I6/v6.33 lib 6/12N) SD

R

>f 4. f 6. f 9. f 25
32.0
88.18164
243.0
3125.0
>

BTW, 나는 단지 Inform (또는 아마도 Glulx)이 마지막 소수점 이하 자리를 반올림한다는 것을 알았습니다. f 6올바른 값은 88.18164보다 88.18163에 훨씬 가깝습니다. 운 좋게도,이 문제가 "선택한 반올림 메커니즘"을 지정했기 때문에 이것이 솔루션의 정확성에 영향을 미치지 않는다고 생각합니다. :)


얼마 전에 Inform 7 바이올린을 찾았지만 검색 할 때 찾을 수 없습니다. 온라인 통역사가 어디에 있는지 알고 있습니까?
Flounderer

@ Flounderer : 나는 정말로 모른다. Inform 7 컴파일러에 의해 생성 된 Glulx / Z- 머신 바이트 코드를위한 온라인 (JS 기반) 플레이어는 확실히 존재하지만, 일반 Inform 7 소스 코드를 직접 가져 와서 온라인으로 컴파일하고 실행하는 것을 알지 못합니다. 컴파일러 / IDE는 설치가 매우 쉽습니다. Ubuntu Linux에서는 다음과 같이 쉽습니다 apt-get install gnome-inform7.
Ilmari Karonen

4

수학, 그렉 마틴

f[y_]:=With[{x=
    #&@@{#(#)#^(1/(1+1))&@y,#&@@@{1^(1),-1}}
},Print[#,".",IntegerString[Round@#2,10,3]]&@@QuotientRemainder[1000x,1000]]

반올림을 그대로 유지해 주셔서 감사합니다!

설명 : #(#)#^(1/(1+1))&@y곱하는의 주요 작업을 수행 y일명, 제곱을 y(y)하고 y, '제곱근을이야 y^(1/(1+1)). #&@@@{1^(1),-1}비트는 다른 문자를 사용하는 단지 쓰레기이고, #&@@쓰레기에서 유용한 비트를 선택합니다.


4

MATL , 12 바이트, Luis Mendo

10'U&+:'n/^P

문자열 길이에서 4가 나오는 10/4 = 2.5를 계산합니다. 이것을 지수로 사용하십시오. P는 여기에 없다.


4

Python 3, 44 바이트, Kyle Gullion

그것들 *은 상당히 오도되었습니다. 매우 영리한!

lambda i:i**(lambda o,r:o/r)(*map(ord,'i*'))

문자 집합이 매우 제한되어 있기 때문에 사소한 이름 바꾸기 또는 인수 순서 변경 이외의 다른 유효한 솔루션이 있으면 매우 놀랍습니다.


잘 했어!
Kyle Gullion


3

Python 2, 60 바이트, Anthony Pham

print    (input()**(5.0/(2*5554448893999/5554448893840))-0)

Python 2의 float 나누기 ( /정수 사이 의 기본값)를 통한 문자 삭제를 기반으로 합니다.


3

C, 50 바이트, Dave

double b(float \ufa2d){return pow(\ufa2d,25e-1);%>

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

이것은 -lm컴파일러 플래그 가 필요 하지만, 이것이 없으면 어떻게 해결할 수 있는지 모르겠습니다.


정확하고 거의 정확히 내가 가지고있는 것 (변수는 \uad2f내 이름이 지정 되었습니다). 잘 했어; 나는 사람들이 훨씬 더 바쁘게 지낼 수 있도록 충분한 청어를 남길 것이라고 생각했습니다! 또한 -lmClang을 사용하여 플래그가 필요하지는 않았지만 (내가 언급 했었습니다!) 엄격히 말해야한다는 것이 맞습니다.
Dave

3

R, under 치

이것은 @Flounderer의 33 바이트 솔루션의 균열입니다.

scan()^(floor(pi)-1/2)-sin(7*0e1)

용법:

> scan()^(floor(pi)-1/2)-sin(7*0e1)
1: 4
2: 
Read 1 item
[1] 32
> scan()^(floor(pi)-1/2)-sin(7*0e1)
1: 6
2: 
Read 1 item
[1] 88.18163
> scan()^(floor(pi)-1/2)-sin(7*0e1)
1: 9
2: 
Read 1 item
[1] 243
> scan()^(floor(pi)-1/2)-sin(7*0e1)
1: 25
2: 
Read 1 item
[1] 3125

예, 이것은 의도 된 해결책이 sin(pi)아니지만 불행히도 작동합니다! +1
Flounderer

그것은이었다scan()^(-floor(-sin(pi)*2e17)/10)
Flounderer

3

RProgN 2, 아 타코

]2^\š*

분명히 StackExchange에는 추가 문자가 필요하므로 여기로 이동하십시오.


내 솔루션은 ]š\2^*이지만 둘 다 같은 방식으로 작동합니다.
ATaco

3

HODOR, 198, 이 녀석

Walder
Hodor?!
hodor.
Hodor, Hodor Hodor Hodor Hodor Hodor Hodor Hodor, Hodor Hodor,
hodor,
Hodor, Hodor Hodor Hodor Hodor Hodor Hodor, Hodor Hodor,
Hodor, Hodor Hodor Hodor, hodor!,
HODOR!!
HODOR!!!

설명:

Start
read input into accumulator
copy accumulator to storage
Do math, option 7(nth root), n=2
swap storage and accumulator
Do math, option 6(nth power), n=2
Do math, option 3(times), storage
output accumulator as a number
end

참고 : 내 컴퓨터에서 실행하기 위해 get 인터프리터를 약간 수정해야했습니다 (게시 한 게시물은 다른 것들 중에서 소문자 h를 받아들이지 않는 것 같습니다)

또한 댓글을 달기에 충분한 담당자가없는 것이므로 누군가 @This Guy에게 알릴 수 있다면 감사 할 것입니다.

나는 이것이 오류를 수정했다고 생각합니다. 코드는 이제 Wylis 대신 Walder로 시작하여 여분의 바이트를 추가합니다


거의 다 왔어. 내 코드에서 실수를 바꿔야하므로 귀하의 판단이 옳지 않습니다.
caird coinheringaahing

시작 명령을 수정
wwj

비록 당신이 그것을 가지고 있지만 같은 바이트 수를 사용하는 나와 다른 방법을 사용했습니다. 당신의 대답은 당신이 원하는 것을 할 것이지만 그것은 내 것과 다릅니다. 또한 때문에 이름을 변경해야하므로 게시물을 수정했습니다.
caird coinheringaahing

명확히하기 위해 여전히 균열로 간주됩니까? 아니면 정확히 일치해야합니까?
wwj

확실하지 않습니다. 나는 의견을 물을 것입니다. +1 당신의 솔루션은 정말 열심히 생각합니다!
caird coinheringaahing

3

C #, 172 바이트, raznagul

가장 어려운 부분은 모든 남은 음식으로 무엇을해야하는지 파악하는 것이 었습니다.

using System;using S=System.Console;class PMabddellorttuuv{static void Main(){S.Write(Math.Pow(double.Parse(S.ReadLine()),2.5));Func<double> o;int q=1,M=q*2,b,e;q*=(q*M);}}

좋은! 남은 음식도 붙어 있습니다. 클래스 이름에 추가하지 않았다고 생각했습니다. 잘 했어!
Emigna

+1 내가 의도 한 것이 아니라 매우 좋은 해결책. ;)
raznagul

3

엑셀, 26 바이트 pajonk

=SQRT(A1)*A1^2/1/ISNA(IP2)

입력 IP2로서 A1은 # N / A 인 두 번째 입력을 포함합니다.이 경우 ISNA (IP2)는 1에 속합니다

추가로 () 우리는 이것을 할 수 있습니다

=SQRT(A1)*A1^2/ISNA(PI(1/2))

그러한 도전에서 두 번째 입력이 허용됩니까?
pajonk

@pajonk 규칙은 "모든 표준 방식으로 입력을받을 수 있습니다"라고 말하므로 두 번째 입력으로이 트릭을 만드는 것으로 가정합니다.
Jörg Hülsermann

@pajonk 나는 내 게시물을 개선했다 그것은 당신이 약간의 실수를 저지른 것일 수있다
Jörg Hülsermann

하나의 숫자를 취하는 표준 방법은 하나의 입력을 취하는 것입니다. 제 생각에는 두 번째 입력은 불공평하고 규칙에 위배 될 것입니다. PS 대괄호에는 실수가 없습니다.
pajonk

@pajonk SIN 및 PI와의 조합을 사용할 수 없으므로 대괄호가 충분하지 않습니다. =SQRT(A1)*A1^2/SIN(PI()/2)포맷팅이나 다른 것을 통해 #NA Error를 설정하면 추가 두 번째 입력으로 볼 수 있습니다. SQRT와 ISNA는 약간 이해되는 유일한 두 가지 기능입니다. 그러나 질문을 개발 한 사람에게 문의하십시오
Jörg Hülsermann

3

Python 3.6, 64 바이트, Mr. Xcoder

php38af4r2aoot2srm0itpfpmm0726991i=     (lambda x:x**2.5*1*1/1);

아마도 의도 된 것이 아니라 작동합니다.)

$ python3
Python 3.6.1 (default, Apr  4 2017, 09:36:47) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> php38af4r2aoot2srm0itpfpmm0726991i=     (lambda x:x**2.5*1*1/1);
>>> php38af4r2aoot2srm0itpfpmm0726991i(6)
88.18163074019441
>>> php38af4r2aoot2srm0itpfpmm0726991i(4)
32.0
>>> php38af4r2aoot2srm0itpfpmm0726991i(25)
3125.0

경찰 스레드의 답변에 대해 아직 언급 할만한 충분한 답변이 없습니다. 죄송합니다. 누군가 나를 위해 해줄 수 있다면 감사하겠습니다!


@Mr. Xcoder , as said above, can't comment on your post in the cops' thread, sorry about that :)
user4867444

Came to post a similar solution from math import pi as pp0012223467899;f=lambda x:x**2.5*1*(1)/1 just to see I've been beaten to the punch. I've added a link to this post on the cops thread for you.
Kyle Gullion



3

R, Flounderer

This is a crack of @Flounderer's 31-byte solution:

`[.`=function(`]`)`]`^`[`(lh,9)

Ok that was a tough one. It creates a function called `[.`. The argument to the function is called `]` which is elevated to power 2.5 by using the 9th element of the built-in time-serie lh ("a regular time series giving the luteinizing hormone in blood samples at 10 mins intervals from a human female, 48 samples." that is used as example in one of R's base packages). lh[9] is here on top of it replaced by its equivalent `[`(lh, 9). De-obfuscated by substituting f for the function name and n for the argument name, the function then becomes f=function(n)n^lh[9].

Usage:

> `[.`=function(`]`)`]`^`[`(lh,9)
> `[.`(4)
[1] 32
> `[.`(6)
[1] 88.18163
> `[.`(9)
[1] 243
> `[.`(25)
[1] 3125

2

Python 2, 44 bytes, Anthony Pham

print int(raw_input())**(0+000000000000.5*5)

Takes input from raw_input, converts to int and raises to power 2.5


2

JavaScript, fəˈnɛtɪk

n=>n**("ggggg".length*2**(-"g".length))// ""((((((()))))))***,-...;;=====>Seeeeegggghhhhhhhhhilllnnnnnnorrrsstttttttttttu{}

Gets 5/2 through 5 times 2 to the negative first power, where 5 and 1 were received from the length of strings. Took the easy way out in a sense by commenting out the extraneous characters.


2

C#, 112 bytes, Jan Ivan

using System;class P{static void Main(){var b=Math.Pow(double.Parse(Console.ReadLine()),2.5);Console.Write(b);}}

2

05AB1E, 47 bytes, Okx

).2555BFHIJJKKKPQRS``„cg…ghi…lsw…x}T…Áöž«‚¹n¹t*

Try it online!


Ah, I knew there would be a workaround the method I used to 'secure' the code. Well done!
Okx

@Okx: Yeah, 05AB1E is very tricky to pad with extra code without making it bypassable.
Emigna

I'll see if I can make you a trickier one ;)
Okx

@Okx: Looking forward to it :) I have an idea as well that I may try to implement after work ;)
Emigna

2

Fireball, 8 bytes, Okx

♥²♥1Z/^*

Explanation:

♥²♥1Z/^*
♥²       Push first input squared.
  ♥      Push first input again.
   1Z/   Push 1/2
      ^  First input to the 1/2th
       * Multiply square and root

Not sure if it works. I have currently no java on my laptop. :(


I don't think that will work. Easy fix though, so I'll give you the answer. You just need to swap the Z1 into 1Z.
Okx

I was sure I did a mistake there. Updated.
Roman Gräf

2

Haskell, 64 bytes, @nimi

product.(<$>(($(succ.cos$0))<$>[(flip<$>flip)id$id,recip])).(**)

Try it online! That was a fun one. I first found product.(<$>(($succ(cos$0))<$>[id,recip])).(**) which behaves correctly and than had to fit flip flip <$> () $ id . somewhere into it.


2

R, steadybox

a222=function(s)(s**0.5)*s**2**1

Usage:

> a222=function(s)(s**0.5)*s**2**1
> a222(4)
[1] 32
> a222(6)
[1] 88.18163
> a222(9)
[1] 243
> a222(25)
[1] 3125

Original: a=function(s)s**2*s**(0.125*2*2)
Steadybox

2

05AB1E, 22 bytes, P. Knops

n¹t*qA9¥="'?:@->%#[{!.

Try it online!

Explanation

n      # square of input
   *   # times
 ¹t    # square root of input
    q  # end program

The rest of the operations never get executed.
We could have done it without the q as well by having ? after the calculation and escaping the equality sign for example with '=.


1
Was just doing it for fun :D
P. Knops

@P.Knops: That's the best reason :)
Emigna
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.