Cette question a une configuration similaire pour rechercher un tableau qui correspond à un ensemble de sommes, bien que ses objectifs soient très différents.
Considérez un tableau A
de longueur n
. Le tableau ne contient que des entiers positifs. Par exemple A = (1,1,2,2)
. Définissons f(A)
comme l'ensemble des sommes de tous les sous-réseaux contigus non vides de A
. Dans ce cas f(A) = {1,2,3,4,5,6}
. Les étapes de production f(A)
sont les suivantes:
Les sous-réseaux de A
sont (1), (1), (2), (2), (1,1), (1,2), (2,2), (1,1,2), (1,2,2), (1,1,2,2)
. Leurs sommes respectives sont 1,1,2,2,2,3,4,4,5,6
. L'ensemble que vous obtenez de cette liste est donc {1,2,3,4,5,6}
.
Nous appelons un tableau A
unique s'il n'y a pas d'autre tableau B
de la même longueur tel que f(A) = f(B)
, à l'exception du tableau A
inversé. Par exemple, f((1,2,3)) = f((3,2,1)) = {1,2,3,5,6}
mais aucun autre tableau de longueur 3
ne produit le même ensemble de sommes.
Nous ne considérerons que les tableaux où les éléments sont soit un entier donné, s
soit s+1
. Par exemple, si s=1
les tableaux contiennent uniquement 1
et 2
.
Tâche
La tâche, pour une donnée n
et s
est de compter le nombre de tableaux uniques de cette longueur. Vous pouvez supposer que s
c'est entre 1
et 9
.
Vous ne devez pas compter l'inverse d'un tableau ainsi que le tableau lui-même.
Exemples
s = 1
, la réponse est toujours n+1
.
s = 2
, les réponses qui comptent à partir de n = 1
:
2,3,6,10,20,32,52,86
s = 8
, les réponses qui comptent à partir de n = 1
:
2,3,6,10,20,36,68,130
But
Pour une donnée n
, votre code devrait afficher la réponse pour toutes les valeurs de s
à 1
à 9
. Votre score est la valeur la plus élevée n
pour laquelle cela se termine en une minute.
Essai
Je devrai exécuter votre code sur ma machine Ubuntu, veuillez donc inclure des instructions aussi détaillées que possible sur la façon de compiler et d'exécuter votre code.
Classement
- n = 24 par Anders Kaseorg dans Rust (34 secondes)
- n = 16 par Ourous dans Clean (36 secondes)
- n = 14 par JRowan en Common Lisp (49 secondes)