Aller au menu - Aller au contenu

Les suites de Syracuse


Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page Précédente  1  2 
Pseudo Commentaire
Page Précédente  1  2 
Hors ligne shareman # Posté le 25/05/2009 à 20:22:02
charlotte <3
Avatar

Ville : Mertzwiller
Pays : France métropolitaine

Citation : Dark-Side
D'après moi, tu fais tout à l'envers, tu crées un topic sur le forum pour y présenter des algos (et ça en devient relou à lire tellement y'a de commentaires au milieu des algos) et tu crées un tuto pour présenter une implémentation d'un "objet mathématique".
L'inverse aurait été plus adapté, un topic sous la forme d'un atelier ouverts à tout les langages (comme on en a déjà vu) aurait été bien plus intéressant que ce tuto.


Ça a du sens au moins. Je vois très mal un gros tutoriel sur ce site regroupant une collection d'algorithmes avec leur implémentation. Ce genre de projet n'aboutit en général à rien et ce n'est pas plus visible ni forcément plus logique qu'un topic sur le bon forum. Au contraire, un topic est plus logique car c'est adapté aux contributions d'autres membres voulant présenter des algos intéressants qu'ils connaissent. Sur un tuto, ce n'est pas possible ou alors c'est über-lourd.

Ensuite, même remarque dans l'autre sens, je vois très mal un topic présentant les suites de Syracuse, peu importe le forum. Ce n'est pas fait pour, tout simplement. Ce genre de présentation est fait par le biais d'un tutoriel ou d'un article éventuellement.

Tu dis que j'ai créé ce tuto pour présenter une implémentation d'un objet mathématique, mais l'implémentation n'était justement pas vraiment le but premier. Je voulais avant tout présenter les suites de Syracuse en elles. J'ai conçu ce tutoriel pour que les explications mathématiques et historiques soient mises en avant, avant l'implémentation qui est au dernier plan.

Un atelier, môais, pourquoi pas mais encore une fois, je trouve que ça n'a pas vraiment d'intérêt, créer une fonction comme celle que je présente dans un langage voulu, c'est vraiment trivial et profondément ennuyeux à terme. Éventuellement un logiciel plus complet avec visualisation graphique, ça pourrait être intéressant mais je n'ai ni la motivation pour cela maintenant ni même le temps. Rien ne t'en empêche si tu tiens à l'idée.


Locke : Je ne pense pas que l'on puisse parler d'intérêt de cette suite. Ce n'est qu'un objet d'étude intéressant sur lequel les mathématiciens planchent toujours encore. Je serais intéressé de savoir à quoi elle peut bien servir, si tu as des exemples. :)

raphamil : Je vais d'ici peu éditer le tutoriel (mais euh, il est en ligne depuis janvier, j'ai juste modifié le "crys" en "ShareMan" dans la conclusion, ce qui a monté le tuto et provoqué cette effervescence de commentaires) en ajoutant des liens externes, en modifiant ou ajoutant deux-trois points dans la première partie et en modifiant le code (notamment).

Nouvel atelier : Codez votre propre petit préprocesseur pour langage C !
Citation : Woody Allen
Si l'au-delà existe, c'est à quelle distance du centre ville, et c'est ouvert jusqu'à quelle heure ?
 
Hors ligne minimax # Posté le 25/05/2009 à 22:52:19
Avatar

Code : Java
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class Syracuse {
	
	public int nombre;
	
	public Syracuse(int n){
		this.nombre = n;
	}
	
	public Syracuse(){
		this.nombre = 0;
	}
	
	public void execute(int n){

		if (n == 1){ 
			System.out.print("Passe au rang suivant : ");
		} else if (this.nombre % 2 == 0){
			this.execute(n/2);
		} else {
			this.execute(3*n+1);
		}
	}
	
	public static void main(String[] args) {
		Syracuse s = new Syracuse();
		for (int i = 1; i <= 876546789; i++){
			s.execute(i);
			System.out.println(i);
		}
		
	}
}


Je me suis arrêté a 876546789 et pour l'instant mon programme continu d'avancer
Si je trouve une valeur où c'est infini vous croyez que j'aurais droit à un prix (zut pas de prix Nobel en maths :( )? XD
Vous connaissez un type plus gros que int en java?

Image utilisateur
Avancement du site:
HTML / CSS : 100%
PHP : 90%
Javascript : 95%
 
Hors ligne Ver2terre # Posté le 30/06/2009 à 00:00:39
Let's make things Frugal!
Avatar

te fatigue pas minimax, jusqu'a 2^62, tout est égal à 1

Image utilisateur
 
Hors ligne Nytrix # Posté le 01/07/2009 à 13:58:34
Nouilles au beurre na go RIP
Avatar

minimax, cherche pas le java est pas fait pour ça (fait pour quoi d'ailleurs ? :D ) .
 
Hors ligne 666by # Posté le 20/09/2009 à 22:43:22
Avatar

je me suis amuser a trouver un petit calcul pour éviter d'avoir a faire des condition (mon ordinateur n'a pas encore fait d'erreur avec le calcul mais si vous trouver une erreur dans le calcul prévenez moi) :
Code : C
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int syracuse(unsigned int n, unsigned int *TempVol, unsigned int *AltMax)
{
    unsigned int x = n&1;
    unsigned int tps = 0;
    unsigned int max = n;

    while(n > 1)
    {
        x = n&1;
        n = (n*3+1)*x + n/2*!x; // on peut remplacer les '!x' par des '(x^1)' ou par des '0 exposant x'
        tps++;
        if(max < n)
            max = n;
    }

    if(TempVol != 0)
        *TempVol = tps;

    if(AltMax != 0)
        *AltMax = max;

    return 0;
}

je trouve que le calcul est plus facile a implémenter en assembleur que les conditions

EDIT:
C'est tout a fait normale que l'on retombe tout le temps sur 1 parce que:
si on tombe sur un nombre impair on le multiplie par 3,il et toujours impair mais certain bits sont passer de 1 à 0 jusqu'au moment ou tous les bits sont a 0 sauf le premier donc c'est une puissance de 2 et la on fait que diviser par 2, par exemple:

3 = 11b
3*3+1 = 10 = 1010b
10/2 = 5 = 101b
5*3+1 = 16 = 10000b
16/2 = 8 = 1000b
8/2 = 4 = 100b
4/2 = 2 = 10b
2/2 = 1 = 1b
1*3+1 = 4 = 100b
...
Pour accéder à cette section
Connectez-vous !
connexion_rpx