Définition
De la description sur OEIS A006345 :
Pour trouver
a(n)
, considérez un1
ou un2
. Pour chacun, recherchez le suffixe répété le plus long, c'est-à-dire pour chacuna(n)=1,2
, trouvez la séquence la plus longues
avec la propriété avec laquelle la séquencea(1),...,a(n)
se terminess
. Utilisez le chiffre qui donne le suffixe le plus court.a(1) = 1
.
Exemple élaboré
a(1)=1
.
Si a(2)=1
, nous aurons la séquence 1 1
où se trouve la sous-chaîne doublée la plus longue de la fin 1
. Si à la a(2)=2
place, ce serait la sous-chaîne vide. Par conséquent a(2)=2
.
Quand n=6
, on choisit entre 1 2 1 1 2 1
et 1 2 1 1 2 2
. Dans le premier choix, 1 2 1
est doublé consécutivement depuis la fin. Dans le deuxième choix, c'est 2
plutôt. Par conséquent, a(6)=2
.
Quand n=9
, on choisit entre 1 2 1 1 2 2 1 2 1
et 1 2 1 1 2 2 1 2 2
. Dans le premier choix, la sous-chaîne consécutive doublée la plus longue est 2 1
, tandis que dans le second choix 1 2 2
est doublée consécutivement à la fin. Par conséquent a(9)=1
.
Tâche
Étant donné n
, revenez a(n)
.
Spécifications
n
sera positif.- Vous pouvez utiliser l'index 0 au lieu de l'index 1. Dans ce cas, veuillez l'indiquer dans votre réponse. Aussi, dans ce cas,
n
peut l'être0
également.
Cas de test
Les cas de test sont indexés 1. Cependant, vous pouvez utiliser l'index 0.
n a(n)
1 1
2 2
3 1
4 1
5 2
6 2
7 1
8 2
9 1
10 1
11 2
12 1
13 2
14 2
15 1
16 1
17 2
18 1
19 1
20 1
Les références
- WolframMathWorld
- Obligatoire OEIS A006345
la source
n=9
, le premier choix1 2 1 1 2 2 1 2 1
a la sous-chaîne doublée2 1
à la fin.Réponses:
Haskell,
146140137133118 118 octetsla source
(\x->(\s->...
? Sinon, vous pourriez écrire(\x s->...
.div ...
, vous pouvez utiliser le plus courtn
. Les comparaisons supplémentaires retourneront toutes fausses et ne changeront pas le résultat.Python, 137 octets
Cette solution utilise une indexation basée sur 0.
la source
Gelée ,
25242220 octets2 octets grâce à Dennis.
Essayez-le en ligne!
Un portage de ma réponse en Pyth .
la source
Mathematica, 84 octets
la source
Gelée ,
3029282724 octetsEssayez-le en ligne! ou vérifiez tous les cas de test .
la source
MATL , 34 octets
Essayez-le en ligne! ou vérifiez tous les cas de test .
Explication
la source
Python 2, 94 octets
Utilise l'indexation basée sur 0. Testez-le sur Ideone .
la source
Pyth , 26 octets
Suite de tests.
Explication
Quand
n = 6
, on choisit entre1 2 1 1 2 1
et1 2 1 1 2 2
.Nous générons ces deux possibilités, puis examinons leurs suffixes.
Pour la première, les suffixes sont:
1
,2 1
,1 2 1
,1 1 2 1
,2 1 1 2 1
,1 2 1 1 2 1
.On filtre les suffixes doublés en vérifiant s'ils sont les mêmes après les avoir tournés pour leur longueur divisée par 2 (il s'avère que cette vérification n'est pas parfaite, car elle confirme
1
et2
aussi).Nous prenons le dernier suffixe doublé, puis prenons sa longueur.
Nous choisissons ensuite la possibilité qui correspond à une longueur minimale générée ci-dessus.
Ensuite, nous passons à la valeur suivante de
n
.Aux fins de ce programme, il était préférable que golfier génère le tableau inversé.
la source
Pyth,
4629 octetsInspiré de l'excellente réponse Pyth de @Leaky Nun. J'ai essayé de voir s'il y avait un moyen plus court d'utiliser des chaînes. Encore 3 octets courts!
Vous pouvez l'essayer ici .
la source
u
ce au lieu d'une boucle for explicite vous fait économiser 4 octetsRétine ,
5142 octets9 octets grâce à Martin Ender.
Essayez-le en ligne!
Un port de cette réponse .
la source
Perl, 40 octets
Le code fait 39 octets et nécessite le
-p
commutateur ( +1 octet).La boucle est inspirée de la solution Perl sur le page OEIS , bien que j'aie trouvé indépendamment l'expression régulière.
Testez-le sur Ideone .
la source
JavaScript (ES6), 84
Base d'index 0
Moins golfé
Tester
la source