경찰-제곱 시간 제곱근


37

참고 : 이것은 스크램블 코드를 게시 해야하는 경찰 스레드입니다. 다음은 금이 간 출처를 게시하고 경찰의 답변에 연결해야하는 강도 스레드 입니다.


작업 : 정수 n 의 제곱근에 n 의 제곱 을 곱하는 가장 짧은 안전 프로그램 작성

이것은 이며 규칙은 다음과 같습니다.

  • 답에 소스 코드의 스크램블 버전을 게시하십시오 (문자는 순서에 상관없이 작성해야 함). 스크램블 버전 작동 하지 않아야 합니다!
  • 당신은 어떤 표준적인 방법으로도 입력을받을 수 있습니다. 하드 코딩 금지
  • 코드가 강도에 의해 크랙 된 후 (이 경우) 제목에서 코드가 크랙되었다고 언급하고 정확한 코드를 사용하여 답변 본문에 스포일러 를 추가 해야합니다.
  • 안전한 답변에도 동일하게 적용됩니다 (안전하고 스포일러 추가 )
  • 코드 를 게시 한 후 5 일 이내에 아무도 크래킹하지 않으면 코드가 안전하다고 간주 되며 제목에 해당 코드를 선택적으로 지정할 수 있습니다
  • 프로그래밍 언어를 지정해야합니다
  • 바이트 수를 지정해야합니다
  • 답에 반올림 메커니즘을 명시해야합니다 (아래 참조).

당신은 결과보다 낮은 2 것을 가정 할 수있다 (32)n은 항상 긍정적이다. 결과가 정수이면 소수점이 있거나없는 정확한 값을 반환해야합니다. 그렇지 않으면 최소 소수 자릿수는 선택한 임의의 반올림 메커니즘을 사용하여 소수점 이하 3 자리가되지만 더 많이 포함 할 수 있습니다. 답에 반올림 메커니즘을 명시해야합니다. 분수로 반환 할 수 없습니다 (분자, 분모 쌍-죄송합니다, Bash!)

예 :

In -> Out

4 -> 32.0 (or 32)
6 -> 88.18163074019441 (or 88.182 following the rules above)
9 -> 243.0
25 -> 3125.0

4 월 말까지 가장 짧은 안전 답변이 승자로 간주됩니다.


2
관련. (같은 CnR 규칙, 다른 작업)
Martin Ender

2
@MartinEnder 작업이 유일한 차이점이라면 중복되지 않습니까?
Nathan Merrill

1
@NathanMerrill 잘 모르겠습니다. 경찰과 강도 도전에 대한 중복 지침이 확립되어 있지 않다고 생각합니다. 그러나 새로운 코드 골프 도전을 요청 하면 이전 코드 골프와 다른 유일한 " 골프 "도전이 작업은 일반적으로 중복으로 간주되지 않습니다. ;) (저는 기본 과제가 아닌 도전 과제의 CnR 부분을 변경하면 CnR이 더 흥미로울 것입니다.)
Martin Ender

1
모두 행운을 빌어 요! 나는 당신이 이것을 다시 열기로 결정한 것을 정말로 기쁘게 생각합니다. 흥미로운 답변을 기대하겠습니다!
Mr. Xcoder

2
최대 2 ^ 32까지의 입력을 처리하기 위해 코드를 작성했습니다 ... 반올림 오류에 대해 질문 한 이유는 바로 그 시점에서 마크를 벗어난 것입니다.
fəˈnɛtɪk

답변:


2

05AB1E, 20 바이트-안전

이전 답변과 완전히 다른 접근법.

****++/133DDFPTs}¹¹Ð

반올림이 없습니다.

예제 실행

In   -> Out
0    -> 0
4    -> 32.0
6    -> 88.18163074019441
25   -> 3125.0
7131 -> 4294138928.896773

나는 @Emigna가 순식간에 그것을 깨뜨릴 것이라는 데는 의심의 여지가 없지만, 어, 하나는 시도해야한다! :-디


해결책

D1TFÐ*D¹3*+s3*¹+/*}P

이것은이 순서를 사용한다는 사실입니다.

u_0 = 1, u_ {n + 1} = u_n * (u_n ^ 2 + 3 x) / (3 u_n ^ 2 + x)

sqrt (x)로 수렴하고 입방체로 빠릅니다 (죄송합니다, PCG에서 수학 방정식을 형식화하는 방법을 찾지 못했습니다).

상해

D1TFÐ*D¹3*+s3*¹+/*}P
D1                   # Duplicate the input, then push a 1: stack is now [x, x, 1] (where x is the input)
  TF                 # 10 times (enough because of the cubic convergence) do
    Ð                # triplicate u_n
     *               # compute u_n ^ 2
      D              # and duplicate it
       ¹3*+          # compute u_n ^ 2 + 3 x
           s         # switch that last term with the second copy of u_n ^ 2
            3*¹+     # compute 3 u_n ^ 2 + x
                /    # compute the ratio (u_n ^ 2 + 3 x) / (3 u_n ^ 2 + x)
                 *   # compute u_n * (u_n ^ 2 + 3 x) / (3 u_n ^ 2 + x), i.e. u_{n+1}, the next term of the sequence
                  }  # end of the loop
                   P # compute the product of the whole stack, which at that point contains u_10 (a sufficiently good approximation of sqrt(x)), and the 2 copies of the input from the initial D: we get x ^ 2 * sqrt(x)

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


17

파이썬 3 , 44 바이트 ( 크랙 )

'**:(((paraboloid / rabid,mad,immoral))):**'

반올림이 없습니다. 부동 소수점 정확도.


4
어서, 이것은 더 많은 포인트가 필요합니다, 너무 창의적입니다! 대칭이 있으며 모든 단어는 실제 단어입니다.
Outgolfer Erik

내가 어리석은 실수를하지 않았다면 ... Cracked
KSab

11

MATL , 12 바이트 ( @tehtmi에 의해 크랙 됨 )

'Un&0P'/^:+1

반올림이 없습니다. 부동 소수점을 사용합니다.

의도 된 솔루션 (@tehtmi와 다른 해결책) :

:&+n10U'P'/^

설명

:&+ % Create a matrix of size n × n, where n is implicit input
n % Number of elements. Gives n^2
10U % 10 squared. Gives 100
'P' % 'P' (ASCII code 80)
/ % Divide. Gives 1.25
^ % Power. Implicit display



@tehtmi 실제로! 잘 했어! 내 의도 된 해결책은 달랐다. 방금 게시했습니다
Luis Mendo


10

Perl, 42 바이트 (안전)

41 바이트의 코드와 -p플래그가 있습니다 (다른 플래그는 없음).

/"/4~~r..rso4r<_$4va=eg1de|i/h0-&$c={}l+"

결과는 반올림되지 않습니다 (또는 펄이 수행 한 것과 같은 지점으로 반올림됩니다 $_ = (sqrt $_) * ($_ ** 2)).

해결책:

$_=eval".i44<4}{|~"=~s/./chr-10+ord$\&/gre
(를 빼고 \전과 &- 인하 스포일러가 싫어하는 것 같다 $다음 &)
온라인으로보십시오!

설명:

.i44<4}{|~것이다 $_**2*sqrt그러나 모든 문자의 ASCII 코드로 문자 + 10으로 대체 (의 ASCII 코드 $이며 36,는가되도록 .아스키 코드 46등).
그 목적은 s/./chr-10+ord$\&/gre이 변환을 취소 하는 것입니다 . 각 문자를 ASCII 코드 10 하위 문자로 바꿉니다. ( 아스키 코드에 해당하는 문자를 반환하고 문자에 해당하는 아스키 코드를 반환하는 위치 가 chr-10+ord$\&더 명확 할 것입니다 ). 마지막 으로이 문자열을 평가하여에 저장된 결과를 계산합니다.이 결과는 플래그 덕분에 끝에 암시 적으로 인쇄됩니다 .chr(ord($\&)-10)chrord
eval$_-p


참된. 나는 4 번의 재 개선 투표를보고 5 번이 출연되기 전에 문제를 해결하기를 원했기 때문에 신속하게 편집하려고했습니다. 질문이 준비 될 때까지 샌드 박스에 남아 있었다면 모든 관련 담당자에게 더 좋을 것입니다.
피터 테일러

@PeterTaylor 물론 문제 없습니다. 어쨌든 그것은 대담하게 보입니다. 샌드 박스 부분에 대해서는 더 이상 동의 할 수 없었습니다.
Dada

조금 설명해 주시겠습니까?
phuclv

@ LưuVĩnhPhúc 당신이 그것을 깨뜨리는 데 약간의 도움을 줄 수 있다면? 음 ... 코드는로 시작합니다 $_=. 그리고 eval어딘가에 있습니다. (별로 많지는 않지만 너무 많은 정보를 제공하지 않으면 더 많은 것을 줄 수 없다고 생각합니다)
Dada

8

옥타브, 43 바이트 (안전)

$'()*+,-/23579:[]aelnouv'*,-23:[]lu',-23]',

이것은 명령 행에서 입력이 필요한 스크립트입니다 (기능이 아님). 부동 소수점 정확도 (반올림 없음)입니다.

해결책:

eval(-[5,-2:3,-3:2]+['nlouu*$$',39,']2/7'])

설명:

eval( <string> ) % Evaluated the string inside the brackets and executes it
eval통화 내부의 모든 것이 input('')^2.5

어떻게 평가 됩니까?

-[5,-2:3,-3:2] % A vector: [-5, 2, 1, 0, -1, -2, -3, 3, 2, 1, 0, -1, -2]
['nlouu**$$',39,']2/7'] % This is a string: nlouu**$ concatenated with the number
. % 39 (ASCII ']'), and ']2/7'. Thus, combined: 'nlouu**$$']2/7'

이 문자열에 첫 번째 벡터를 추가하면 벡터를 정수 벡터
[105, 110, 112, 117, 116, 40, 39, 39, 41, 94, 50, 46, 53]

eval로 변환합니다 . 암시 적으로 이것을 문자열로 변환하며이 숫자는 다음과 같습니다. input('')^2.5


1
힘들었다. 잘 했어!
Luis Mendo

7

C, 50 바이트 ( fergusq에 의해 크랙 됨 )

%(())   ,-12225;>\\aaabbdddeeefffllnoooprrttuuuuw{

표준 IEEE754 반올림을 사용합니다. fergusq의 답변에서 알 수 있듯이 -lm컴파일러에 따라 필요할 수 있습니다 .



@ fergusq 정확하고 거의 정확히 내가 가지고있는 것. 잘 했어; 나는 사람들이 훨씬 더 바쁘게 지낼 수 있도록 충분한 청어를 남길 것이라고 생각했습니다!
Dave

@Dave Wow, 처음에는 구문 오류처럼 보입니다.
Outgolfer Erik

6

Mathematica, 131 바이트, 비경쟁?, 크랙

이것은 @ lanlock4에 의해 금 이되었습니다 ! 그러나 나는 여전히 모든 캐릭터가 실제로 필요한 원래 솔루션을 찾는 사람에게 인터넷 포인트를 부여합니다 ....

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

이것은 퍼즐로 만들어졌습니다. 위의 문자를 원하는대로 사용할 수는 있지만 대답은 형식을 따를 것입니다.

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

첫 번째와 세 번째 줄은 반올림하고 표시를 합법화하기위한 래퍼 일뿐입니다 (모든 출력을 정확히 소수점 이하 세 자리에 씁니다). 두 번째 줄은 코드 내장의 스크램블 버전입니다. 샘플 출력 :

6 -> 88.182
9 -> 243.000
9999 -> 9997500187.497

Mathematica는 무료 소프트웨어가 아니지만 적당한 양의 코드를 테스트 할 수 있는 Wolfram 샌드 박스 가 있습니다 (예 : 코드 잘라 내기 및 붙여 넣기).

f[y_]:=With[{x=
    y^2.5
},Print[#,".",IntegerString[Round@#2,10,3]]&@@QuotientRemainder[1000x,1000]]

위의 코드의 스크램블되지 않은 버전과 동일한 기능을 수행하는 함수를 나중에 f@6또는 처럼 호출 할 수 있습니다 f[9]. 그래서 이것은 실제로 경쟁이 아니어야합니까?)



6

신속한-64 바이트 (안전)

prot Fdnufi;nooitamunc xetgru(->atl)Ior:n{tFn pg,F(ao.o25t)(w)l}

반올림이 없으며 .0결과가 정수인 경우에도 짝수를 표시합니다 .




4

C #, 172 바이트 ( SLuck49에 의해 크랙 됨 )

       (((((())))))***,,,,......1225;;;;;;<====>CFLMMMMMPPPRSSSSSWaaaaaaabbbbcccddddddeeeeeeeeeeegghiiiiiiiillllllmmnnnnnnnooooooooqqqqrrrssssssssstttttttttuuuuuuuvvwyy{{}}

이 코드는 전체 프로그램입니다.

시작 부분에는 7 개의 공백 문자가 있습니다.

입력은 STDIN 형식으로 읽히고 STDOUT에 인쇄됩니다. 결과는에 double반올림이 수행되지 않습니다.

원래 코드 ungolfed :

using System;
using S = System.Console;

class P
{
    static void Main()
    {
        var t = S.ReadLine();
        double q = int.Parse(t);
        Func<double, double, double> M = Math.Pow;
        S.Write(M(q, 2 * .25) * M(q * q, 1));
    }
}




3

파이썬 3.6, 59 바이트

ba(,b5,d' (,a/([m:'-)oa)(bl*aadplma dba](r)d )l*d,:)*m:-mml

반올림이 없습니다. 부동 소수점 정확도.


정말, 3 개의 람다?
Mr. Xcoder

3

Haskell, 64 바이트 ( Laikoni에 의해 크랙 됨 )

$$$$$$(((((())))))**,...0<<<>>>[]cccccdddeffiiiiilloopppprrsstuu

표준 Haskell 부동 소수점 연산.

내 원래 버전은 다음과 같습니다

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



@Laikoni : 잘 했어요!
nimi

3

푸리에 변환 , 124 119 바이트

((()))*******--011111<=>>>HHINNNN^^^eeehhhhkkkkmmmmmmmmmmmmmmmmossuuuuuuuuuuuuuuuuu{{{{{{{{{{}}}}}}}}}}~~~~~~~~~~~~~~~~

공백이나 줄 바꿈 문자가 없습니다.

푸리에가 정수 이외의 다른 것을 처리하지 않기 때문에 제곱근은 가장 가까운 정수로 반올림됩니다 (@ATaco가 권한을 얻은 이후로 이것이 좋기를 바랍니다)

편집 실수를 수정했습니다. 이미 크래킹 한 경우 이전 기능이 작동했습니다.

코드의 일부를 잘못 이해하고 필요한 것보다 많은 문자를 사용하고 있음을 깨달았습니다.

내가 놓친 것이 있으면 알려주세요




3

옥타브, 30 바이트 (안전)

(((((())))))**++/:@eeeiiijmsu~

첫 번째 것보다 조금 더 간단합니다. 너무 어려워서는 안되지만 희망적으로 재미있는 퍼즐입니다.


2
아니 ^? 흠 ...
루이스 멘도

1
이걸로 @(e)(e**((i/(i+i))+~sum(e:j)))왔지만 단지 n^1.5... 이것은 까다 롭습니다.
Kyle Gullion

3

옴, 11 바이트

M ⁿ¡D¼½;+1I

-c플래그 와 함께 사용하십시오 . CP-437 인코딩을 사용합니다.


죄송합니다. 이것이 정확하다고 확신하십니까?
user4867444

주어진 시간에 아무도 해킹하지 않았으므로 솔루션을 공유하십시오. 매우 궁금합니다 :)
user4867444

현재로서는 안전하다고 간주되는 가장 짧은 답변입니다. 동의하지만 5 일 내에 원본 코드를 게시하지 않으면 이것이 가능한지 확실하지 않기 때문에이를 선택 해제합니다.
EAGER

2
@ RomanGräf는 해결책을 찾으십시오. 그렇지 않으면 나는 이것을 체크하지 않을 것이다 ...
Mr. Xcoder

1
@ RomanGräf : 핑? 아직도 그 해결책을보고 싶어 :)
user4867444


2

자바 스크립트, 123 바이트, notjagan에 의해 크랙 됨

 """"""((((((((()))))))))********,--.....//2;;======>>Seeeeeeegggggggggggghhhhhhhhhhhilllllnnnnnnnnnnorrrsstttttttttttttu{}

이 코드는 완전한 기능입니다

문자 목록의 맨 앞에 공백 문자가 하나 있습니다

이 답변의 반올림은 Javascript의 부동 소수점 정밀도이며 모든 답변의 정확도는 10 ^ -6입니다.

내가 생각했던 것만 큼 정밀도를 유지할 필요가 없기 때문에 더 짧았습니다.

나는 처음에 만든 것보다 해결하기가 훨씬 쉽다는 것을 깨달았지만 이미 거기에있었습니다.

초기 코드 :

g=t=>t-(t*t-n)/("le".length*t);e=h=>{n=h*h*h*h*h,s=2**(n.toString("ng".length).length/"th".length);return g(g(g(g(g(s)))))}

2의 가장 가까운 거듭 제곱에서 5 번 적용되는 뉴턴 방법




2

05AB1E , 47 바이트

)*.2555BFHIJJKKKPQRST``cgghilnstwx}«¹¹Áöž‚„…………

반올림하지 않고 부동 소수점 정확도를 사용합니다.





2

엑셀, 26 바이트

=(())*//11122AAAIINPQRSST^

반올림이 없습니다.

참고 : Excel은 유료 소프트웨어이므로 무료 LibreOffice에서도 작동합니다.


1
Excel을 구입하지 않고이를 실행할 수 있습니까? 현재 자유 언어가 아닌 언어는 경찰과 강도에 사용할 수 없다는 것이 합의입니다.
밀 마법사

1
무료 Libreoffice에서 근무해야하지만 확인해보고 다시 연락하겠습니다.
pajonk

1
잘 작동합니다.
pajonk


@WheatWizard는 더 이상 관련이 없지만 합의는 다음과 같습니다. 자유 언어는 사용할 수 있지만 비경쟁 언어로 표시해야합니다 .
Stewie Griffin

2

RProgN 2 , 6 바이트 ( @notjagan에 의해 크랙 됨 )

š2]^*\

반올림이 없으며 소수점 이하 자릿수가 많이 표시됩니다. 정수 솔루션에 대해서는 아무것도 표시하지 않습니다.


2
이것이 실제로 수행 n²√n합니까? 나는 그것을 쉽게 계산할 수 n² + √n는 있지만, 나는 당신의 용어가 어떻게 곱해 지는지를 알 수 없습니다.
notjagan

@notjagan도 .... 그것을 깨기 위해 2 시간 동안 노력했지만 아무것도 작동하지 않습니다. ATaco 소스가 올바른지 확인 하시겠습니까?
Mr. Xcoder

@ Mr.Xcoder Ah, 당신은 꽤 정확합니다. 당신의 시간을 낭비해서 죄송합니다! 편집 한 출처를 참조하십시오.
ATaco

이제 말이 되네요!
Mr. Xcoder

내가 바빴 기 때문에 조금 늦었지만 금이 갔다 .
notjagan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.