초월 골프


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가 제로가 아닌 숫자 사이의 전체 숫자 1와 9. 그런 다음, 우리는의 진수 확장을 표현 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취할 k와 Z(k) = 99...99와 d석장. 이러한는 k이 자리가 있기 때문에 존재 cA는 9, 그래서 제로. 에서 시작하여이 99...99숫자는 모두 0 자리 숫자를 포함하므로에서 0을 길게 시작합니다 c. 다음 제로가 아닌 숫자가 될 때까지하지 않습니다 Z(k+1) = 1111...11와 d+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 ... 000행 199 ... 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 의 힘 2 와 0 그렇지.

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


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}

설명

이 프로그램은 두 가지 기능으로 구성되어, f와 g. 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.