기술
모든 요소가 가장 가까운 정수로 내림 된 범위 함수의 결과가 제공됩니다. 당신의 목표는 원래 목록을 복구하는 것입니다.
예를 들어, 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)+rand
x(end)+rand
rand
0
1
x
루프는만큼 반복된다 any
의 floor
혼성 결과 다르다 ( -
에 대응하는 엔트리에서) 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
한계 값을 계산 합니다. 그런 다음 평균은에 사용 가능한 값을 제공하기 위해 사용 된 다음 가능한 최저 범위가 생성됩니다.C
A
B
C
답변
답변
입력 길이> 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