가장 가까운 파티션 번호


12

정수의 파티션 수는 정수가 양의 정수의 합으로 표현 될 수있는 방법의 수입니다.

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

5
4 + 1
3 + 2
3 + 1 + 1
2 + 2 + 1
2 + 1 + 1 + 1
1 + 1 + 1 + 1 + 1

숫자 5를 나타내는 7 가지 방법이 있으므로 7은 숫자 5에 해당하는 파티션 번호입니다.

파티션 번호 : OEIS : # A000041

지도

양의 정수를 입력으로 받아 두 개의 가장 가까운 파티션 번호를 생성 하는 두 개의 숫자를 입력 번호로 출력하는 프로그램을 작성하십시오 .

  • 입력은 양의 정수 여야합니다.
  • 입력 파티션 번호 가 아닌 경우 출력은 입력 번호와 가장 가까운 2 개의 파티션 번호를 생성하는 2 개의 다른 양의 정수 여야합니다. (두 개의 파티션 번호가 출력 번호 중 하나에 대해 동일한 후보 인 경우 어떤 것을 선택하든 상관 없습니다.)
  • 입력 파티션 번호 인 경우 출력은 입력 번호를 생성하는 양의 정수 여야합니다.
  • 입력과 출력은 합리적인 형식 일 수 있습니다.
  • 입력이 1 억보다 크지 않다고 가정 할 수 있습니다 (예 : 출력이 95보다 크지 않음).
  • 파티션 번호를 계산하는 내장 함수 는 다른 표준 허점 과 함께 사용할 수 없습니다 .
  • 이것은 이므로 바이트 수가 가장 적습니다.

파티션 번호 : OEIS : # A000041

Input: 66
Output: 11, 12

숫자 11과 12에 해당하는 파티션 번호는 56과 77이며 66과 가장 가까운 두 개의 파티션 번호입니다.

Input: 42
Output: 10

42는 이미 파티션 번호이므로 파티션 번호에 해당하는 번호 만 출력하면됩니다.

Input: 136
Output: 13, 14

(136에 가장 가까운 두 개의 파티션 번호는 실제로 136보다 두 개의 LESS이므로 (예 : 101 및 135), 14 및 15와 반대로 출력은 13 및 14입니다.)

Input: 1
Output: 0   or   1

(이 특별한 경우 0과 1은 모두 유효한 출력입니다.)

Input: 2484
Output: 26, 25   or   26, 27

(D 2,484 동일하기 때문에 이들 모두의 출력은 유효한 자세 1958 및 3010에서)

Input: 4
Output: 3, 4

(예)


파티션 번호가 무엇인지 정의하지 않았습니다
자랑스러운 Haskeller

@proudhaskeller 파티션 번호는 OEIS 시퀀스에 연결된 번호입니다. 파티션 번호가 무엇인지에 대한 설명 5이 맨 위에 있습니다. (당신은 분명히 충분하지 생각한다면 나는 설명을 추가합니다.)
kukac67

1
이것은 이 초기 파티션 질문 의 속임수에 매우 가깝 습니다 .
피터 테일러

답변:


2

피시스 , 53

L?!b<b1sm&d*^_1tdy-b/*dt*3d2r_bhbJo^-QyN2U99<J-2qQyhJ

설명과 더 많은 골프가 뒤 따릅니다.


4

파이썬 2, 179 바이트

Z=range(1,99)
R=Z+[1]
for i in Z:R[i]=sum(-(-1)**k*(3*k*k-k<=i*2and R[i-k*(3*k-1)/2])for k in range(-i,i+1)if k)
f=lambda n:zip(*sorted((abs(n-R[i]),i)for i in Z))[1][:2-(n in R)]

오일러의 오각 정리 에서 나온 재귀 공식을 사용합니다 .

로 전화하십시오 f(2484). 출력은 하나 또는 두 개의 숫자가있는 튜플입니다.


2

매쓰, 124 123 바이트

f@n_:=(p=SeriesCoefficient[1/Product[1-x^k,{k,#}],{x,0,#}]&;s=SortBy[Range@95,Abs[n-p@#]&];If[p@s[[1]]==n,s[[1]],s~Take~2])

OEIS 페이지 에서 가져온 파티션 번호에 대한 공식 . (부정 행위 일 수도 있고 아닐 수도 있습니다 ... 결정할 수 없었습니다.)

용법:

In: f[136]

Out: {14, 13}

나는이기려고 응답하지 않습니다. 그리고 나는 이것이 더 골프를 칠 수 있다고 확신합니다.

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