« Suite de Conway » : différence entre les versions

Contenu supprimé Contenu ajouté
imported>Nite
imported>JeanLouisFrenkel
Code java de calcul des termes de la suite
Ligne 257 :
</source>
</div>
=== En [[Java]] ===
<div class="exemple">
La classe ConwayTerm représente un terme donné de la suite. Sa méthode nextTerm calcule le terme suivant. Dans l'exemple ci-dessous, le premier terme est 1. Si l'on veut commencer avec 22, il faut un tableau de 2 bytes contenant chacun 2 et non un byte contenant 22 (new byte[] { 2,2 })
<source lang="java">
package fr.math.suite;
 
import java.util.Arrays;
 
public class ConwayTerm {
private byte[] digits;
 
/**
* @param args
*/
public static void main(String[] args) {
ConwayTerm term = new ConwayTerm(new byte[] { 1 }); // Premier terme de la suite:1
//Affiche les 25 premiers termes
for (int i = 0; i < 25; i++) {
System.out.println("u(" + i + ")=" + term);
term = term.nextTerm();
}
}
 
public ConwayTerm(byte[] digits) {
this.digits = digits;
}
 
/**
* calcule le terme suivant de la suite.
*/
public ConwayTerm nextTerm() {
if (digits.length != 0) {
byte count = 1;
while ((count < digits.length && digits[0] == digits[count])) count++;
return concat(count, digits[0], new ConwayTerm(Arrays.copyOfRange(
digits, count, digits.length)).nextTerm());
} else {
return this;
}
}
/**
* Affiche les chiffres du terme de la suite
*/
public String toString() {
StringBuffer buffer = new StringBuffer();
for (byte b : digits) buffer.append(b);
return buffer.toString();
}
private ConwayTerm concat(byte count, byte digit, ConwayTerm other) {
byte[] result = new byte[2 + other.digits.length];
result[0] = count;
result[1] = digit;
for (int i = 0; i < other.digits.length; i++) result[i + 2] = other.digits[i];
return new ConwayTerm(result);
}
 
}
 
 
</source>
</div>
== Références ==
{{Références}}