FizzBuzz
Para practicar TDD, realizaremos este ejercicio clásico.
Usando TDD (empieza por los tests), implementa una función que dado un número:
Si el número es divisible por 3, retorna “Fizz”
Si el número es divisible por 5, retorna “Buzz”
Si el número es divisible por 3 y por 5, retorna “FizzBuzz”
En otro caso, retorna el mismo número
public class FizzBuzz {
public static String fizzBuzz ( int n ) {
...
}
}
Por ejemplo, ve escribiendo estos tests. Tras cada test, escribe el código mínimo necesario para que los tests pasen, y sigue con el siguiente test.
fizzBuzz ( 3 ) ⇒ "Fizz"
fizzBuzz ( 6 ) ⇒ "Fizz"
fizzBuzz ( 5 ) ⇒ "Buzz"
fizzBuzz ( 10 ) ⇒ "Buzz"
fizzBuzz ( 15 ) ⇒ "FizzBuzz"
fizzBuzz ( 30 ) ⇒ "FizzBuzz"
fizzBuzz ( 2 ) ⇒ "2"
fizzBuzz ( 16 ) ⇒ "16"
Reto extra: Números Romanos
Como extra, prueba este otro ejercicio. Anímate a intentarlo. ¡Te va a hacer pensar!
Usando TDD, implementa una función que convierta un número en el equivalente romano.
public class RomanNumerals {
public static String arabicToRoman ( int n ) {
...
}
}
Por ejemplo, ve escribiendo estos tests. Tras cada test, escribe el código mínimo necesario para que los tests pasen, y sigue con el siguiente test.
arabicToRoman ( 1 ) ⇒ "I"
arabicToRoman ( 2 ) ⇒ "II"
arabicToRoman ( 3 ) ⇒ "III"
arabicToRoman ( 5 ) ⇒ "V"
arabicToRoman ( 6 ) ⇒ "VI"
arabicToRoman ( 7 ) ⇒ "VII"
arabicToRoman ( 10 ) ⇒ "X"
arabicToRoman ( 11 ) ⇒ "XI"
arabicToRoman ( 15 ) ⇒ "XV"
arabicToRoman ( 16 ) ⇒ "XVI"
arabicToRoman ( 50 ) ⇒ "L"
arabicToRoman ( 51 ) ⇒ "LI"
arabicToRoman ( 55 ) ⇒ "LV"
arabicToRoman ( 56 ) ⇒ "LVI"
arabicToRoman ( 60 ) ⇒ "LX"
arabicToRoman ( 70 ) ⇒ "LXX"
arabicToRoman ( 80 ) ⇒ "LXXX"
arabicToRoman ( 81 ) ⇒ "LXXXI"
arabicToRoman ( 85 ) ⇒ "LXXXV"
arabicToRoman ( 86 ) ⇒ "LXXXVI"
arabicToRoman ( 126 ) ⇒ "CXXVI"
arabicToRoman ( 2507 ) ⇒ "MMDVII"
Puedes añadir más tests.
En los siguientes tests, probamos los casos en los que hay símbolos que restan, porque van a la izquierda de un símbolo mayor:
arabicToRoman ( 4 ) ⇒ "IV"
arabicToRoman ( 9 ) ⇒ "IX"
arabicToRoman ( 14 ) ⇒ "XIV"
arabicToRoman ( 19 ) ⇒ "XIX"
arabicToRoman ( 24 ) ⇒ "XXIV"
arabicToRoman ( 40 ) ⇒ "XL"
arabicToRoman ( 49 ) ⇒ "XLIX"
arabicToRoman ( 90 ) ⇒ "XC"
arabicToRoman ( 99 ) ⇒ "XCIX"
arabicToRoman ( 400 ) ⇒ "CD"
arabicToRoman ( 900 ) ⇒ "CM"
Puedes añadir más tests.
Ten en cuenta que el símbolo I puede restar a V y X. El símbolo X puede restar a L y C. El símbolo C puede restar a D y M.
Dicho de manera más simple, las combinaciones en las que hay una resta son las siguientes: IV IX XL XC CD CM.