Betrachten Sie die unendliche Folge aller nichtnegativen Dezimalzahlen, die nacheinander verkettet sind (ähnlich der Champernowne-Konstante ):
0123456789101112131415161718192021222324252627282930...979899100101102103...
Schreiben Sie ein Programm oder eine Funktion, die eine nicht negative Ganzzahl enthält, die (0-basiert) in diese unendliche Zeichenfolge indiziert. Geben Sie einen Wahrheitswert aus , wenn die indizierte Ziffer 0 ist, andernfalls einen falschen Wert, wenn die Ziffer 1-9 ist.
Der kürzeste Code in Bytes gewinnt.
Die ersten 25 wahrheitsgemäßen Eingaben sind:
0
11
31
51
71
91
111
131
151
171
191
192
194
197
200
203
206
209
212
215
218
222
252
282
312
Ein großes Lob, wenn Ihr Programm speichereffizient ist, dies ist jedoch keine Voraussetzung.
code-golf
string
integer
decision-problem
Calvins Hobbys
quelle
quelle
Antworten:
Haskell, 25 Bytes
Anwendungsbeispiel:
(<'1').((show=<<[0..])!!) 312
->True
quelle
05AB1E , 5 Bytes
Code:
Erläuterung:
Verwendet die CP-1252- Codierung. Probieren Sie es online!
quelle
Mathematica,
4240 BytesAnonyme Funktion. Nimmt eine Zahl als Eingabe und gibt entweder
True
oderFalse
als Ausgabe zurück. Eine längere und dennoch effizientere (?) Lösung:quelle
CJam, 9 Bytes
Dies ist ein unbenannter Block (Funktion), der eine Ganzzahl aufnimmt und dementsprechend 0 oder 1 zurückgibt.
Erläuterung:
Online-Dolmetscher . Beachten Sie, dass
~
ein Block ausgewertet wird. Alternativ können Sie diese Testsuite ausführen , mit,
der die ersten 1000 Zahlen nach Wahrheitswerten gefiltert werden.quelle
MATL, 11 Bytes
Probieren Sie es online!
Erklärung :
quelle
Brachylog ,
108 Bytes2 Bytes dank Fatalize.
Probieren Sie es online!
quelle
@e
vektorisiert soy@ec:?m0
funktioniert, um 2 Bytes zu sparen.#0
,#1
,#+
,#_
,#>
und#<
vectorize wie der@e
Fall ist. Einige der vektorisierenden Prädikate, z. B.+
oder*
nicht rekursiv auf die niedrigste Listenebene, führen je nach Struktur der Eingabe nicht dasselbe aus.Perl 6 ,
2625 BytesEin Lambda, das eine Zahl als Eingabe annimmt und ein
True
oder zurückgibtFalse
.Speichereffizient.
Wie es funktioniert
0..*
- Konstruieren Sie den Bereich von 0 bis unendlich.map(|*.comb, )
- Durchlaufen Sie den Bereich langsam, indem Sie jede Zahl durch die Zeichen ihrer Zeichenfolgendarstellung ersetzen und eine neue Lazy-Sequenz zurückgeben. Das|
hält die neue Sequenz abgeflacht.[$_]
- Nehmen Sie das Element an den Index, der durch den (implizit deklarierten) Lambda-Parameter definiert ist$_
.+
- Erzwinge es zu einer Nummer. (Dieser Schritt ist erforderlich, da das Erzwingen einer Zeichenfolge direkt in einen Booleschen Wert immer True ergibt, sofern die Zeichenfolge nicht leer ist.)!
- Erzwinge es zu einem Booleschen und negiere es.( online ausprobieren )
BEARBEITEN: -1 Byte dank b2gills.
quelle
{!+map(|*.comb,0..*)[$_]}
ich sie gefunden habe,{!+({|($++).comb}...*)[$_]}
bevor Sie nachsehen, ob es bereits eine P6-Antwort gibt.!+
kann ersetzt werden durch1>
Gelee , 6 Bytes
Probieren Sie es online! oder überprüfen Sie alle Testfälle .
Wie es funktioniert
quelle
Python 3.5, 40 Bytes
Testen Sie es auf repl.it .
Wie es funktioniert
Bei Eingabe von n wird
'%d'*-~n
die Formatzeichenfolge n + 1 Mal wiederholt .(*range(n),n)
packt den Bereich [0, ..., n - 1] aus und liefert das Tupel (0, ..., n) ....%...
Ersetzt jedes Vorkommen von % d durch die entsprechende Ganzzahl im Bereich und ergibt die Zeichenfolge 01234567891011 ... n .(...)[n]<'1'
Wählt das Zeichen am Index n aus und prüft, ob es kleiner als das Zeichen 1 ist .quelle
Python 3, 44 Bytes
Eine anonyme Funktion , die Eingabe über Argument und gibt nimmt
True
oderFalse
als angemessen.Wie es funktioniert
Probieren Sie es auf Ideone
quelle
Pyth,
87 BytesVielen Dank an @LeakyNun für -1 Byte
Dies ist mein erster Versuch, in Pyth Golf zu spielen.
Ein vollständiges Programm, das druckt
True
oderFalse
entsprechend.Probieren Sie es online aus
Erste 25 wahrheitsgemäße Eingaben
Wie es funktioniert
quelle
SILOS , 141 Bytes
Probieren Sie es online!
Verwendet nur 5 Ganzzahlen, maximale Speichereffizienz \ o /
Erläuterung
Wir generieren so viele Ziffern wie die Eingabe in der Champernowne-Konstante.
In der Hauptschleife machen wir Folgendes:
100
s Ziffer1234
wird erhalten durch(1234/10)%10
wobei/
ist Boden Division.quelle
JavaScript (ES6), 45 Bytes + Kudos
Meine beste Nicht-Kudos-Version war 34 Bytes:
quelle
JavaScript (ES6), 47 Byte
n=>[...Array(n+1)].reduce((a,_,i)=>a+i,'')[n]<1
quelle
Javascript (ES6),
4233 BytesBeispiel:
quelle
Groovy, 56 Bytes
Nichts Besonderes, aber ich probiere ein paar neue Dinge aus.
quelle
Perl, 24 Bytes
Beinhaltet +1 für
-p
Mit Eingabe auf STDIN ausführen:
Drucke 1 für Null, sonst nichts
zero.pl
quelle
PHP, 36 Bytes
Gibt aus,
1
ob das Champernowne-Argument die Dezimalstelle ist0
, andernfalls wird '' (leere Zeichenfolge) ausgegeben.quelle
Ruby,
3523 BytesDies ist eine anonyme Funktion, die verkettet
[0..n]
, denn
th-Index nimmt und prüft, ob dieses Zeichen"0"
(kleiner als"1"
) ist. Golfvorschläge sind willkommen.Ungolfing
quelle
Tatsächlich,
98 BytesDiese Antwort verkettet den Bereich
[0..n]
, nimmt denn
th-Index und prüft, ob das Zeichen ist"0"
. Golfvorschläge sind willkommen. Probieren Sie es online!Ungolfing
quelle
Bash,
3128 BytesDie Ausgabe ist nicht leer (wahr) oder leer (falsch). Teste es auf Ideone .
quelle
Julia,
21-20BytesVielen Dank an @LuisMendo für das Golfen ab 1 Byte!
Probieren Sie es online!
quelle
R,
6157 BytesDanke an @plannapus für 4 Bytes.
Erstellt einen Vektor mit den Zahlen 0: n (für die Indizierung von 0), erstellt eine Zeichenfolge von ihnen und zieht den n-ten Wert aus der Zeichenfolge (Anpassung für die Indizierung von 0). Konvertiert nach numerisch und prüft, ob es 0 ist.
quelle
GolfScript, 12 Bytes
Erläuterung:
Probieren Sie es online aus oder überprüfen Sie alle Testfälle!
quelle
C 154 Bytes
Die Funktion, die den Wert berechnet, ist f (n, 0,0,0), wobei n der Eingabeindex ist. es kann aus dem Index berechnet werden, indem "return! c" in "return c" der Wert des Arrays in diesem Index geändert wird ... ich verstehe nicht, wie, aber es scheint in Ordnung zu funktionieren ...
quelle
Javascript (ES5):
61 bis60 ByteUngolfed:
Alt:
Ungolfed alt:
quelle
!s[n]
statts[n]==0
?function(n){s="";while(s.length<n)s+=s.length;return !s[n]}
) a (31) = false zurückgibt.CoffeeScript, 56 Bytes
quelle
zsh, 31 Bytes
exit 0
ist wahr in zshquelle
C #, 71 Bytes
Zuerst dachte ich, es sei kurz, aber dann musste ich hinzufügen
n+=11
, um zu verhindern, dass es ein wirft,System.IndexOutOfRangeException
wenn Zahlen unter 11 eingegeben werdenquelle
Pyke, 7 Bytes
Probieren Sie es hier aus!
quelle