Manchmal zähle ich, um einzuschlafen, so hoch ich kann, während ich Zahlen überspringe, die nicht quadratfrei sind . Ich bekomme ein wenig Nervenkitzel, wenn ich mehrere Zahlen hintereinander überspringe - zum Beispiel 48,49,50
sind alle NICHT quadratfrei (48 ist teilbar durch 2 ^ 2, 49 durch 7 ^ 2 und 50 durch 5 ^ 2).
Dies brachte mich dazu, mich über das früheste Beispiel benachbarter Zahlen zu wundern, die durch eine willkürliche Folge von Teilern teilbar sind.
Eingang
Die Eingabe ist eine geordnete Liste a = [a_0, a_1, ...]
von streng positiven Ganzzahlen, die mindestens 1 Element enthalten.
Ausgabe
Die Ausgabe ist die kleinste positive Ganzzahl n
mit der Eigenschaft, die a_0
dividiert n
, a_1
dividiert n+1
und allgemeiner a_k
dividiert n+k
. Ist dies nicht der n
Fall, ist das Verhalten der Funktion / des Programms nicht definiert.
Testfälle
[15] -> 15
[3,4,5] -> 3
[5,4,3] -> 55
[2,3,5,7] -> 158
[4,9,25,49] -> 29348
[11,7,5,3,2] -> 1518
Wertung
Das ist Code-Golf ; kürzestes Ergebnis (pro Sprache) gewinnt prahlerische Rechte. Die üblichen Lücken sind ausgeschlossen.
Antworten:
Wolfram Language (Mathematica) , 51 Byte
Probieren Sie es online!
quelle
Schale , 7 Bytes
Probieren Sie es online!
Erläuterung
quelle
MATL , 11 Bytes
Probieren Sie es online!
Nicht gerade für die Geschwindigkeit optimiert ... Der größte Testfall dauert mit MATL eine volle Minute und mit MATLAB ungefähr 0,03 Sekunden. Es gibt eine kleine Möglichkeit, dass MATL etwas mehr Overhead hat.
quelle
n:q`QtG\a]1)
für 12 bytes dochn:
offensichtlich das selbe wief
hier. Ich vergesse das immer, so dass Sie es als Alternative 11 Byte hinzufügen können.fq`QtG\a}@
gibt eine fremde Kopie der Eingabe zurück.JavaScript,
42 bis40 BytesGibt einen Rekursionsfehler aus, wenn es keine Lösung gibt (oder die Lösung zu groß ist).
2 Bytes mit einem Zeiger von Rick Hitchcock gespeichert
Versuch es
Geben Sie eine durch Kommas getrennte Liste von Zahlen ein.
quelle
[4,9,25,49]
.(a,y=n=0)=>a.some(x=>y++%x)?f(a,++n):n
f=
aber nicht.Python 3 , 62 Bytes
Probieren Sie es online!
quelle
05AB1E , 9 Bytes
Probieren Sie es online!
Erläuterung
quelle
Haskell ,
4544 BytesProbieren Sie es online!
Edit: -1 Byte danke an nimi!
quelle
sum(zipWith mod[n..]a)<1
.Sauber , 61 Bytes
Probieren Sie es online!
quelle
[1..]
anstelle der[0..]
Ausgabe0
eine nicht positive Ganzzahl für Singleton-Listen vermeiden .Pyth , 11 Bytes
Probieren Sie es online!
quelle
2
am Ende? Ich bin sicher, dass es hier noch mehr zu retten gibt, aber ich kenne Pyth nicht.2
behebt das ProblemJ , 23 Bytes
Probieren Sie es online!
quelle
I.
dass nur 1 Ergebnis zurückgegeben wird? Ist es nicht möglich, dass es mehrere gibt?R , 51 Bytes
Probieren Sie es online!
Die Verwendung von
any
Throwsk
warnt vor impliziter Konvertierung nachlogical
, wobeik
der Rückgabewert ist.quelle
l=c(15)
, daseq(l)==1:l
in diesem Fall.seq
ist so nervig!seq_along
ist einfach zu lang.sum
anstattany
diese Warnungen loszuwerden, FYI.Perl 6 , 34 Bytes
Probieren Sie es online!
quelle
APL (Dyalog Unicode) ,
24 2322 BytesProbieren Sie es online!
Technisch ist dies eine stillschweigende Funktion. Ich musste es so machen, da die einzige erlaubte Eingabe die Liste der ganzen Zahlen ist. Verwendet
⎕IO←0
(0-Indizierung)Es ist erwähnenswert, dass die Funktion abläuft, wenn
n
sie nicht existiert.Vielen Dank an @ngn und @ H.PWiz für jeweils 1 Byte.
Wie?
quelle
Perl 5 , 49 + 2 (
-pa
) = 51 BytesProbieren Sie es online!
quelle
Japt, 10 Bytes
Wird irgendwann ausgegeben,
undefined
wenn keine Lösung existiert, wenn Ihr Browser nicht zuerst abstürzt.Versuch es
Erläuterung
quelle
Ruby , 48 Bytes
Probieren Sie es online!
quelle
Python 2 , 80 Bytes
Probieren Sie es online!
quelle
Standard-ML (MLton) , 96 Bytes
Probieren Sie es online!
Ungolfed:
Probieren Sie es online! Beginnend mit inkrementiert
n=1
die Funktion, bis die Bedingung erfüllt ist. In diesem Fallf
n
all
n
wird zurückgegeben.tabulate(m,g)
mit einer ganzen Zahlm
und Funktion wirdg
die Liste erstellt[g 0, g 1, ..., g m]
. In unserer Bedingungtabulate
heißt das mit der Länge der Eingabelistel
und einer Funktion, die prüft, ob dasi
Element vonl
dividiertn+i
. Dies ergibt eine Liste von Booleschen Werten, so dassall
mit der Identitätsfunktionfn x=>x
geprüft wird, ob alle Elemente wahr sind.Ich habe einen netten Golf-Trick gefunden, um die Identitätsfunktion in diesem Fall um vier Bytes zu verkürzen: Anstelle des Lambda
(fn x=>x)
wird diehd
eingebaute Funktion verwendet, die das erste Element einer Liste zurückgibt, und die resultierenden Bools intabulate
werden in[
und]
to eingeschlossen Erstellen Sie Singleton-Listen.quelle
PowerShell ,
6562 ByteProbieren Sie es online!
PowerShell hat nicht das Äquivalent eines
any
odersome
oder ähnlichem, daher benötigen wir einen etwas anderen Ansatz.Dies nimmt die Eingabe
$args[0]
als Array und tritt dann in einefor
Endlosschleife ein. Jede Iteration, die wir setzen$o
, um1
(später erklärt) zu sein, und setzen$i
, um zu sein++$j
. Das Inkrementieren$j
überwacht die erste Nummer der vorgeschlagenen Lösung, während die$i
Inkrementieren über den Rest der vorgeschlagenen Lösung erfolgt.Wir senden dann jedes Element der Eingabe
$args[0]
in eineForEach-Object
Schleife. Innerhalb der inneren Schleife multiplizieren wir Boolesch mit$o
dem Ergebnis einer Berechnung. Dies wird es so machen, dass, wenn die Berechnung für einen Wert fehlschlägt, sich der$o
zuwendet0
. Die Berechnung ist!($i++%$_)
oder das Boolesche nicht der Modulo-Operation. Da jeder Wert ungleich Null truthy in Powershell ist, wird dies keine Reste in einen Falsey Wert, so dreht$o
in0
.Außerhalb der inneren Schleife,
if
$o
die ungleich Null ist, haben wir eine inkrementelle Lösung gefunden, die funktioniert, also geben wir aus$j
und ausexit
.quelle
tinylisp , 108 bytes
Die letzte Zeile ist eine unbenannte Lambda-Funktion, die eine Liste aufnimmt und eine Ganzzahl zurückgibt. Probieren Sie es online!
Ungolfed
quelle
Julia 0,6 , 79 Bytes
Probieren Sie es online!
Eingaben ohne gültige Lösung führen zu Endlosschleifen ... :)
quelle
Python 2, 78 Bytes
EDIT: -26 danke an @Chas Brown
quelle
Gelee , 10 Bytes
Probieren Sie es online!
quelle
APL NARS, 140 Byte, 70 Zeichen
Prüfung
quelle
Java 8,
8275 BytesErläuterung:
Probieren Sie es online aus.
quelle
Ruby ,
47 46 4342 BytesProbieren Sie es online!
NB: Die
(1..)
Syntax wird nur in Ruby 2.6 unterstützt, im Moment unterstützt TIO nur 2.5, so dass der Link zu einer älteren Version (43 Bytes) ist.quelle