La séquence de nombres segmentés ou nombres premiers de mesure ( OEIS A002048 ) est la séquence de nombres telle que chaque membre est le plus petit nombre positif (supérieur à zéro) qui ne peut pas être composé d'une somme de nombres consécutifs antérieurs, avec a(0) = 1
.
Exemple
Pour calculer, a(7)
nous calculons d'abord a(0->6) = [1, 2, 4, 5, 8, 10, 14]
. nous partons ensuite de zéro et parcourons les nombres jusqu'à ce que nous trouvions celui qui n'est pas la somme d'un ou plusieurs nombres consécutifs dans la séquence.
1 = 1
2 = 2
3 = 1 + 2
4 = 4
5 = 5
6 = 2 + 4
7 = 1 + 2 + 4
8 = 8
9 = 4 + 5
10 = 10
11 = 2 + 4 + 5
12 = 1 + 2 + 4 + 5
13 = 5 + 8
14 = 14
15 = ????
Puisque quinze ne peut pas être fait en additionnant une sous-séquence consécutive et chaque nombre plus petit peut être quinze est le nombre suivant dans la séquence. a(7) = 15
Tâche
Votre tâche consiste à prendre un nombre (via les méthodes standard) et à sortir le nième terme dans cette séquence (via les méthodes de sortie standard). C'est du golf de code et vous serez noté comme tel.
Cas de test
0 -> 1
1 -> 2
2 -> 4
3 -> 5
4 -> 8
5 -> 10
6 -> 14
7 -> 15
8 -> 16
9 -> 21
()
pour en faire une fonction appropriée. Le partiel appliqué!!
est une section opérateur et doit être inclus()
pour en faire une fonction. Sans cela, c'est juste un extrait qui ne devient qu'une fonction (ou "valeur" pour utiliser des termes Haskell stricts) avec l'argument manquant.