초월 골프


46

정의

  • 대수는 정수 계수를 가진 0이 아닌 다항식의 0 인 숫자입니다. 예를 들어의 제곱근 2은 0이므로 대수적입니다 x^2 - 2.
  • 초월 숫자는 대수가 아닌 실수입니다.

태스크

초월 번호를 선택해야합니다.

그런 다음 양의 정수를 사용하는 프로그램 / 함수를 작성하고 선택한 초월 숫자의 소수점 뒤에- 번째 10 진수를n 출력하십시오 . 초월 번호가 사용되는 제출물을 명확하게 진술해야합니다.n

0 인덱싱 또는 1 인덱싱을 사용할 수 있습니다.

e^2=7.389056098...초월 번호입니다. 이 번호의 경우 :

n output
1 3
2 8
3 9
4 0
5 5
6 6
7 0
8 9
9 8
...

이니셜 7은 무시됩니다.

위에서 언급했듯이 다른 초월 숫자를 선택할 수 있습니다.

채점

이것은 입니다. 바이트 단위의 최저 점수가 이깁니다.


다른 대답은 인수로 사용할 수있는 유한 한 정수가 있다는 사실을 어떻게 처리합니까? 첫 maxInteger 숫자가 0 인 초월 번호가 존재하므로 0은 허용되는 답변입니다.
WNG

1
@WNG 언어는 임의의 정밀도를 갖습니다. maxinteger가 없습니다.
Leaky Nun

1
@WNG 임의로 큰 숫자 유형이없는 언어에서는 입력 색인을 정수가 아닌 문자열로 생각할 수 있습니다.
isaacg

답변:


112

파이썬 , 3 바이트

min

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

숫자 문자열을 받아서 가장 작은 자릿수를 가장 작은 문자로 출력합니다. 예를 들어, 254gives 2. 이 자릿수를 가진 십진수가 시작됩니다

0.0123456789011111111101222222220123333333012344444401234555550123456666012345678801234567

이다 OEIS A054054 .

소유권 주장 : 이 숫자 c는 초월 적입니다.

증명 : 참고 c그 자리가 제로입니다 거의 모든의 : 매우 드물다. 이는 큰 n가능성 n이 높기 때문에 숫자가 0이므로 숫자의 최소값은 0입니다. 또한 c연속적인 0이 오래 지속됩니다. 이 방법 c은 초월 적이 라는 기존 결과를 사용합니다 .

이 다음 math.SE 질문 , LET Z(k)의 위치를 나타냅니다 k의 '일 제로가 아닌 숫자를 c하고하자 c_k가 제로가 아닌 숫자 사이의 전체 숫자 19. 그런 다음, 우리는의 진수 확장을 표현 c,하지만 이상 합계로 같이 제로가 아닌 숫자를 복용 k=1,2,3,...c_k/10^Z(k).

우리는 George Lowther 의이 답변의 4 점 결과를 사용합니다. 이것은c 적어도 지금까지 자릿수의 일정한 비율 인 0이 무한히 많은 경우 초월 적입니다. 공식적으로,이 생길 수 있어야합니다 ε>0그래서를 Z(k+1)/Z(k) > 1+ε무한히 많은 k. 우리는 사용할 것이다ε=1/9

숫자의 번호를 d취할 kZ(k) = 99...99d석장. 이러한는 k이 자리가 있기 때문에 존재 cA는 9, 그래서 제로. 에서 시작하여이 99...99숫자는 모두 0 자리 숫자를 포함하므로에서 0을 길게 시작합니다 c. 다음 제로가 아닌 숫자가 될 때까지하지 않습니다 Z(k+1) = 1111...11d+1사람. 비율이 Z(k+1)/Z(k)약간 초과 1+1/9합니다.

이것은 모든 조건을 만족시켜 d결과를 암시합니다.


나는 그 증거를보고 매우 흥분 할 것입니다.
Leaky Nun

1
이것이 허용됩니까? min그 자체는 입력을받지 않으며 출력을 제공하지 않습니다.이 질문의 요구 사항 인 것 같습니다. 물론, 그것은 전체적으로 핵심 기능이지만 '온라인으로 시도하십시오'에서 명백한 생성기 및 인쇄 설명이 없으면 아무것도하지 않습니다.
마스트

6
@Mast 네, 문제는 소수점을 생성하지 않고 n에 주어진 n 번째 숫자를 출력하는 것입니다. 테스트 코드는 일련의 숫자를 보여줍니다. 그리고 함수 리터럴을 포함하여 함수로 평가되는 표현식은 유효한 함수 제출 입니다.
xnor

1
즐거운 :)))
Noodle9

38

Pyth, 1 바이트

h

입력과 출력은 문자열입니다. 이 함수는 색인의 첫 번째 숫자를 사용합니다. 결과 초월 번호는 다음과 같습니다.

0.0123456789111111111122222222223 ...

이것은 1/9숫자의 적어도 일정한 분수의 0의 길이를 갖는 숫자에 더하기 때문에 초월 적 입니다. 을 바탕으로 이 math.stackexchange 응답 , 수를 초월하는 수단이다.

가 제로의 스트레치가 자리 출신이다 100 ... 000199 ... 999하므로 비율 Z(k+1)로는 Z(k)무한히 종종 2이다.

따라서 위의 숫자 빼기 1/9는 초월이므로 위의 숫자는 초월입니다.


1
점을 유의 질문은 질문 링크 M.SE 포스트에이 번호에 적용되지 않지만, 조지 로어로 답변 점 4는 않습니다.
Henning Makholm

16

파이썬 2 , 19 바이트

lambda n:1>>(n&~-n)

N은 번째 디지트가 경우 , N 의 힘 20 그렇지.

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


3
나는 이것에 대답하려고했지만 그 초월의 증거를 찾지 못했다. 이 숫자가 초월하다고 생각하는 이유는 무엇입니까? n&~-n>0그건 그렇고
orlp



@orlp 부울이 좋은지 OP에게 물어봐야합니다.
데니스


11

brainfuck, 2 바이트

,.

다른 답변과 마찬가지로 첫 번째 십진수를 반환하고 나머지는 무시합니다.



5

레티 나, 4 바이트

1!`.

입력 번호의 첫 번째 숫자를 반환합니다. 해당 포트가 너무 지루했기 때문에 다음과 같은 포트가 더 있습니다.

O`.
1!`.

(8 바이트) 입력 숫자의 최소 자릿수를 반환합니다.

.+
$*
+`^(11)+$
$#1$*
^1$

(25 바이트) 입력 숫자가 2의 거듭 제곱이면 1을 반환합니다.

.+
$*_

$.`
+1`.(\d*)_
$1
1!`.

Champernowne의 상수입니다.


4

Brachylog 2, 7 바이트

⟦₁c;?∋₎

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

Champernowne 상수의 자릿수를 계산합니다 (인덱싱 문제로 인해 10의 거듭 제곱은 여기에서 분명히 중요하지 않음). 기본적으로 이것은 정수를 연결 한 다음 n 번째 숫자 를 취합니다 .


왜 필요한 ⟦₁가요?
Leaky Nun

@LeakyNun : 그렇지 않으면 우리는 0으로 숫자를 연결하기 시작하고 숫자가 아니기 때문에 숫자를 연결할 수 없기 때문에 (제로 앞에 0 0123이 있으므로 숫자가 무엇인지 Brachylog의 개념에 맞지 않습니다).

4

파이썬 2, 13 바이트

입력과 출력은 문자열입니다.

lambda n:n[0]

숫자의 n 번째 숫자는 10 진수로 쓰여질 때 n의 최상위 숫자입니다.


4
이 숫자가 초월한 이유를 포함해야합니다.
orlp

2
@orlp xnor의 참조도 여기에 쉽게 적용 할 수있는 것처럼 보입니다. 숫자에서 1/9를 빼고 Z (n + 1) / Z (n) ~ = 2를 무한히 자주 (10 ^ x와 2 * 10 ^ x 사이) ).
feersum


3

자바 스크립트, 51 바이트

이 함수 n는 Champernowne 상수의 자리수를 계산합니다 . f=시작 부분에 추가 하고처럼 호출하십시오 f(arg). 주 n1 인덱스된다.

n=>[..."1".repeat(n)].map((c,i)=>c*++i).join``[n-1]

설명

이 함수는 단일 인수를 n받습니다. 그런 다음 n반복 길이가 1 인-문자 길이의 문자열을 만듭니다 . 그런 다음 해당 문자열을 1의 배열로 분할합니다. 그런 다음 Array의 모든 요소를 ​​반복하고 Array의 인덱스에 1 씩 증가합니다. 그런 다음 Array를 함께 ""(빈 문자열) 결합하여 String을 형성합니다. 마지막으로, n획득 한 문자열 의 th 요소를 반환합니다 .

참고 : 반환 된 값의 유형은 항상 String 입니다.

테스트 스 니펫

let f =

n=>[..."1".repeat(n)].map((c,i)=>c*++i).join``[n-1]

i.oninput = e => o.innerHTML = f(parseInt(e.target.value,10));
<input id=i><pre id=o></pre>


3

파이썬 2, 43 바이트

Champernowne의 상수입니다.

lambda n:"".join(`i`for i in range(n+1))[n]

왜 필요한 n+1가요?
Leaky Nun

@LeakyNun 그렇지 않으면 n <= 1에 대한 인덱싱 오류가 발생하기 때문에
orlp

1- 인덱싱을 사용할 수 있습니다.
Leaky Nun

@LeakyNun n <= 1.
orlp

이것에 대해 Python 2를 지정해야한다고 생각합니다.
numbermaniac

3

APL (Dyalog) , 3 바이트

2|⍴

온라인으로 사용해보십시오! (테스트 스위트에서 숫자의 범위를 생성 1하는 10000문자열로 변환 한 다음 기차를 적용 2|⍴그들에).

입력 번호를 문자열로 받아서 길이 mod 2를 리턴합니다. So 123=> 3 mod 2=> 1.

순서는 다음과 같이 시작됩니다.

1  1  1  1  1  1  1  1  1  0  0  0  0  0  0  ...

그래서 이것은 다음과 같이 일반화 될 수 있습니다 : 9 1s 90 0s 900 1s ...

이 숫자에 9를 곱하면 우월한 것으로 입증 된 Liouville 수를 얻게 됩니다.


나는 이것이 반드시 Liouville 수라고 생각하지 않습니다. n> 10을 얻을 수 있다는 것은 분명하지 않습니다. 그것은 수행 하지만, 여기에 다른 사람이 사용하고 강한 정리를 맞습니다.
Ørjan Johansen이

@ ØrjanJohansen로 표현할 수 1 - 10^-9 + 10^-99 - 10^-999 + 10^-9999 - 10^-99999 + ...있으므로 Liouville 번호입니다.
Leaky Nun

@LeakyNun 연속 지수의 비율은 약 10이지만 Wikipedia에 대한 정의에 맞추려면 제한이 없어야합니다. 따라서 원래 Liouville 상수의 1- 지수는 지수가 아닌 계승을 사용합니다.
Ørjan Johansen 님이

3

하스켈, 25 바이트 17 바이트

(!!)$concat$map show[1..]

C10 * .01이 여전히 초월이므로 Champernowne의 상수 는 0 또는 1로 색인 될 수 있습니다.

편집 : nimis 의견에 따라 목록 모나드를 사용하여 이것을 줄일 수 있습니다

(!!)$show=<<[1..]

2
=<<목록에서 monad는 concat.map다음과 같습니다 (!!)$show=<<[1..].
nimi

2

자바 스크립트, 73 바이트

n함수는 Liouville Constant의 숫자 를 계산하는 프로그램으로 , 여기서 n함수 g를 호출하여 입력 한 숫자 는 1 g(arg)이며 n인덱스는 1입니다. 코드의 개행이 필요합니다.

f=n=>n<1?1:n*f(n-1);g=(n,r=0)=>{for(i=0;i<=n;i++)if(f(i)==n)r=1
return r}

설명

이 프로그램은 두 가지 기능으로 구성되어, fg. f재귀 적 계승 계산 기능이며 g프로그램의 주요 기능입니다. 단일 인수가 g 있다고 가정 합니다 n. r값이 0 인 기본 인수 를 정의합니다. 그런 다음 0부터 모든 정수를 n반복하고 각 반복에서 f적용되는 함수 i(현재 색인)가 같은지 n여부, 즉 n계승 인지 여부를 확인합니다 i. 이런 경우가 발생하면 r의 값이 1로 설정됩니다. 함수가 끝나면 r반환됩니다.

테스트를위한 스 니펫

f=n=>n<1?1:n*f(n-1);g=(n,r=0)=>{for(i=0;i<=n;i++)if(f(i)==n)r=1
return r}

i.oninput = e => o.innerHTML = g(parseInt(e.target.value,10))
<input id=i><pre id=o></pre>

경고 : 스 니펫의 입력 상자에 큰 값을 넣지 마십시오! 그렇지 않으면 장치가 멈출 수 있습니다!


1

Pyth, 7 5 4 바이트

@jkS

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

Champernowne 상수를 사용합니다.

Leaky Nun 덕분에 2 3 바이트를 절약했습니다 .


1
당신은 jk교체 하는 데 사용할 수 sm`d있다고 생각합니다.
Leaky Nun

1
S대신 사용할 수 있습니까 Uh?
Leaky Nun

나는 그것들이 기능적으로 동일하다고 생각합니다. 나는 문서를 완전히 읽었습니다.>.>
clap

그것들은 기능적으로 동일하지 않습니다. S로 시작 1하고로 U시작합니다 0.
Leaky Nun

편집 내용을 되 돌린 이유는 무엇입니까? 결과 숫자는 여전히 초월입니다.
Leaky Nun



1

, 24 바이트 (비경쟁)

NαAIUVN⟦UGPi⁺α¹⟧β§β⁺α›α⁰

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

참고 : 포스트 타임 현재 14의 양의 배수 인 n곳에서는 작동하지 않습니다 n.

설명

Nα                             Input number to a
   A                  β        Assign to b
     I                         Cast
       UVN                    Evaluate variable N
            ⟦UGPi⁺α¹⟧         With arguments GetVariable(Pi) and a+1
                        §β⁺α›α⁰ Print b[a+(a>0)]

GetVariable(Pi)? 그래서 더있다 π변수를 미리 정의하지?
Neil

@Neil 아직은 아니고, 저는 π수학 지향 언어가 아닌 ASCII 예술 지향 언어이기 때문에 pi와 동등하게 만들려고 하지 않습니다
ASCII 전용

1

Japt , 3 1 + 1 = 2 1 바이트

feersum의 솔루션의 또 다른 포트 .

입력을 문자열로받습니다.

g

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


설명

   :Implicit input of string U
g  :The first character of the string

입력은 문자열이 될 수 있으므로 g1 바이트로 할 수 있습니다 :)
Oliver

도전 과제는 @obarakon 문자열 입력을 언급하지 않으므로 JS 포트에 정수를 사용한 다음 여기에 정수를 사용 했습니다.
Shaggy

아. 다른 많은 답변들이 문자열 입력을 사용했습니다. 그러나 당신이 옳습니다. OP는 도전에서 그것을 언급하지 않았습니다.
Oliver

1

TI-BASIC, 16 바이트

기본적으로 입력 N(1 색인)이 삼각 숫자 인지 테스트합니다 . 이것은 N0.1010010001…의 숫자 를 반환하는 것과 같습니다. 이것은 초월적인 것으로 입증되었습니다 . 자릿수 순서는 OEIS A010054 입니다.

Input N
int(√(2N
2N=Ans(Ans+1


0

자바 스크립트 (ES6)

다른 솔루션의 일부 포트


feersum의 Python 솔루션 , 12 바이트

n=>(""+n)[0]


Dennis의 Python 솔루션 , 13 바이트

n=>1>>(n&--n)


xnor의 Python 솔루션 , 20 바이트

n=>Math.min(...""+n)



0

05AB1E , 3 1 바이트

편집 : 다른 답변의 증명을 사용하여 입력의 첫 번째 숫자를 반환합니다.

¬

π에 대해 1- 인덱싱 됨 (100000 자리까지만)

žs¤

작동 원리

žs  # Implicit input. Gets n digits of pi (including 3 before decimal)
  ¤ # Get last digit

또는 e를 선호하는 경우 (여전히 1- 인덱싱 됨) (10000 자리까지만)

žt¤

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


0

J, 2 바이트

다른 사람들이 사용하는 동일한 솔루션 :

{.

n의 첫 번째 숫자를 반환합니다. IO는 문자열에 있습니다

리오 빌 상수, 9 바이트

(=<.)!inv

1입력이 정수의 계승인지 여부를 반환 합니다.

파이, 13 바이트

{:":<.@o.10x^

파이의 마지막 10 진수는 10 ^ n입니다.





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