Fransén-Robinson 상수의 근사치


9

입력이 주어 n출력 께 값 Fransén 로빈슨 정수n반올림하여, 소수 놓은 후 숫자.

규칙

  • 모든 입력이 1과 60 사이의 정수라고 가정 할 수 있습니다.
  • 관련된 값을 저장할 수 없습니다-상수는 계산되지 않고 재 호출되지 않아야합니다.
  • 반올림은 다음 기준으로 수행해야합니다.
    • 마지막 숫자 다음의 숫자가 5보다 작 으면 마지막 숫자는 동일해야합니다.
    • 마지막 숫자 다음의 숫자가 5보다 크거나 같으면 마지막 숫자는 1 씩 증가해야합니다.
  • 첫 번째 n+1숫자 만 출력해야합니다 .
  • 표준 허점이 적용됩니다.

테스트 사례

>>> f(0)
3

>>> f(1)
2.8

>>> f(11)
2.80777024203

>>> f(50)
2.80777024202851936522150118655777293230808592093020

>>> f(59)
2.80777024202851936522150118655777293230808592093019829122005

>>> f(60)
2.807770242028519365221501186557772932308085920930198291220055

임의의 정밀 부동 소수점을 지원하지 않으면 어떻게됩니까?
flawr

1
@flawr 언어가 문자열 연결 또는 이와 유사한 형식을 사용해야한다고 가정합니다. 그렇지 않으면이 과제의 언어가 아닐 수 있습니다.
애디슨 크럼프

너무 나쁘다. 기본적으로 숫자를 하드 코딩하는 것만 남는다. 추신 : 왜 f(60)테스트 케이스에 추가하지 않습니까? 그렇게하면 참가자는 외부에서 가져올 필요가 없습니다 =)
flawr

@flawr 하드 코딩은 규칙 2에 의해 허용되지 않습니다
애디슨 크럼프에게

후행 0은 괜찮습니까?
Mego

답변:


7

Mathematica, 44 39 36 25 UTF-8 바이트

  • Sp3000 덕분에 -5 바이트
  • kennyTM 덕분에 -3 바이트
  • Senegrom 덕분에 -11 바이트

44를 넘어 도 여전히 44입니다!

N[∫1/x!{x,-1,∞},#+1]&

예:

f=N[∫1/x!{x,-1,∞},#+1]&
f[2]

출력 2.81.

설명

N[               , # + 1] 
  ∫1/x!{x,-1,∞}

첫 번째 단계는 (첫 번째 매개 변수) + 1 정밀도로 N나머지 숫자를 사용합니다 #. !(요소)는 당신이 기대하는 것을합니다. {x, -1, Infinity}(이상하게 포맷 된) Integral의 경계를 설정합니다.


나는 이것을 테스트 할 수 없으므로이 라운드를 올바르게 가정합니까?
애디슨 크럼

1
@VTCAKAVSMoACE 확인 n = 60했습니다. 올바르게 반올림됩니다. ( 61숫자 숫자는 8)입니다. 에 대한 Wolfram의 문서를 볼 수 있습니다 N.
NoOneIsHere 여기

쿨 리오. 그냥 확인 중입니다.
애디슨

대신에 리터럴 을 사용할 수 있습니다 Infinity. ComplexInfinity대신 생성하지 않으면 0으로 나누는 것이 좋습니다 .
Sp3000

1
유니 코드 -F74C가 N[∫1/x!{x,-1,∞},#+1]&어디에 있는지 보십시오 ; 𝕕Mathematica 와 같이 표시됩니다 . (전의 공간 &도 필요하지 않습니다 ...)
senegrom
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.