범위 매개 변수 복구


11

기술

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

예를 들어, 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]

최소한 하나의 출력 값이 10 진수 여야합니다. 그렇지 않으면 매번 입력을 반환 할 수 있습니다.
랜덤 남자

@Therandomguy는 그래프를 그릴 때 완벽하게 직선을 형성해야합니다
Arnauld

오오 오오 나는 이것을 보지 못했다. 그것은 물건을 양념해야합니다.
랜덤 남자

1
문제의 수식을 사용하면 A, B, C3 개의 부동 소수점이 될 수 있습니다. 입력 플로어링 범위는 예를 들어 시작 시간 56.7, 종료 시간 10.2및 단계 크기를 가질 수 있습니다 -2.159. 중요한 것은 바닥에있을 때 출력 한 점이 입력과 정확히 일치한다는 것입니다. 이를 보여주는 예를 추가했습니다.
Kyle G

2
@Rod 내가 본 것처럼, 원래의 두 번째 테스트 사례의 요점은 동일한 입력에 대해 여러 출력이 가능하다는 것을 설명하는 것이 었습니다.
Luis Mendo

답변:


3

옥타브 , 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.


a!=bany(a-b)
ovs

로 즉시 중지하기 때문에 @ovs 불행하게도, 일을하지 않는 일부 출력 항목이 입력에서,하지 때와 동일 모두가 않습니다. 링크에서 두 번째 출력의 두 번째 항목보기
Luis Mendo

(임의로 선택한 라인이 유효 할 확률이 0이 아닐 가능성이 있기 때문에)
user202729



1

파이썬 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




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