La suite de Conway - TP noté final
<note warning>Modalités de rendu : à la fin, vous devez rendre une archive contenant deux (et uniquement deux) fichiers : conway.java et testconway.java. Vous déposerez ces fichiers via Tomuss (http://tomuss.univ-lyon1.fr). Tout manquement au respect de ces consignes vous vaudra -2. </note>
Le barème est le suivant :
- Syntaxe et présentation du code : 1 point
- Commentaires appropriés : 1 point
- Tests demandés fonctionnels : 2 points
- Tests supplémentaires fonctionnels : 2 points
- Code fonctionnel : 2 points
- Partie 2 : 2 points.
La suite de Conway est une suite très simple, qui n'a rien de mathématique. Il suffit de lire un terme “à haute voix” et d'écrire ce que l'on entend, pour obtenir le terme suivant.
Par exemple, si le premier terme de la suite est “1”, le terme suivant sera “11”, car quand on lit “1”, on dit “je vois un 1”, donc on écrit 11 (qui se lit un un et pas onze :)).
Autre exemple, si le terme est “12”, le terme suivant sera “1112”. Et ainsi de suite.
Encore un exemple ? Si on commence avec le terme “112”, on aura ensuite “2112”, puis “122112”, puis “11222112”.
Partie 1
On souhaite écrire une méthode “getNext()” qui renvoit le terme suivant de n'importe quel terme de la suite de Conway. On propose les tests suivants :
- getNext(“11”) doit retourner “21”
- getNext(“2112”) doit retourner “122112”
- getNext(“2”) doit retourner “12”
- getNext(getNext(“11”)) doit retourner “1211”
1.1 Écrivez une méthode getNext() ainsi que les tests unitaires correspondants et vérifiez que votre méthode passe les tests.
1.2 Ces tests sont plutôt simplistes. Que pourrait-on imaginer d'autre ? Écrivez les autres tests pertinents auxquels vous pensez, et vérifiez que votre méthode passe ces nouveaux tests.
1.3 Comment se comporte votre méthode si vous utilisez comme premier terme “pa1a13” ? Est-ce que vos tests supportent ce cas ? Qu'est-ce que cela vous inspire ?
Partie 2
2.1 Sous quelle condition peut-on voir apparaître le chiffre “4” dans un terme de la suite de Conway ? Mettez votre réponse en commentaire dans l'un de vos fichiers.
2.2 Soit le terme de départ “112212123112”. Quelle est la longueur du 10ème successeur de ce terme ? Et celle du 50ème ?
2.3 Vous avez certainement rencontré un problème pour répondre à la question précédente : expliquez ce qui se passe et proposez des solutions pour corriger ce problème.