Tâche
Définissez un pli mod en fonction de la forme f (x) = x% a 1 % a 2 %…% a k , où les a i sont des entiers positifs et k ≥ 0 . (Ici, % est l'opérateur modulo associatif gauche.)
Etant donné une liste de n entiers y 0 ,…, y n − 1 , déterminer s'il existe un mod-fold f de sorte que chaque y i = f (i) .
Vous pouvez choisir et fixer deux sorties Y et N pour votre fonction / programme. S'il existe un tel f , vous devez toujours retourner / imprimer exactement Y ; sinon, vous devez toujours retourner / imprimer exactement N . (Il peut s'agir de true
/ false
, ou 1
/ 0
, false
/ / true
, etc.) Mentionnez-les dans votre réponse.
La soumission la plus courte en octets l'emporte.
Exemple
Définissez f (x) = x% 7% 3 . Ses valeurs commencent:
| x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ...
| f(x) | 0 | 1 | 2 | 0 | 1 | 2 | 0 | 0 | 1 | 2 | ...
Ainsi, étant donné 0 1 2 0 1 2 0 0 1 2
en entrée de notre solution, nous imprimerions Y , comme ce f génère cette séquence. Cependant, étant donné 0 1 0 1 2
en entrée, nous imprimerions N , car aucun f ne génère cette séquence.
Cas de test
Les formules données lorsque la sortie est Y sont juste pour référence; vous ne devez à aucun moment les imprimer.
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)
Réponses:
Pyth, 14 octets
Retours
True/False
. Essayez-le en ligne: démonstration ou suite de testsExplication:
Pyth, 11 octets
Basé sur l'idée de @ ferrsum . En fait, j'ai pensé à utiliser les indices zéro pour la génération du sous-ensemble, mais je ne me suis pas rendu compte que tous les indices zéro doivent déjà être la solution.
la source
Python 3,
239218 octetsUne fonction anonyme qui prend l'entrée d'une liste
z
et retourneTrue
ouFalse
pourY
etN
.Celui - ci utilise une méthode similaire à l » @Jakube réponse , et bien qu'il soit essentiellement une force brute, fonctionne très rapidement.
Essayez-le sur Ideone
la source
Python 2, 69 octets
Utilise
True
/False
.La réponse à ce qui caractérise une série mod-pliable s'avère moins intéressante qu'il n'y paraît au premier abord. C'est une série de la forme 0, 1, ..., M - 1, 0, 1, ... x 1 , 0, 1, ..., x 2 , ... telle que pour tout i, 0 <= x i <M. Une telle séquence peut être produite par la chaîne mod de tous les indices (basés sur 0) des zéros du tableau, à l'exception du premier.
la source
Gelée ,
191514 octetsRenvoie 1 pour la vérité, 0 pour la fausse. Essayez-le en ligne!
L'algorithme est O (n n ) , où n est la longueur de la liste, ce qui la rend trop lente et gourmande en mémoire pour la plupart des cas de test.
Une version modifiée - qui remplace la seconde
L
par un5
- peut être utilisée pour vérifier tous les cas de test . Notez que cette version modifiée ne fonctionnera pas pour les listes arbitrairement longues.Comment ça fonctionne
la source
JavaScript (ES6),
98octetsSauvegardé 48 octets en passant à la découverte de @ Feersum. Toute valeur donnée
n
dans le tableau est soit zéro, auquel cas la prochaine prédictionp
est 1, soit égale à la prochaine prédiction, auquel cas ellep
est incrémentée. Nous mesurons également la longueurl
de la séquence initiale en comparantp
ài
, car ellen
doit toujours être inférieurel
à tout le temps.la source
Python 2,
10399 octetsImprime 1 pour la vérité et 0 pour la fausse. Testez-le sur Ideone .
la source