Betrachten Sie eine Folge natürlicher Zahlen, für die N in N ^ 2 als Teilzeichenfolge erscheint. A018834
Geben Sie das n
dritte Element dieser Sequenz aus.
Regeln
Programm nimmt nur n
als Eingabe und gibt nur eine Zahl aus - N
.
Die Sequenz kann 0-indiziert oder 1-indiziert sein.
Sequence: 1 5 6 10 25 50 60 76 100 250 376 500 600 625 760 ...
Squares: 1 25 36 100 625 2500 3600 5776 10000 62500 141376 250000 360000 390625 577600 ...
Das ist Code-Golf, also gewinnt der kürzeste Code.
Antworten:
05AB1E , 6 Bytes
1-indiziert
Probieren Sie es online!
Erläuterung
quelle
µ
Befehl ist nur ... ich wünschte, ich hätte das.Nth
Nummer finden müssen, die eine bestimmte Bedingung erfüllt.å
wir den aktuellen WertN
an der Spitze des Stapels (Inkrementzähler und InkrementN
), wenn dies nicht der Fall ist, fahren wir fort (InkrementN
). Verwenden Sie möglicherweise etwas anderes als "N
", da dies das Endergebnis im Fragenkörper ist: pPerl 6 ,
3331 Bytes-2 Bytes dank nwellnhof
Probieren Sie es online!
Erläuterung:
quelle
JavaScript (ES6), 43 Byte
Probieren Sie es online!
Nicht rekursive Version, 47 Bytes
Probieren Sie es online!
quelle
n=23
nur zu?MathGolf , 8 Bytes (funktioniert für jede Eingabe in der Theorie, aber nur für
n<10
in der Praxis)Probieren Sie es online!
Alternative (arbeitet für
n<49
in der Praxis und Theorie)Der einzige Unterschied besteht darin, dass stattdessen eine Liste mit erstellt wird
10^(input)
ich Werten erstelle eine Liste mit10^6
Elementen. Die Ausführung dauert eine Weile, sodass Sie das erste Byte in ein beliebiges anderes 1-Byte-Literal tauschen können, um es zu testen.Erläuterung
Der Grund, warum diese Lösung keine großen Eingaben verarbeitet, ist, dass ich festgestellt habe, dass die Sequenz weniger als exponentiell wächst, aber mehr als jedes Polynom. Aus diesem Grund habe ich den
10**n
Operator verwendet (ich wollte ihn verwenden2**n
, aber bei Eingabe 1 ist er fehlgeschlagen). Das bedeutet, dass ich selbst für kleine Eingaben ein extrem großes Array erstelle, um den größten Teil herauszufiltern und dann eines der ersten Elemente zu verwenden. Es ist extrem verschwenderisch, aber ich konnte keinen anderen Weg finden, dies zu tun, ohne die Byteanzahl zu erhöhen.quelle
Common Lisp, 95 Bytes
Probieren Sie es online!
quelle
Sauber , 83 Bytes
Probieren Sie es online!
quelle
Gelee , 6 Bytes
1-indiziert.
Probieren Sie es online!
Wie?
Findet den ersten
n
Teil der Sequenz als Liste und gibt dann den Schwanz ausN
.Wenn
0
wir eine natürliche Zahl wären, könnten wir das 1-indizierte Vollprogrammẇ²$#Ṫ
für 5 verwenden.quelle
Japt,
1211 BytesVersuch es
Versuch es
quelle
Ruby, 45 bytes
Try it online!
quelle
Java 8,
666563 bytes-1 byte thanks to @Shaggy.
-2 bytes thanks to @Arnauld.
1-indexed.
Try it online.
Explanation:
quelle
Clojure, 81 bytes
Probieren Sie es online! (Leider scheint TIO die Standard-String-Bibliothek von Clojure nicht zu unterstützen.)
Wenn Clojure eine kürzere Importsyntax oder eine
includes?
Methode in der Kernbibliothek hätte, könnte dies tatsächlich etwas wettbewerbsfähig sein.clojure.string/includes?
allein ist hier allerdings länger als einige Antworten: /Da die TIO-Verbindung unterbrochen ist, ist hier ein Testlauf. Die Zahl links ist der Index (
n
) und das Ergebnis (N
) ist rechts:Dies sollte in der Lage sein, jeden Wert von zu unterstützen
n
; vorausgesetzt, Sie sind bereit, auf das Ende zu warten (das Auffinden der 50. bis 100. Ganzzahl in der Sequenz dauerte etwa 15 Minuten). Clojure unterstützt Arithmetik mit beliebig großen Ganzzahlen. Sobald also Zahlen sehr groß werden, wirdBigInt
s verwendet.quelle
Holzkohle , 25 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. 0-indiziert. Erläuterung:
Eingabe
n
.Beginnen Sie
N
bei 1. (Oder dies könnte zu zählen beginnen, ab0
dem die Eingabe 1-indiziert wird.)Wiederholen, bis wir
n
Zahlen in der Sequenz gefunden haben.Inkrementieren
N
.Wenn
N*N
enthältN
, dann ...... dekrementieren
n
.Drucken
N
.Meine weiteren Golfversuche wurden dadurch behindert, dass Charcoal a) keine
if..then
Ausnahme am Ende eines Blocks hat (was 2 Bytes kostet) b) keinenContains
Operator hat (die Ausgabe vonFind
oderCount
in einen Booleschen Wert umwandelt, den ich von denn
erneuten Kosten abziehen konnte 2 Bytes).quelle
Bearbeiten (Antwort auf Kommentare): Python 2, 76 Bytes
Wollte es mit einer nicht rekursiven Methode versuchen. (Neu beim Golfen, alle Tipps wären toll!)
Vielen Dank an BMO und Vedant Kandoi!
quelle
print(f(13))
in the code. Alsowhile 1:
,if c==1:return n
,c==1 can be c<2
`
sind überflüssig, und die nachherc<2:
, als nächstes können Sie Tabulatoren und Leerzeichen zum Einrücken mischen (wie hier gezeigt ): 69 Bytes Btw. Es ist nicht erforderlich, Ihre alte Version zu behalten (sie befindet sich im Bearbeitungsverlauf für Interessenten) und warum nicht auf TIO (oder eine ähnliche Version) verlinken / die Vorlage von dort aus verwenden?Haskell, 60 Bytes
Probieren Sie es online!
quelle
Python 2 ,
4743 Bytes-4 Bytes dank Dennis (1 zum rekursiven Aufruf hinzufügen, anstatt zurückzukehren
n-1
)Probieren Sie es online!
Explantion / Ungolfed
Rekursive Funktion mit zwei Argumentenc,n ; n is counts up 1,2,3… and everytime n in n2 it decrements c . The recursion ends as soon as c=0 :
quelle
APL (Dyalog Extended),
3130 bytesTry it online!
0-indexed.
quelle
(⍕⍺)⍷⍕
→⍺⍷⍥⍕
Perl 5
-p
, 33 bytesTry it online!
quelle
Lua,
13712379 bytes-thanks @Jo King for 44 bytes
Try it online!
quelle
false/true
can be0>1
/0<1
, brackets aren't necessary forif
s andwhile
s, you can remove most whitespace after numbers (even newlines).Tcl, 82 bytes
Try it online!
quelle
proc S n {while {[incr j [regexp [incr i] [expr $i**2]]]-$n} {};return $i}
Tidy, 24 bytes
Try it online!
Returns a lazy list which, when called like a function, returns the
n
th element in the series.Explanation
quelle