Golf un número trascendental

46

Definiciones

  • Un número algebraico es un número que es un cero de un polinomio distinto de cero con coeficientes enteros. Por ejemplo, la raíz cuadrada de 2es algebraica, porque es un cero de x^2 - 2.
  • Un número trascendental es un número real que no es algebraico.

Tarea

Debes elegir un número trascendental.

Luego, escriba un programa / función que tome un número entero positivo ny ngenere el décimo dígito decimal después del punto decimal de su número trascendental elegido. Debe indicar claramente en su envío, qué número trascendental se utiliza.

Puede usar 0-indexing o 1-indexing.

Ejemplo

e^2=7.389056098...es un número trascendental Para este número:

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

Tenga en cuenta que la inicial 7se ignora.

Como mencioné anteriormente, puede elegir otros números trascendentales.

Puntuación

Este es el . La puntuación más baja en bytes gana.

Monja permeable
fuente
¿Cómo manejan las diferentes respuestas el hecho de que hay un número finito de enteros que pueden usarse como argumento? 0 sería una respuesta aceptable ya que existe un número trascendental cuyos primeros dígitos maxInteger son 0
WNG
1
Los idiomas @WNG tienen una precisión arbitraria. No hay maxinteger.
Leaky Nun
1
@WNG Puede pensar en el índice de entrada como una cadena, no un entero, en idiomas que no tienen tipos de números arbitrariamente grandes.
isaacg

Respuestas:

112

Python , 3 bytes

min

Pruébalo en línea!

Toma una cadena numérica, genera su dígito más pequeño como un carácter más pequeño. Por ejemplo, 254da 2. Comienza el decimal con estos dígitos

0.0123456789011111111101222222220123333333012344444401234555550123456666012345678801234567

Este es OEIS A054054 .

Reclamación: este número ces trascendental

Prueba:c tenga en cuenta que es muy escaso: casi todos sus dígitos son cero. Eso es porque grande n, hay alta probabilidad de ntener un dígito cero, dando un dígito min de cero. Además, ctiene largas corridas de ceros consecutivos. Usamos un resultado existente que establece que este medio ces trascendental.

Siguiendo esta pregunta de matemáticas. SE , Z(k)represente la posición del k'dígito distinto de cero de c, y c_ksea ​​ese dígito distinto de cero, un número entero entre 1y 9. Luego, expresamos la expansión decimal de c, pero solo tomando los dígitos distintos de cero, como la suma k=1,2,3,...de c_k/10^Z(k).

Usamos el resultado del punto 4 de esta respuesta de George Lowther: eso ces trascendental si hay infinitas series de ceros que son al menos una fracción constante del número de dígitos hasta ahora. Formalmente, debe haber un ε>0tal que Z(k+1)/Z(k) > 1+εpara infinitos k. Usaremosε=1/9

Para cualquier número de dígitos d, tomar kcon Z(k) = 99...99la dpunta en blanco. Tal kexiste porque este dígito en ces un 9, y por lo tanto no es cero. Contando hacia arriba 99...99, todos estos números contienen un dígito cero, por lo que marca el inicio de una larga serie de ceros c. El siguiente dígito distinto de cero no es hasta Z(k+1) = 1111...11con d+1unos. La proporción Z(k+1)/Z(k)supera ligeramente 1+1/9.

Esto satisface la condición para todos d, lo que implica el resultado.

xnor
fuente
Estaría bastante emocionado de ver la prueba.
Leaky Nun
1
¿Esto está permitido? minen sí mismo no toma ninguna entrada y no proporciona ninguna salida, algo que parece ser un requisito de la pregunta. Claro, es la función clave en general, pero no hace nada sin el generador y la declaración de impresión aparentes en 'Pruébelo en línea'.
Mástil
66
@Mast Sí, el problema es generar el enésimo dígito dado n, no generar el decimal. El código de prueba es mostrar la secuencia de dígitos. Y una expresión que se evalúa como una función, incluida una función literal, es una presentación de función válida .
xnor
1
encantador :)))
Noodle9
38

Pyth, 1 byte

h

La entrada y la salida son cadenas. La función toma el primer dígito del índice. El número trascendental resultante se ve así:

0.0123456789111111111122222222223 ...

Esto es trascendental porque es 1/9más un número que tiene tramos de ceros de longitud al menos una fracción constante del número. En base a esta respuesta de intercambio matemático.apila , eso significa que el número es trascendental.

Hay tramos de ceros de dígito 100 ... 000a 199 ... 999, por lo que la relación de Z(k+1)a Z(k)es 2 infinitamente a menudo.

Por lo tanto, el número anterior menos 1/9es trascendental, por lo que el número anterior es trascendental.

isaacg
fuente
1
Tenga en cuenta que la pregunta formulada en la publicación M.SE vinculada no se aplica a este número, pero el punto 4 de la respuesta de George Lowther sí.
Henning Makholm
16

Python 2 , 19 bytes

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

El n º dígito es 1 si n es una potencia de 2 y 0 de otro modo.

Pruébalo en línea!

Dennis
fuente
3
Iba a responder esto, pero no encontré ninguna prueba de su trascendencia. ¿Qué te hace creer que este número es trascendente? n&~-n>0es más corto por cierto.
orlp
1
El número de
Leaky Nun
@orlp Tendría que preguntarle al OP si los booleanos están bien.
Dennis
1
@Scrooble Estos
Dennis
11

brainfuck, 2 bytes

,.

De manera similar a algunas otras respuestas, devuelve el primer dígito decimal e ignora el resto.

KSab
fuente
5

Retina, 4 bytes

1!`.

Devuelve el primer dígito del número de entrada. Debido a que ese puerto era tan aburrido, aquí hay algunos puertos más:

O`.
1!`.

(8 bytes) Devuelve el dígito mínimo del número de entrada.

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

(25 bytes) Devuelve 1 si el número de entrada es una potencia de 2.

.+
$*_

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

(30 bytes) La constante de Champernowne.

Neil
fuente
4

Brachylog 2, 7 bytes

⟦₁c;?∋₎

Pruébalo en línea!

Calcula dígitos de la constante de Champernowne (posiblemente multiplicado por una potencia de diez debido a problemas de indexación, que claramente no importan aquí). Básicamente, esto solo concatena enteros y luego toma el enésimo dígito.


fuente
¿Por qué lo necesitas ⟦₁?
Leaky Nun
@LeakyNun: porque de lo contrario comenzaríamos a concatenar números con 0, y no puede hacerlo porque 0123no es un número (tiene un cero inicial , que no se ajusta al concepto de Brachylog de qué es un número).
4

Python 2, 13 bytes

La entrada y la salida son cadenas.

lambda n:n[0]

El enésimo dígito del número es el dígito más significativo de n cuando se escribe en decimal.

Feersum
fuente
44
Debe incluir por qué este número es trascendental.
orlp
2
@orlp Parece que la referencia de xnor también se puede aplicar fácilmente aquí: reste 1/9 del número y luego Z (n + 1) / Z (n) ~ = 2 infinitamente a menudo (entre 10 ^ x y 2 * 10 ^ x )
Feersum
3

JavaScript, 51 bytes

Esta función calcula el ndígito de la constante de Champernowne. Agregue f=al principio e invoque como f(arg). Tenga en cuenta que nestá indexado 1.

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

Explicación

Esta función toma un solo argumento n. Entonces, crea una ncadena larga de caracteres de 1s repetitivos. Luego, divide esa cadena en una matriz de 1s. Después de eso, itera sobre cada elemento de la matriz y los multiplica con su índice en la matriz incrementado en 1. Luego, une la matriz sobre ""(cadena vacía) para formar una cadena. Por fin, devuelve eln elemento th de la cadena obtenida.

Nota: El tipo del valor devuelto siempre es String .

Fragmento de prueba

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>

Arjun
fuente
3

Python 2, 43 bytes

Champernowne es constante.

lambda n:"".join(`i`for i in range(n+1))[n]
orlp
fuente
¿Por qué lo necesitas n+1?
Leaky Nun
@LeakyNun Porque de lo contrario obtengo errores de indexación para n <= 1.
orlp
Puede usar la indexación 1.
Leaky Nun
@LeakyNun n <= 1.
orlp
Creo que necesitas especificar Python 2 para este.
numbermaniac
3

APL (Dyalog) , 3 bytes

2|⍴

Pruébalo en línea! (el conjunto de pruebas genera un rango de números de 1a 10000, los convierte en una cadena y luego aplica el tren 2|⍴sobre ellos).

Toma el número de entrada como una cadena y devuelve su longitud mod 2. Entonces 123=> 3 mod 2=> 1.

La secuencia comienza así:

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

así que esto puede generalizarse así: 9 1s 90 0s 900 1s ...

Multiplicar este número por 9 nos da un número de Liouville , que ha demostrado ser trascendental.

Kritixi Lithos
fuente
No creo que este sea necesariamente un número de Liouville, no es obvio para mí que pueda obtener n> 10. Sin embargo, se ajusta al teorema más fuerte que otras personas han estado usando aquí.
Ørjan Johansen
@ ØrjanJohansen Puede expresarlo como 1 - 10^-9 + 10^-99 - 10^-999 + 10^-9999 - 10^-99999 + ..., por lo que es un número de Liouville.
Leaky Nun
@LeakyNun La fracción de exponentes consecutivos es de aproximadamente 10, pero para ajustarse a la definición en Wikipedia debe ser ilimitada; es por eso que los índices 1 de la constante de Liouville original usan un factorial y no un exponencial.
Ørjan Johansen
3

Haskell, 25 bytes 17 bytes

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

La constante de Champernowne puede indexarse ​​0 o 1 ya que C10 * .01 sigue siendo trascendental.

Editar: según el comentario de nimis, puede usar la lista mónada para reducir esto a

(!!)$show=<<[1..]
Matt R
fuente
2
=<<de la lista mónada es concat.map: (!!)$show=<<[1..].
nimi
2

JavaScript, 73 bytes

Este es un programa que calcula el ndígito th de la constante de Liouville, donde nes el número de entrada dado al invocar la función gcomo g(arg)(y nestá indexado en 1). Tenga en cuenta que la nueva línea en el código es necesaria.

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}

Explicación

El programa consta de dos funciones, fy g. fes una función recursiva de computación factorial y ges la función principal del programa. g se supone que tiene un solo argumento n. Define un argumento predeterminado rcon un valor de 0. Luego, itera sobre todos los enteros de 0 a ny, en cada iteración, verifica si la función faplicada sobre i(el índice actual) es igual n, es decir, si nes un factorial de i. Si ese es el caso, rel valor de se establece en 1. Al final de la función, rse devuelve.

Fragmento de prueba

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>

Advertencia: ¡No ponga un valor muy grande en el cuadro de entrada del Fragmento! De lo contrario, su dispositivo puede congelarse.

Arjun
fuente
1

Pyth, 7 5 4 bytes

@jkS

Pruébalo en línea!

Utiliza la constante de Champernowne.

Guardado 2 3 bytes gracias a Leaky Nun.

aplaudir
fuente
1
puedes usar jkpara reemplazar sm`d, creo.
Leaky Nun
1
¿Se puede usar en Slugar de Uh?
Leaky Nun
Creo que son funcionalmente idénticos, así que sí. Leí totalmente los documentos>.>
aplaude
No son funcionales idénticos. Scomienza con 1y Ucomienza con 0.
Leaky Nun
¿Por qué revertiste tu edición? El número resultante sigue siendo trascendental.
Leaky Nun
1

Gelatina , 1 byte

Pruébalo en línea!

1er dígito de la entrada indexada 0 citada. 1

1 Ver la respuesta de isaacg como prueba de validez.

Erik el Outgolfer
fuente
1

Carbón de leña , 24 bytes (sin competencia)

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

Pruébalo en línea!

Nota: Al momento de la publicación, no funciona para ndonde nes un múltiplo positivo de 14.

Explicació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)]
Solo ASCII
fuente
GetVariable(Pi)? Entonces, ¿no hay una πvariable predefinida?
Neil
@Neil Todavía no, y yo estoy sin intención de realizar πigual a pi porque este es un lenguaje orientado a ASCII-arte, no una orientado a las matemáticas uno
ASCII de sólo
1

Japt , 3 1 + 1 = 2 1 byte

Otro puerto de solución de feersum .

Toma la entrada como una cadena.

g

Pruébalo en línea


Explicación

   :Implicit input of string U
g  :The first character of the string
Lanudo
fuente
La entrada puede ser una cadena, por lo que puede hacerlo gpor 1 byte :)
Oliver
El desafío no menciona la entrada de cadena, @obarakon, por lo que utilicé enteros en mis puertos JS y luego, aquí, aquí.
Shaggy
Ah, te tengo. Muchas de las otras respuestas utilizan entradas de cadena. Pero tienes razón, el OP no lo mencionó en el desafío.
Oliver
1

TI-BASIC, 16 bytes

Básicamente prueba si la entrada N (indexada en 1) es un número triangular. Esto es lo mismo que devolver el Ndígito th de 0.1010010001 ..., que se ha demostrado que es trascendental. La secuencia de dígitos es OEIS A010054 .

Input N
int(√(2N
2N=Ans(Ans+1
kamoroso94
fuente
0

Fourier, 16 bytes

I~NL~S10PS~XN/Xo

Pruébalo en línea!

Como lo han hecho otras respuestas, genera el primer dígito de la entrada.

Una explicación del código:

N = User Input
S = log(N)
X = 10 ^ S
Print (N/X)
Decaimiento Beta
fuente
0

JavaScript (ES6)

Solo unos pocos puertos de algunas otras soluciones


solución Python de feersum , 12 bytes

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


Solución Python de Dennis , 13 bytes

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


Solución Python de xnor , 20 bytes

n=>Math.min(...""+n)
Lanudo
fuente
0

C #, 13 bytes

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

De la solución de feersum. Casi la misma solución que el puerto js.

Pruébalo en línea

aloisdg dice Reinstate Monica
fuente
0

05AB1E , 3 1 byte

EDITAR : utilizando la prueba de las otras respuestas, devuelve el primer dígito de entrada

¬

1 indexado para π (solo hasta 100000 dígitos)

žs¤

Cómo funciona

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

O, si prefiere e (todavía indexado 1) (solo hasta 10000 dígitos)

žt¤

Pruébalo en línea!

Neil A.
fuente
0

J, 2 bytes

La misma solución que todos los demás están usando:

{.

Devuelve el primer dígito de n. IO está en condiciones

Constante de Liouville, 9 bytes

(=<.)!inv

Devoluciones 1 si input es el factorial de un entero.

Pi, 13 bytes

{:":<[email protected]^

El último dígito no decimal de pi multiplicado por 10 ^ n.

Bolce Bussiere
fuente