<div class="page"> <div class="cover text-center"> <img class="mx-auto" src=/itb/images/logo_mislata.png alt="logo"> # Proves de mètodes estàtics <div class="text-end fit-content ms-auto my-3 mt-auto pt-3"> <p><strong>Autor:</strong> Joan Puigcerver Ibáñez</p> <p><strong>Correu electrònic:</strong> j.puigcerveribanez@edu.gva.es</p> <p><strong>Curs:</strong> 2024/2025</p> </div> <div> <p class="fw-bold mb-0">Llicència: BY-NC-SA</p> <p class="d-none d-md-block">(Reconeixement - No Comercial - Compartir Igual)</p> <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.ca" target="_blank"> <img class="mx-auto" src="/itb/images/license.png" alt="Licence"/> </a> </div><!--license--> </div><!--cover--> </div><!--page--> {:toc} ## RockPaperScissors A partir de l'exemple `RockPaperScissors` plantejat en el material [Tests unitaris en JUnit](/itb/DAM-ED/UD5/materials/02_junit.html#crear-tests): 1. Crea tests per tots els possibles escenaris i prova el programa. Pensa els diferents casos de prova que hauria de tindre els tests per comprovar tots els possibles escenaris en una partida de pedra, paper i tisores. Si tens dificutat per fer-ho, pots consultar el __spoiler__. ??? spoiler __Casos possibles:__ <table> <thead> <tr> <th>Jugador 1</th> <th>Jugador 2</th> <th>Resultat</th> </tr> </thead> <tbody> <tr> <td>Pedra</td> <td>Pedra</td> <td>Empat</td> </tr> <tr> <td>Pedra</td> <td>Paper</td> <td>Jugador 2</td> </tr> <tr> <td>Pedra</td> <td>Tisores</td> <td>Jugador 1</td> </tr> <tr> <td>Paper</td> <td>Pedra</td> <td>Jugador 1</td> </tr> <tr> <td>Paper</td> <td>Paper</td> <td>Empat</td> </tr> <tr> <td>Paper</td> <td>Tisores</td> <td>Jugador 2</td> </tr> <tr> <td>Tisores</td> <td>Pedra</td> <td>Jugador 2</td> </tr> <tr> <td>Tisores</td> <td>Paper</td> <td>Jugador 1</td> </tr> <tr> <td>Tisores</td> <td>Tisores</td> <td>Empat</td> </tr> </tbody> </table> ??? 2. Corregeix el programa si és necessari. 3. Torna a executar els tests i comprova que tots siguen correctes. Si algun falla, torna al pas 2. ## Collatz Implementa el mètode `int collatz(int n)` que aplique la [Conjetura de Collatz](https://es.wikipedia.org/wiki/Conjetura_de_Collatz) a un nombre enter i retorne el nombre d'iteracions necessàries per arribar fins al número __1__. El mètode ha d'aplicar la següent operació fins arribar a l'1: - Si el nombre és __parell__, divideix el nombre per 2. - Si el nombre és __imparell__, mutiplica el nombre per 3 i suma 1. $$ F(n) = \begin{cases} \frac{n}{2} & \text{if n is even}\\ 3n + 1 & \text{if n is odd} \end{cases} $$ La conjetura diu que si apliquem aquesta operació a qualsevol nombre natural indefinidament, el resultat serà sempre 1. Per últim, prova el mètode mitjançánt tests unitaris. Podeu utilitzar la web https://goodcalculators.com/collatz-conjecture-calculator/ per veure quins resultats ha d'obtindre el programa. ??? spoiler Podeu utilitzar els següents casos de prova: - Per __$N = 1$__, el programa arriba a 1 després de __0__ passos. - Per __$N = 5$__, el programa arriba a 1 després de __5__ passos. - Per __$N = 8$__, el programa arriba a 1 després de __3__ passos. - Per __$N = 11$__, el programa arriba a 1 després de __14__ passos. - Per __$N = 27$__, el programa arriba a 1 després de __111__ passos. ??? # Ampliació Transforma tots els tests unitaris escrits anteriorment a test parametritzats.