당신은 나를 능가 할 수 있습니까? (고무 섹션)


43

강도 섹션

경찰 섹션은 여기 에서 찾을 수 있습니다 .

도전

당신의 임무는 동일한 언어동일한 버전으로 경찰의 제출을 ​​능가하는 것입니다 (예 : Python 3.5Python 3.4 이므로 허용되지 않습니다). 바이트 단위의 길이가 원래 제출보다 짧으면 제출이 아웃 고프됩니다. 제출물을 크랙하기 위해서는 최소한 1 바이트 만 골라야합니다. 예를 들어, 작업이 2 × n 을 수행 하는 경우 제출은 다음과 같습니다.

print(2*input())

다음을 수행하여 경찰을 능가 할 수 있습니다.

print 2*input()

또는 이것조차도 (람다가 허용되므로) :

lambda x:2*x

다음 헤더와 함께 게시하십시오.

##{language name}, <s>{prev byte count}</s> {byte count}, {cop's submission + link}

예를 들면 다음과 같습니다.

Python 2, 16 12 바이트, Adnan (+ 제출 링크)

lambda x:2*x

A005843을 계산합니다 (오프셋 = 0).

이 경우 제출 내용 을 해독 했습니다.

채점

가장 많이 제출 한 사람이 승자입니다.

규칙

  • 균열 제출은 경찰 제출과 동일한 언어로 작성해야합니다.
  • 동일한 입력이 동일한 출력으로 생성되어야합니다 (따라서 a (2) = 4는 4로 유지되어야 함).
  • Python과 같은 언어의 경우 언어에 포함 된 표준 라이브러리를 가져올 수 있습니다. (따라서 numpy / sympy 등은 없습니다)
  • 입력과 출력은 모두 10 진수 (10 진법)입니다.

노트

이 도전은 끝났습니다. 강도 섹션 의 승자 는 feersum 입니다. CnR의 최종 점수는 다음과 같습니다.

  • feersum : 16 균열
  • 데니스 : 12 균열
  • 새는 수녀 : 6 균열
  • : 4 균열
  • 마일 : 3 균열
  • 마틴 엔더 : 2 균열
  • 에미 냐 : 2 균열
  • jimmy23013 : 1 균열
  • Sp3000 : 1 균열
  • randomra : 1 균열
  • alephalpha : 1 균열
  • 니미 : 1 균열
  • 파괴 가능한 수박 : 1 균열
  • 돔 헤이스팅스 : 1 균열

답변:


8

체다, 7 6 바이트, 다운 염소

(<<)&1

이것은 작동하는 것처럼 보이지만 언어를 올바르게 이해하지 못할 수도 있습니다.


또는 (**)&2. 시도 2&(**)하고 실패했습니다. :(
Dennis

@Dennis (**)&2는 저에게 잘 작동합니다 : /하지만 작동합니다.
Downgoat

14

젤리 ,54 바이트 , George V. Williams

RÆḊḞ

여기에서 시도하십시오.

숨겨진 기능!

올바르게 기억하면 ÆḊ(A) = sqrt (det (AA T ))는 n입니다! n 입력 포인트와 m 차원 공간의 원점에 의해 형성된 심플 렉스 의 n 차원 Lebesgue 측정 값 을 곱합니다 . n = 1 일 때 유클리드 거리로 축퇴합니다. 결국 그렇게 이상하지 않습니다 ...


1
맞아, 나는 결정 요인으로 이상한 일을했다 ... 너무 잘 숨겨서 그것을 스스로 찾을 수 없었다!
Dennis

@Dennis 언젠가 나는 결정 요인을 확장하려고 시도했기 때문에 이것을 알고 있으며 교차 제품으로 작동하려는 경우 얻을 수 있습니다. 하지만 너무 이상하다고 생각해서 누군가가 똑같은 일이
일어나기를

이것들이 실제로 "바이트"로 간주 될 수 있습니까? 코드 포인트는 대한 가 UTF-16의 범위에있다. 이 솔루션을 이기종 인코딩으로 가정하면 6 바이트, 동종 인코딩으로 가정하면 8 바이트가됩니다. 솔직히 묻는다.
Jules


11

Hexagony , 91 33 바이트, 파랑

1""?{\>{+/</+'+./_'..@'~&/!}'+=($

펼쳐진 :

    1 " " ?
   { \ > { +
  / < / + ' +
 . / _ ' . . @
  ' ~ & / ! }
   ' + = ( $
    . . . .

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

여전히 다소 골프 타는 것처럼 보이지만 FryAmTheEggman이 나를 때리기 전에 게시 할 것이라고 생각했습니다. ;)

설명

색상으로 구분 된 실행 경로는 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

그러나, 이것은 골프로 인해 불필요하게 복잡하다. 더 깔끔한 레이아웃을 가진 동일한 코드는 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

그게 낫다. 마지막으로, 메모리 다이어그램은 다음과 같습니다. 여기서 빨간색 화살표는 메모리 포인터 (MP)의 초기 위치와 방향을 나타냅니다.

여기에 이미지 설명을 입력하십시오

요점은 가장자리 A , BC 의 반복자를 추적하면서 f (i) , f (i + 1)f (i + 2) 라는 레이블이 지정된 세 가장자리에서 피보나치 수를 반복적으로 계산한다는 것 입니다 . 이렇게하는 동안 이러한 반복의 역할은 각 반복 후에 주기적으로 교체됩니다. 어떻게되는지 보자 ...

코드는 회색 경로에서 시작하여 일부 초기 설정을 수행합니다. 참고 F (I) 이미 그것의 정확한 초기 값을 가진다 0.

1   Set edge f(i+1) to 1.
""  Move the MP to edge A.
?   Read input n into edge A.
)   Increment n.

이제 녹색 경로가 기본 루프입니다. _그리고 >단지 거울입니다.

(     Decrement n.
<     If the result is zero or less, continue on the red path, otherwise
      perform another iteration of the main loop.
{     Move the MP to edge f(i+2).
+     Add edges f(i) and f(i+1) into this edge, computing the next Fibonacci number.
'     Move the MP to the edge opposite A.
~     Multiply by -1 to ensure that it's non-positive (the edge may have a positive
      value after a few iterations).
&     Copy the current value of n from A.
'     Move back and to the right again.
+     Copy n by adding it to zero. Since we know that the other adjacent edge
      is always zero, we no longer need to use ~&.
'+'+  Repeat the process twice, moving n all the way from A to B.
=     Reverse the orientation of the MP so that it points at f(i) which now
      becomes f(i+2) for the next iteration.

이런 식으로 MP는 가장자리의 내부 삼중 항 주위를 이동하여 n0에 도달 할 때까지 연속적인 피보나치 수를 계산 합니다. 그런 다음 마지막으로 빨간색 경로가 실행됩니다.

{}    Move the MP to f(i).
!     Print it.
@     Terminate the program.

Timwi의 HexagonyColorerEsotericIDE로 생성 된 다이어그램 .


이런 젠장! 나는 당신에 의해 구타를 기대했지만 내 만큼은 아니었다! 0.o
Blue

@Blue 귀하의 설명을 추가 할 계획입니까? 그 작동 방식에 관심이 있습니다. :) 조만간 이것에 대한 설명을 추가 할 것이지만, 오늘 시간을 알지 못할 것입니다.
Martin Ender

예, 광산은보다 전통적인 계산 방법을 사용합니다. 나는 &에 대해 완전히 잊어 버렸습니다. 바이트를 절약 할 수 있습니다.
Blue


7

스택 고양이, 14 13 바이트, feersum

^]T{_+:}_

-nm+4 바이트에 대한 플래그 와 함께 . 온라인으로 사용해보십시오!

알았어, 그 루프는 미쳤어. 알파벳 감소 및 무차별 강제 실행 3x+2또는 5x+4확장 시도 와 같은 여러 가지 접근법을 시도했지만 실제로 솔루션에 루프 포함될 것으로 예상하지는 않았습니다 .

이것이 어떻게 작동하는지 확인하는 가장 좋은 방법 D은 디버깅을 위한 플래그 를 추가하고 (로 실행 -nmD) 위의 TIO 링크에 대해 디버그를 켜는 것입니다. {}스택의 상단이 그 값을 다시 때 루프는 루프의 처음에 스택의 상단과 이탈을 기억한다. 루프의 내부는 스택의 상위 3 개 요소를 약간 빼고 순환 시키는데, 루프가 너무 많은 반복을 위해 실행되는 방식입니다.


6

Sesos, 14 11 바이트, Leaky Nun

n 2를 계산합니다 . 여기에서 시도하십시오.

육각 덤프 :

0000000: 16c0f7 959d9b 26e83e ce3d                         ......&.>.=

조립에서 :

set numin
set numout
get
jmp
  jmp, sub 1, fwd 1, add 1, fwd 1, add 2, rwd 2, jnz
  fwd 2, sub 1
  rwd 1, sub 1
  jmp, sub 1, rwd 1, add 1, fwd 1, jnz
  rwd 1
jnz
fwd 2
put

좋아, 당신은 내 원래 골프 버전보다 짧습니다.
Leaky Nun

이것은 1 + 3 + … + (2n–1)대신에 계산 n × n:)
Lynn

나는 또한 당신의 접근 방식을 사용했습니다
Leaky Nun

6

유감스럽게도 776 759 바이트, 파괴 가능한 수박

| |||||||| | |
|| |||||| |
||| |||| |
|||| || |
||||| || |
|||| |||| |
||| |||||| |
|| |||||||| |
| |||||||||| |
|| |||||||| |
||| ||||||| |
||||||||||| |
||||||||||| |
||||||||||| |
||||||||||| |
|||||||||| |
||||||||| |
||||||||| |
||||||||| |
||||||||| |
|||||||||| |
||||||||||| |
|||||||||||| |
||||||||||| |
|||||||||| |
||||||||| |
|||||||| |
||||||| |
|||||| |
||||| |
|||| |
||| |
|| |
| |
| |
| |
|| |
|| |
|| |
|| |
|| |
| |
| |
| |
|| |
||| |
|||| |
||||| |
|||||| |
||||||| |
|||||| |
||||||| |
|||||||| |
||||||||| |
|||||||||| |
||||||||||| |
|||||||||||| |
||||||||||| |
|||||||||| |
||||||||| |
|||||||| |
||||||| |
|||||| |
||||| |
|||| |
||| |
|| |
| |
| |
| |
| |
|| |
| |
|| |
||| |
||| |
|||| |
||| |
|| |
| |
| |
| |
|| |
|| |
|| |
|| |

이 언어의 소스 코드를 읽으려고했지만 너무 혼란 스러웠습니다. 한 가지 예로, ip[1]행 번호는 while ip[0]열 번호이고 cp좌표는 다른 방법으로 사용됩니다. 그러나 때때로의 값이 cp에 할당됩니다 ip. 나는 프로그램이 무엇을하고 있는지 이해하려고 포기하고 더 적은 막대를 사용하여 동일한 명령 시퀀스를 인코딩하는 방법을 찾았습니다.



5

J, 17 12 바이트, 마일

+/@(]!2*-)i:

오리지널 골프와 거의 동일합니다. :)

i:+1비해 폭은 i.유용 (이상한)이다. i.여기서 사용 n=0하면 올바르지 않지만 운 좋게 i:해결합니다.

여기에서 온라인으로 사용해보십시오.


i:음수 값은 0 인 깔끔한 트릭입니다 . 내 버전은 +/@(]!2*-)i.,]입니다.
마일

5

M, 10 6 바이트, 데니스

R×\³¡Ṫ

감안 N , 상기 계산 N 번째 - 레벨 계승의 N을 . 이것은 재미있는 운동이었다!

코드는 Jelly로 실행할 수 있으므로 온라인으로 사용해 볼 수 있습니다 .

설명

R×\³¡Ṫ  Input: n
R       Create the range [1, 2, ..., n]
   ³¡   Repeat n times starting with that range
 ×\       Find the cumulative products
     Ṫ  Get the last value in the list
        Return implicitly


5

하스켈, 15 14 바이트, xnor

until odd succ

나는 "무의미한"구문을 해독하는 법을 배우는 데 몇 시간을 보냈다 ... until대신에 이것을 발견했다.

또는 덜 악의적 인 13 바이트의 경우 until odd(+1).


다행스럽게도 이것이 내가 생각한 것입니다. 나는 세 단어를 좋아한다.
xnor

4

파이썬 2, 43 40, xsot

g=lambda n:n<2or-~sum(map(g,range(n)))/3

흥미롭게도, 이것은 내가 원래 가지고 있던 것과 다릅니다.
xsot

4

파이크, 11 9 바이트, 갯벌

hVoeX*oe+

여기 사용해보십시오!

작동 원리

          Implicit input: n (accumulator), n (iterations)
h         Increment the number of iterations.
 V        Do the following n + 1 times.
  o         Iterator. Pushes its value (initially 0) and increments it.
   e        Perform integer division by 2.
            This pushes 0 the first time, then 1, then 2, etc.
    X       Square the result.
     *      Multiply the accumulator and the result.
      oe    As before.
        +   Add the result to the accumulator.
            This sets the accumulator to a(0) = 0 in the first iteration and
            applies the recursive formula in all subsequent ones.

이 방법을 사용하면로 8을 얻을 수 있습니다 hV~oX*o+. 내 5 바이트 답변은SDmX^
Blue

아, ~o깔끔하다. 나는 무엇을하는지 전혀 모른다 SDmX^.
Dennis

기본적으로 1- 인덱스 범위에서 제곱에 대해 혼합 된 기본 대화를 사용합니다. OEIS에 관한 내용은 없습니다
Blue

아, 않습니다 m에만 영향을 미치는 X아니라 ^? 많은 설명이 있습니다.
Dennis

예, m비슷하게 다음 노드 만 사용하십시오. 내 문서 등에 대한 의견이 있습니까?
Blue

4

05AB1E , 7 4, 에미 냐

LnOx

우리가 곱하면 양의 정수 1 ^ 2 + 2 ^ 2 + 3 ^ 2 + ... + n ^ 2 = n (n + 1) (2 * n + 1) / 6의 제곱의 합에 대한 공식에서 양변에 2를 곱하면 Sum_ {k = 0..n} 2 * k ^ 2 = n (n + 1) (2 * n + 1) / 3을 얻습니다.이 순서에 대한 대체 공식입니다. -Mike Warburton (mikewarb (AT) gmail.com), 2007 년 9 월 8 일


내가 놓친 내 공개 버전의 사소한 수정이 있었기 때문에 4시에 금이갔습니다. 좋은!
Emigna

4

젤리, 22 21 바이트, 데니스

_²×c×Ḥc¥@÷⁸÷’{S
‘µR+ç

나는 마지막 코드에 대한 Jelly 소스 코드를 읽는 데 몇 시간을 보냈으므로이 "기술"을 사용할 수도있다. @Dennis가 더 짧은 공식을 허용하는 수학적 발견을 우리와 공유하기를 바랍니다 (이상한 젤리 트릭뿐만 아니라 다른 가정이 있다고 가정합니다!).


비교를 위해, 나는했다 : ''Ḥc_ × C @ + ¥ \ nr0ç @ € '+ \ S
SP3000

@ Sp3000 아, 왜 게시하지 않았습니까?
feersum

더 많은 시간이 M의 6 데니스 전에 재 게시에 대해 생각하는 : P
SP3000에게

4

J, 20 19 바이트, 마일

[:+/2^~+/@(!|.)\@i.

이것은 곱을 제곱 피보나치 수의 합으로 계산하며, 이항 계수의 합으로 계산됩니다.

고맙게도, @miles 자신 도이 주석에서 피보나치 수를 생성하는 코드를 게시했습니다 .


4

Acc !! , 526 525 바이트 DLosc

N
Count x while _%60-46 {
(_+_%60*5-288)*10+N
}
_/60
Count i while _/27^i {
_+27^i*(_/27^i*26-18)
}
_*3+93
Count i while _/27^i/27%3 {
_-i%2*2+1
Count j while _/3^(3*j+2-i%2)%3 {
_+3^(1+i%2)
Count k while _/3^(3*k+1+i%2)%3-1 {
_+3^(3*k+1+i%2)*26
}
}
}
Count i while _/27^i/3 {
_-_/27^i/3%27*27^i*3+_/3^(3*i+1+_%3)%3*3
}
_/3
Count i while _/100^i {
_*10-(_%100^i)*9
}
Count i while _/100^i/10 {
_+_/100^i/10%10
Count j while i+1-j {
_+(_%10-_/100^(j+1)%10)*(100^(j+1)-1)
}
}
_/100
Count j while _/100^j {
Write _/100^j%10+48
}

나는 이것이 어떻게 작동하는지 전혀 모른다. 그러나 나는 작은 개선점을 발견 할 수 있었다.

24c24
< _+_/100^i*100^i*9
---
> _*10-(_%100^i)*9

아, 쏴 나는 내가 놓친 수학 골프를 아무도 잡지 않기를 바랐다. +1
DLosc

4

하스켈, 10 바이트, xnor

gcd=<<(2^)

사용 예 : map ( gcd=<<(2^) ) [1..17]-> [1,2,1,4,1,2,1,8,1,2,1,4,1,2,1,16,1].

작동 방법 :에서 oeis 페이지 우리가 볼 a(n) = gcd(2^n, n): 하스켈 문법에 서면 또는 a n = gcd (2^n) n. 패턴과 기능이 f x = g (h x) x기능을 통해 포인트 - 무료로 전환 될 수있다 =<<: f = g =<< h, 따라서 gcd=<<(2^)다시로 변환한다 gcd (2^x) x.


............... 방법
TuxCrafting





3

MATL, 11 10 바이트, Luis Mendo

YftdAwg_p*

-1 ^ length (array)를 수행하는 대신 요소를 부울 값 (항상 1)으로 변환하고 무시하고 요소의 곱을 가져옵니다.




3

Brachylog, 11 10 바이트, 치명적

yb:AcLrLc.

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

설명

Brachylog는 프롤로그에서 파생 된 언어로, 사물을 증명하는 가장 큰 능력을 가지고 있습니다.

여기, 우리는 이러한 진술을 증명합니다 :

yb:AcLrLc.
yb:AcL       Inclusive range from 1 to input, concatenated with A, gives L
     LrL     L reversed is still L
       Lc.   L concatenated is output

이것은 내가 생각했던 정확한 대답입니다.
Fatalize

3

젤리, 9 8 바이트, 데니스

œċr0$L€Ḅ

죄송합니다! 원하는 솔루션을 찾을 수 없습니다.

이것은 대체와 함께 값 C(n+k-1, k)을 선택하는 방법의 수 라는 사실에 의존합니다 .kn

참고 : 계산할 수 있도록 가능한 세트를 생성하므로 비효율적이므로 온라인에서 큰 값의 n을 사용하지 마십시오 .

온라인으로 시도 하거나 최대 n 개 까지 확인하십시오 .

나중에 n = 1000 을 계산하기에 충분한 다른 8 바이트 버전을 찾았습니다 . 이항 계수를 사용하여 값을 계산하고 목록을 생성하지 않습니다.

Ḷ+c’Ṛ;1Ḅ

온라인으로 시도 하거나 최대 n 개 까지 확인하십시오 .

설명

œċr0$L€Ḅ  Input: n
  r0$     Create a range [n, n-1, ..., 0]
œċ        Create all combinations with replacement for
          (n, n), (n, n-1), ..., (n, 0)
     L€   Find the length of each
       Ḅ  Convert it from binary to decimal and return

Ḷ+c’Ṛ;1Ḅ  Input: n
Ḷ         Creates the range [0, 1, ..., n-1]
 +        Add n to each in that range
   ’      Get n-1
  c       Compute the binomial coefficients between each
    Ṛ     Reverse the values
     ;1   Append 1 to it
       Ḅ  Convert it from binary to decimal and return


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