순차적으로 나눌 수 있음 7 ^ 2, 50은 5 ^ 2로

때로는 잠들기 위해 가능한 한 높은 숫자로 계산하지만, 사각형 이 아닌 숫자는 건너 뜁니다 . 행에서 여러 숫자를 건너 뛸 때 약간의 스릴을 얻습니다. 예를 들어, 48,49,50모두 제곱이 아닙니다 (48은 2 ^ 2, 49는 7 ^ 2, 50은 5 ^ 2로 나눌 수 있음).

이것은 몇 개의 임의의 제수로 나눌 수있는 인접 숫자의 가장 빠른 예에 대해 궁금해했습니다.

입력

입력은 하나 a = [a_0, a_1, ...]이상의 요소를 포함하는 엄격하게 양의 정수 로 정렬 된 목록 입니다.

산출

출력은 나누기 , 나누기 및보다 일반적으로 나누는 n속성을 가진 가장 작은 양의 정수 입니다 . 그러한 것이 존재 하지 않으면 , 기능 / 프로그램의 동작은 정의되지 않습니다.a_0na_1n+1a_kn+kn

테스트 사례

[15] -> 15
[3,4,5] -> 3
[5,4,3] -> 55
[2,3,5,7] -> 158
[4,9,25,49] -> 29348
[11,7,5,3,2] -> 1518

채점

이것은 . 가장 짧은 결과 (언어 당)가 자랑 할 권리를 얻습니다. 일반적인 허점은 제외됩니다.



답변

Wolfram Language (Mathematica) , 51 바이트

Mod[ChineseRemainder[1-Range@Length@#,#],LCM@@#,1]&

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


답변

껍질 , 7 바이트

VδΛ¦⁰ṫN

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

설명

VδΛ¦⁰ṫN  Input is a list x.
      N  The list [1,2,3...
     ṫ   Tails: [[1,2,3...],[2,3,4...],[3,4,5...]...
V        Index of first tail y satisfying this:
  Λ       Every element
    ⁰     of x
   ¦      divides
 δ        the corresponding element of y.


답변

MATL , 11 바이트

`Gf@q+G\a}@

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

`           % Do ....
 Gf         %   Convert input to [1,2,...,]
   @q+      %   Add current iteration index minus one, to get [n, n+1, ....]
      G\    %   Elementwise mod([n,n+1,...],[a_0,a_1,...])
        a   % ...while any of the modular remainders is nonzero.
         }  % Finally:
          @ %   Output the iteration index.

속도에 정확하게 최적화되지는 않았습니다 … 가장 큰 테스트 케이스는 MATL을 사용하는 데 1 분이 걸리고 MATLAB에서는 약 0.03이 걸립니다. MATL이 약간 더 많은 오버 헤드를 가질 가능성은 적습니다.


답변

자바 스크립트, 42 40 바이트

솔루션이 없거나 솔루션이 너무 큰 경우 재귀 오류가 발생합니다.

a=>(g=y=>a.some(x=>y++%x)?g(++n):n)(n=1)

Rick Hitchcock 의 포인터로 2 바이트 저장


시도 해봐

쉼표로 구분 된 숫자 목록을 입력하십시오.

o.innerText=(f=
a=>(g=y=>a.some(x=>y++%x)?g(++n):n)(n=1)
)(i.value=[5,4,3]);oninput=_=>o.innerText=f(i.value.split`,`.map(eval))
<input id=i><pre id=o>


답변

파이썬 3 , 62 바이트

f=lambda x,n=1:all(j%k<1for j,k in enumerate(x,n))or-~f(x,n+1)

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


답변

05AB1E , 9 바이트

Xµā<N+sÖP

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

설명

Xµ          # loop until counter equals 1
  ā         # push range [1 ... len(input)]
   <        # decrement
    N+      # add current iteration index N (starts at 1)
      sÖ    # elementwise evenly divisible by
        P   # product
            # if true, increase counter
            # output N


답변

하스켈 , 45 44 바이트

f a=[n|n<-[1..],1>sum(zipWith mod[n..]a)]!!0

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

편집 : nimi 덕분에 -1 바이트!