범위 매개 변수 복구 올바른 추측은 바닥에있을 때 입력과 정확하게 일치해야하며

기술

모든 요소가 가장 가까운 정수로 내림 된 범위 함수의 결과가 제공됩니다. 당신의 목표는 원래 목록을 복구하는 것입니다.

예를 들어, Python3의 다음 함수는 프로그램에 대한 입력을 생성합니다.

from numpy import arange, floor
def floored_range(A, B, C):
    return list(floor(arange(A, B, C)))

프로그램의 결과는 원본 데이터를 올바르게 추측해야합니다. 여기서 올바른 추측은 바닥에있을 때 입력과 정확하게 일치해야하며 범위 함수의 가능한 출력이어야합니다 (즉, 그래프로 표시 할 때 완벽하게 직선을 형성해야 함).

Input: [1,2,3,4]
Output: [1,2,3,4]

Input: [1,2,3,4]
Output: [1.9,2.7,3.5,4.3]

Input: [1,2,3,4,5,5]
Output: [1.9,2.7,3.5,4.3,5.1,5.9]

Input: [1,1,2,2,3,3,4,4]
Output: [1,1.5,2,2.5,3,3.5,4,4.5]

Input: [1,1,2,3,3,4]
Output: [1,1.7,2.4,3.1,3.8,4.5]

Input: [56, 54, 52, 50, 48, 45, 43, 41, 39, 37, 35, 32, 30, 28, 26, 24, 22, 19, 17, 15, 13, 11]
Output: [56.7  , 54.541, 52.382, 50.223, 48.064, 45.905, 43.746, 41.587,
   39.428, 37.269, 35.11 , 32.951, 30.792, 28.633, 26.474, 24.315,
   22.156, 19.997, 17.838, 15.679, 13.52 , 11.361]



답변

옥타브 , 82 바이트

function y=f(x)
while any(floor(y=linspace(x(1)+rand,x(end)+rand,numel(x)))-x),end

실행 시간은 결정적이지 않지만 코드는 확률 1로 유한 시간으로 끝납니다.

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

설명

코드는 출력 function중 하나 x를 정의합니다 y. 이 기능은 while루프 로 구성됩니다 .

각 반복에서 시작하여 시작하여 끝나는 numel(x)선형 간격 값 의 올바른 양 ( )이 생성됩니다 ( linspace) . 받는 이들 두 통화 기능 사이의 임의의 오프셋 부여 와 의 초기 및 최종 값에 적용된다 .x(1)+randx(end)+randrand01x

루프는만큼 반복된다 anyfloor혼성 결과 다르다 ( -에 대응하는 엔트리에서) x.


답변

파이썬 3 , 189 바이트

def f(l):
 R=range(len(l));e=1-1e-9
 for j in R:
  for I in range(j*4):
   i=I//4;L=[((l[i]+I//2%2*e)*(x-j)-(l[j]+I%2*e)*(x-i))/(i-j)for x in R]
   if[x//1 for x in L]==l:return L
 return l

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

입방 시간.

수치 문제가 있습니다.


답변

R , 86 바이트

function(n){while(any(n-(x=seq(n[1]+runif(1),tail(n,1)+runif(1),l=sum(n|1)))%/%1))0;x}

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

Luis Mendo의 답변의 R 포트 ; any강제로 인해 많은 경고가 발생 logical하지만 무시할 수 있습니다.


답변

파이썬 3 , 168 바이트

def f(l):r=range(len(l));g=lambda n:[(l[b]+n-l[a])/(b-a)for a in r for b in r if b>a]or[0];s=(max(g(-1))+min(g(1)))/2;m=min(a*s-l[a]for a in r);return[a*s-m for a in r]

온라인으로 사용해보십시오! 설명 : 해당 범위에 대한 존재 및 존재 범위를 벗어난 g한계 값을 계산 합니다. 그런 다음 평균은에 사용 가능한 값을 제공하기 위해 사용 된 다음 가능한 최저 범위가 생성됩니다.CABC


답변

젤리 , 31 바이트

ṾṚ”.;V×LḶ$}+©1ị$}IEȧḞ⁼¥ʋ
0ç1#®ḷ

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

경고 : 부동 소수점 부정확.


답변

입력 길이> 1을 가정하고 JavaScript (Node.js) , 94 바이트

f=x=>(t=x.map(_=>a+=b,b=x[1]+(c=Math.random)(a=x[0]+c())-a,a-=b)).map(Math.floor)+''==x?t:f(x)

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

97 바이트

f=x=>(t=x.map(_=>a+=b,b=x[1]+(c=Math.random)(a=x[0]+c())-a||0,a-=b)).map(Math.floor)+''==x?t:f(x)


답변

파이썬 2 , 212 바이트

def f(l):
 C=[(0,1.,0,1.)]
 for a,A,b,B in C:
  x,y=(A+a)/2,(B+b)/2;r=[l[0]+x+i*(l[-1]+y-l[0]-x)/(~-len(l)or 1)for i in range(len(l))];C+=[(x,A,y,B),(a,x,y,B),(x,A,b,y),(a,x,b,y)]
  if[n//1for n in r]==l:return r

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