Golf eine transzendentale Zahl


46

Definitionen

  • Eine algebraische Zahl ist eine Zahl, die eine Null eines Nicht-Null-Polynoms mit ganzzahligen Koeffizienten ist. Zum Beispiel ist die Quadratwurzel von 2algebraisch, weil es eine Null von ist x^2 - 2.
  • Eine transzendentale Zahl ist eine reelle Zahl, die nicht algebraisch ist.

Aufgabe

Sie müssen eine transzendentale Zahl wählen.

Schreiben Sie dann ein Programm / eine Funktion, die eine positive Ganzzahl annimmt, nund geben Sie die n-te Dezimalstelle nach dem Dezimalpunkt der von Ihnen gewählten transzendentalen Zahl aus. Sie müssen in Ihrem Beitrag klar angeben, welche transzendentale Nummer verwendet wird.

Sie können 0-Indizierung oder 1-Indizierung verwenden.

Beispiel

e^2=7.389056098...ist eine transzendentale Zahl. Für diese Nummer:

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

Beachten Sie, dass die Initiale 7ignoriert wird.

Wie oben erwähnt, können Sie andere transzendentale Zahlen wählen.

Wertung

Das ist . Die niedrigste Punktzahl in Bytes gewinnt.


Wie gehen die verschiedenen Antworten damit um, dass es eine endliche Anzahl von Ganzzahlen gibt, die als Argument verwendet werden können? 0 wäre eine akzeptable Antwort, da eine transzendente Zahl existiert, deren erste maxInteger-Ziffern 0 sind
WNG

1
@WNG Sprachen haben eine beliebige Genauigkeit. Es gibt keine maxinteger.
Undichte Nonne

1
@WNG Sie können sich den Eingabeindex als Zeichenfolge und nicht als Ganzzahl in Sprachen vorstellen, die keine willkürlich großen Zahlentypen haben.
isaacg

Antworten:


112

Python , 3 Bytes

min

Probieren Sie es online!

Nimmt eine Zahlenfolge und gibt die kleinste Ziffer als kleinstes Zeichen aus. Zum Beispiel 254gibt 2. Die Dezimalstelle mit diesen Ziffern beginnt

0.0123456789011111111101222222220123333333012344444401234555550123456666012345678801234567

Dies ist OEIS A054054 .

Behauptung: Diese Zahl cist transzendental

Beweis: Beachten Sie, dass ces sehr spärlich ist: Fast alle Ziffern sind Null. Das ist, weil groß n, es gibt eine hohe Wahrscheinlichkeit nhat eine Ziffer Null, was eine Ziffer min von Null gibt. Darüber hinaus chat lange Läufe von aufeinanderfolgenden Nullen. Wir verwenden ein vorhandenes Ergebnis, das besagt, dass dies ctranszendental ist.

Im Anschluss an dieser math.SE Frage , lassen Sie Z(k)die Position der repräsentiert k-te Ziffer ungleich Null von c, und lassen Sie c_kdiese Ziffer ungleich Null sein, eine ganze Zahl zwischen 1und 9. Dann drücken wir die Dezimalerweiterung von aus c, nehmen aber nur die Ziffern ungleich Null als die Summe k=1,2,3,...von c_k/10^Z(k).

Wir verwenden das Ergebnis von Punkt 4 dieser Antwort von George Lowther: Das cist transzendental, wenn es unendlich viele Nullenreihen gibt, die mindestens einen konstanten Bruchteil der Anzahl der Ziffern ausmachen. Formal muss eine sein , ε>0so dass Z(k+1)/Z(k) > 1+εfür unendlich viele k. Wir werden verwendenε=1/9

Für eine beliebige Anzahl von Ziffern d, nehmen Sie kmit Z(k) = 99...99mit dNeunen. Ein solches kexistiert, weil diese Ziffer in ca 9und somit ungleich Null ist. Zählen aus 99...99, enthalten diese Zahlen alle eine Ziffer Null, so dass es markiert den Beginn einer langen Abfolge von Nullen in c. Die nächste Ziffer ungleich Null kommt erst Z(k+1) = 1111...11mit d+1Einsen. Das Verhältnis Z(k+1)/Z(k)überschreitet etwas 1+1/9.

Dies erfüllt die Bedingung für jeden dund impliziert das Ergebnis.


Ich würde mich sehr freuen, den Beweis zu sehen.
Undichte Nonne

1
Ist das erlaubt? minselbst nimmt keine Eingabe und liefert keine Ausgabe, was von der Frage als eine Anforderung angesehen wird. Sicher, es ist die Schlüsselfunktion im Ganzen, aber ohne den Generator und die Druckanweisung, die im Abschnitt "Online testen" zu sehen sind, geht nichts.
Mast

6
@Mast Ja, das Problem besteht darin, die n-te Stelle mit n auszugeben und nicht die Dezimalstelle zu generieren. Der Testcode soll die Ziffernfolge anzeigen. Ein Ausdruck, der zu einer Funktion ausgewertet wird, einschließlich eines Funktionsliteral, ist eine gültige Funktionsübermittlung .
16.

1
herrlich :)))
Noodle9

38

Pyth, 1 Byte

h

Eingabe und Ausgabe sind Zeichenfolgen. Die Funktion übernimmt die erste Ziffer des Index. Die resultierende transzendentale Zahl sieht folgendermaßen aus:

0.0123456789111111111122222222223 ...

Dies ist transzendental, weil es sich um 1/9eine Pluszahl handelt, die zumindest einen konstanten Bruchteil der Anzahl von Nullen aufweist. Basierend auf dieser math.stackexchange-Antwort bedeutet dies, dass die Zahl transzendental ist.

Es gibt Abschnitte von Nullen von Ziffer 100 ... 000zu 199 ... 999, so dass das Verhältnis von Z(k+1)zu Z(k)unendlich oft 2 ist.

Somit ist die obige Zahl minus 1/9transzendental und somit ist die obige Zahl transzendental.


1
Beachten Sie, dass die im verknüpften M.SE-Beitrag gestellte Frage nicht für diese Nummer gilt, Punkt 4 der Antwort von George Lowther jedoch.
Henning Makholm

16

Python 2 , 19 Bytes

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

Die n - te Ziffer 1 , wenn n eine Potenz von ist 2 und 0 sonst.

Probieren Sie es online!


3
Ich wollte darauf antworten, fand aber keinen Beweis für seine Transzendenz. Warum glaubst du, dass diese Zahl transzendent ist? n&~-n>0ist übrigens kürzer.
Orlp



@orlp Ich muss das OP fragen, ob es den Booleschen gut geht.
Dennis


11

Brainfuck, 2 Bytes

,.

Gibt ähnlich wie bei einigen anderen Antworten die erste Dezimalstelle zurück und ignoriert den Rest.



5

Retina, 4 Bytes

1!`.

Gibt die erste Ziffer der eingegebenen Nummer zurück. Da dieser Port so langweilig war, hier noch ein paar Ports:

O`.
1!`.

(8 Byte) Gibt die minimale Ziffer der eingegebenen Nummer zurück.

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

(25 Byte) Gibt 1 zurück, wenn die eingegebene Zahl eine Zweierpotenz ist.

.+
$*_

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

(30 Byte) Die Champernowne-Konstante.


4

Brachylog 2, 7 Bytes

⟦₁c;?∋₎

Probieren Sie es online!

Berechnet die Ziffern der Champernowne-Konstante (möglicherweise mal eine Zehnerpotenz aufgrund von Indexierungsproblemen, die hier offensichtlich keine Rolle spielen). Im Grunde verkettet dies nur ganze Zahlen und nimmt dann die n-te Ziffer.


Warum brauchen Sie ⟦₁?
Undichte Nonne

@LeakyNun: Weil wir sonst anfangen würden, Zahlen mit 0 zu verketten, und Sie können das nicht tun, weil 0123es keine Zahl ist (es hat eine führende Null, die nicht in Brachylogs Konzept passt, was eine Zahl ist).

4

Python 2, 13 Bytes

Eingabe und Ausgabe sind Zeichenfolgen.

lambda n:n[0]

Die n-te Ziffer der Zahl ist die höchstwertige Ziffer von n, wenn sie dezimal geschrieben ist.


4
Sie sollten angeben, warum diese Zahl transzendental ist.
Orlp

2
@orlp Sieht so aus, als ob die Referenz von xnor auch hier leicht angewendet werden kann - subtrahieren Sie 1/9 von der Zahl und dann Z (n + 1) / Z (n) ~ = 2 unendlich oft (zwischen 10 ^ x und 2 * 10 ^ x ).
Feersum


3

JavaScript, 51 Bytes

Diese Funktion berechnet die nZiffer der Champernowne-Konstante. Fügen Sie f=am Anfang und rufen Sie wie f(arg). Beachten Sie, dass n1-indiziert ist.

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

Erläuterung

Diese Funktion akzeptiert ein einzelnes Argument n. Dann wird eine nZeichenfolge mit einer Länge von sich wiederholenden 1s erstellt. Dann wird dieser String in ein Array von 1s aufgeteilt. Danach durchläuft es jedes Element des Arrays und multipliziert sie mit ihrem Index im Array, der um 1 erhöht wird. Anschließend fügt es das Array über ""(leere Zeichenfolge) zusammen, um eine Zeichenfolge zu bilden. Zuletzt wird das nth-Element des erhaltenen Strings zurückgegeben.

Hinweis: Der Typ des zurückgegebenen Werts ist immer String .

Testschnipsel

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

Python 2, 43 Bytes

Champernownes Konstante.

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

Warum brauchen Sie n+1?
Undichte Nonne

@LeakyNun Weil ich sonst Indexierungsfehler für n <= 1
bekomme.

Sie können die 1-Indizierung verwenden.
Undichte Nonne

@LeakyNun n <= 1.
orlp

Ich denke, Sie müssen Python 2 für dieses angeben.
numbermaniac

3

APL (Dyalog) , 3 Bytes

2|⍴

Probieren Sie es online! (Die Testsuite generiert einen Zahlenbereich von 1bis 10000, konvertiert sie in eine Zeichenfolge und wendet dann den Zug 2|⍴auf sie an.)

Nimmt die eingegebene Nummer als String und gibt ihre Länge mod 2 zurück. Also 123=> 3 mod 2=> 1.

Die Sequenz beginnt wie folgt:

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

Das kann so verallgemeinert werden: 9 1s 90 0s 900 1s ...

Wenn wir diese Zahl mit 9 multiplizieren, erhalten wir eine Liouville-Zahl , die nachweislich transzendental ist.


Ich denke nicht, dass dies notwendigerweise eine Liouville-Zahl ist - für mich ist es nicht offensichtlich, dass Sie n> 10 erhalten können. Es passt jedoch zu dem stärkeren Theorem, das andere Leute hier verwendet haben.
Ørjan Johansen

@ ØrjanJohansen Du kannst es als ausdrücken 1 - 10^-9 + 10^-99 - 10^-999 + 10^-9999 - 10^-99999 + ..., es ist also eine Liouville-Nummer.
Undichte Nonne

@LeakyNun Der Bruchteil aufeinanderfolgender Exponenten beträgt ungefähr 10, aber um der Definition in Wikipedia zu entsprechen, muss er nicht begrenzt sein - deshalb verwenden die 1-Indizes der ursprünglichen Liouville-Konstante eine Fakultät und keine Exponentialzahl.
Ørjan Johansen

3

Haskell, 25 Bytes 17 Bytes

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

Champernownes Konstante kann 0 oder 1 sein, da C10 * .01 immer noch transzendental ist.

Bearbeiten: Nach NIMIS Kommentar können Sie die Liste Monade verwenden, um dies zu reduzieren

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

2
=<<aus der Liste Monade ist concat.map: (!!)$show=<<[1..].
nimi

2

JavaScript, 73 Bytes

Dies ist ein Programm, das die ndritte Ziffer der Liouville-Konstante berechnet. Hierbei handelt nes sich um die eingegebene Nummer, die durch Aufrufen der Funktion gas g(arg)(und n1-indiziert) angegeben wird. Beachten Sie, dass die neue Zeile im Code erforderlich ist.

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}

Erläuterung

Das Programm besteht aus zwei Funktionen fund g. fist eine rekursive Fakultätsberechnungsfunktion und gist die Hauptfunktion des Programms. g geht davon aus , ein einziges Argument zu haben n. Es definiert ein Standardargument rmit dem Wert 0. Es iteriert dann über alle Ganzzahlen von 0 bis nund prüft in jeder Iteration, ob die füber i(den aktuellen Index) angewendete Funktion gleich ist n, dh ob neine Fakultät von ist i. In diesem Fall wird rder Wert auf 1 gesetzt. Am Ende der Funktion rwird zurückgegeben.

Snippet zum Testen

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>

Warnung: Geben Sie keinen sehr großen Wert in das Eingabefeld des Snippets ein! Andernfalls kann Ihr Gerät einfrieren!


1

Pyth, 7 5 4 Bytes

@jkS

Probieren Sie es online!

Verwendet die Konstante von Champernowne.

2 3 Bytes dank Leaky Nun gespeichert .


1
Sie können verwenden jk, um zu ersetzen sm`d, glaube ich.
Undichte Nonne

1
Können Sie Sanstelle von verwenden Uh?
Undichte Nonne

Ich denke, sie sind funktional identisch, also ja. Ich habe die Dokumente vollständig durchgelesen>.>
klatschen

Sie sind nicht funktionsgleich. Sbeginnt mit 1und Ubeginnt mit 0.
Undichte Nonne

Warum hast du deine Bearbeitung zurückgesetzt? Die resultierende Zahl ist immer noch transzendental.
Undichte Nonne



1

Kohle , 24 Bytes (nicht konkurrierend)

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

Probieren Sie es online!

Hinweis: Funktioniert zum Zeitpunkt der Nachbearbeitung nicht, nwenn nein positives Vielfaches von 14 vorliegt.

Erläuterung

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)? Es gibt also keinen πVariable vorgegeben?
Neil

@Neil Noch nicht, und ich habe nicht vor π, pi gleichzusetzen, da dies eine ASCII-art-orientierte Sprache ist, keine mathematisch-orientierte
ASCII

1

Japt , 3 1 + 1 = 2 1 Byte

Ein weiterer Hafen von Feersums Lösung .

Übernimmt die Eingabe als Zeichenfolge.

g

Probieren Sie es online aus


Erläuterung

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

Die Eingabe kann eine Zeichenfolge sein, Sie können also g1 Byte eingeben :)
Oliver

Die Herausforderung erwähnt nicht die Zeichenfolgeneingabe @obarakon, daher habe ich Ganzzahlen in meinen JS-Ports und dann hier verwendet.
Shaggy

Ah, gotcha. Viele der anderen Antworten verwendeten Zeichenfolgeneingaben. Aber Sie haben Recht, das OP hat es in der Herausforderung nicht erwähnt.
Oliver

1

TI-BASIC, 16 Bytes

Grundsätzlich wird geprüft, ob die Eingabe N(1-indiziert) eine Dreieckszahl ist. Dies entspricht der Rückgabe der Ndritten Ziffer von 0.1010010001…, die sich als transzendental erwiesen hat . Die Ziffernfolge ist OEIS A010054 .

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

0

Fourier, 16 Bytes

I~NL~S10PS~XN/Xo

Probieren Sie es online!

Gibt, wie andere Antworten auch, die erste Ziffer der Eingabe aus.

Eine Erklärung des Codes:

N = User Input
S = log(N)
X = 10 ^ S
Print (N/X)

0

JavaScript (ES6)

Nur ein paar Ports von einigen anderen Lösungen


Python-Lösung von feersum , 12 Byte

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


Dennis 'Python-Lösung , 13 Bytes

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


Python-Lösung von xnor , 20 Byte

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



0

05AB1E , 3 1 Byte

BEARBEITEN : Unter Verwendung des Beweises aus den anderen Antworten wird die erste Stelle der Eingabe zurückgegeben

¬

1-indiziert für π (nur bis zu 100000 Stellen)

žs¤

Wie es funktioniert

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

Oder wenn Sie e bevorzugen (immer noch 1-indiziert) (nur bis zu 10000 Stellen)

žt¤

Probieren Sie es online!


0

J, 2 Bytes

Dieselbe Lösung, die alle anderen verwenden:

{.

Gibt die erste Ziffer von n zurück. IO ist auf Saiten

Liouvilles Konstante, 9 Bytes

(=<.)!inv

Gibt zurück, 1ob die Eingabe die Fakultät einer Ganzzahl ist.

Pi, 13 Bytes

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

Die letzte nicht dezimale Stelle von pi mal 10 ^ n.





Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.