2 votes

Algorithme pour trouver le nombre suivant dans une séquence de nombres ?

J'ai la séquence de chiffres suivante :

2 5 6 20 18 80 54 320 162 1280

Je n'arrive pas à trouver le nombre suivant ou l'algorithme pour le calculer.

Des conseils ?

11voto

Linus Kleen Points 15925

Le numéro suivant est 486 .

La séquence est *3, *4.

Chaque indice impair est multiplié par 4 :

5 20 80 320 1280

Chaque indice pair est multiplié par 3 :

2 6 18 54 162

Ainsi, 486 est le nombre suivant :-)

9voto

Le suivant est le 486

Juste wolframalpha

Sortie Mathematica : {2, 5, 6, 20, 18, 80, 54, 320, 162, 1280, 486, 5120, 1458, 20480, 4374}

et voici la relation de récurrence qu'elle donne :

a(n+4) = 7*a(n+2)-12*a(n)

4voto

templatetypedef Points 129554

Ce problème est sous-déterminé. Vous pourriez écrire un programme pour trouver un nombre logique suivant, mais il n'y a aucune garantie qu'il ait un rapport avec l'objectif de l'énigme. Par exemple, l'ordinateur pourrait adapter un polynôme d'ordre dix aux données, puis l'utiliser pour extrapoler la valeur suivante. Il pourrait essayer de trouver un corpus de textes dans lequel ces chiffres apparaîtraient dans le nom du texte, puis renvoyer la première lettre de ce corpus. En d'autres termes, oui, l'ordinateur pourrait trouver un nombre qui corresponde, mais comme l'auteur de l'énigme cherche une réponse spécifique, il n'y a aucune raison de penser que l'ordinateur aurait raison.

Cela dit, la réponse à l'énigme consiste à examiner le rapport entre les termes à indexation impaire et le rapport entre les termes à indexation paire. Vous trouverez un modèle :-)

3voto

Voici l'application Java qui calcule cette séquence :

/**
 * @author mpieciukiewicz
 */
public class Main {

    public static void main(String[] args) {
        new Main().run();
    }

    public void run() {
        for (int p=0; p<11; p++) {
            System.out.println(p+":"+number(p));
        }
    }

    private int calculate(int base, int multiplier, int power) {
        int result = base;
        for (int p=0; p<power; p++) {
            result = result * multiplier;
        }
        return result;
    }

    private int number(int index) {
       int half = index / 2;
       int number;
       if (index%2 == 0) {
           number = calculate(2, 3, half);
       } else {
           number = calculate(5, 4, half);
       }
       return number;
    }
}

La sortie de ce programme est :

0:2
1:5
2:6
3:20
4:18
5:80
6:54
7:320
8:162
9:1280
10:486

La réponse à votre question est donc : 468.

2voto

Mitch Wheat Points 169614

Utilisez Les séquences entières de Sloane . C'est ce que les mathématiciens professionnels utilisent comme point de départ.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X