<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.
Aquest lloc web utilitza galetes per millorar l'experiència de l'usuari