Aufgabe
Definieren Sie eine Modfalte als Funktion der Form f (x) = x% a 1 % a 2 %…% a k , wobei a i positive ganze Zahlen und k ≥ 0 sind . (Hier ist % der linksassoziative Modulo-Operator.)
Bestimmen Sie anhand einer Liste von n ganzen Zahlen y 0 ,…, y n - 1 , ob es eine Modfalte f gibt, so dass jedes y i = f (i) .
Sie können zwei beliebige Ausgänge Y und N für Ihre Funktion / Ihr Programm auswählen und festlegen . Wenn es ein solches f gibt , müssen Sie immer genau Y zurückgeben / drucken ; Wenn nicht, müssen Sie immer genau N zurücksenden / ausdrucken . (Dies können true
/ false
, oder 1
/ 0
, oder false
/ true
usw. sein.) Erwähnen Sie diese in Ihrer Antwort.
Die kürzeste Übermittlung in Bytes gewinnt.
Beispiel
Definiere f (x) = x% 7% 3 . Seine Werte beginnen:
| x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ...
| f(x) | 0 | 1 | 2 | 0 | 1 | 2 | 0 | 0 | 1 | 2 | ...
Somit gegeben 0 1 2 0 1 2 0 0 1 2
als Eingabe für unsere Lösung, würden wir drucken Y , wie dies f diese Sequenz erzeugt. Als 0 1 0 1 2
Eingabe würden wir jedoch N ausgeben , da kein f diese Sequenz erzeugt.
Testfälle
Die bei der Ausgabe von Y angegebenen Formeln dienen nur als Referenz. Sie dürfen sie zu keinem Zeitpunkt ausdrucken.
0 1 2 3 4 5 Y (x)
1 N
0 0 0 Y (x%1)
0 1 2 0 1 2 0 0 1 2 Y (x%7%3)
0 0 1 N
0 1 2 3 4 5 6 0 0 1 2 Y (x%8%7)
0 1 2 0 1 2 0 1 2 3 N
0 2 1 0 2 1 0 2 1 N
0 1 0 0 0 1 0 0 0 0 1 Y (x%9%4%3%2)
Antworten:
Pyth, 14 Bytes
Rückgabe
True/False
. Probieren Sie es online aus: Demo oder Test SuiteErläuterung:
Pyth, 11 Bytes
Basierend auf der Idee von @ ferrsum . Ich habe tatsächlich darüber nachgedacht, die Nullindizes für die Teilmengengenerierung zu verwenden, aber nicht erkannt, dass alle Nullindizes bereits die Lösung sein müssen.
quelle
Python 3,
239218 BytesEine anonyme Funktion, die eine Liste
z
eingibt undTrue
oderFalse
fürY
und zurückgibtN
.Hierbei wird eine Methode verwendet, die der Antwort von @Jakube ähnelt , und obwohl es sich im Wesentlichen um eine rohe Kraft handelt, wird sie sehr schnell ausgeführt.
Probieren Sie es auf Ideone
quelle
Python 2, 69 Bytes
Verwendet
True
/False
.Die Antwort auf das, was eine Mod-Foldable-Serie auszeichnet, ist weniger interessant, als es zunächst scheint. Es ist eine Reihe der Form 0, 1, ..., M - 1, 0, 1, ... x 1 , 0, 1, ..., x 2 , ..., so dass für alle i, 0 <= x i <M. Eine solche Sequenz kann durch die Mod-Kette aller (0-basierten) Indizes der Nullen im Array mit Ausnahme des ersten erzeugt werden.
quelle
Jelly ,
191514 BytesGibt 1 für wahr, 0 für falsch zurück. Probieren Sie es online!
Der Algorithmus ist O (n n ) , wobei n die Länge der Liste ist, was sie für die meisten Testfälle zu langsam und speicherintensiv macht.
Mit einer geänderten Version, die die zweite
L
durch eine ersetzt,5
können alle Testfälle überprüft werden . Beachten Sie, dass diese modifizierte Version für beliebig lange Listen nicht funktioniert.Wie es funktioniert
quelle
JavaScript (ES6),
98Byte48 Bytes gespart, indem zu @ Feersums Entdeckung gewechselt wurde. Jeder gegebene Wert
n
in dem Array ist entweder Null, in welchem Fall die nächste Vorhersagep
1 ist, oder er ist gleich der nächsten Vorhersage, in welchem Fallp
inkrementiert wird. Wir messen auch die Längel
der Anfangssequenz durch Vergleichenp
miti
, da sien
immer kürzer alsl
zu allen Zeiten sein muss.quelle
Python 2,
10399 BytesDruck 1 für truthy und 0 für falsy. Teste es auf Ideone .
quelle