Last active
February 1, 2020 01:18
-
-
Save ariel-diaz/2d04531c41b3d92583ecf1f4982356a1 to your computer and use it in GitHub Desktop.
KATA TDD
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Text; | |
namespace ConsoleApp1 | |
{ | |
public class Test | |
{ | |
public string getRomano(int num) | |
{ | |
StringBuilder resultado = new StringBuilder(); | |
getRomanoR(num, ref resultado); | |
return resultado.ToString(); | |
} | |
public void getRomanoR(int num, ref StringBuilder resultado) | |
{ | |
int cantidadCifras = num.ToString().Length; | |
int multiplicadorInt = (int)Math.Pow(10,(cantidadCifras - 1)); | |
int digito = (num / multiplicadorInt); | |
int resto = digito * multiplicadorInt; | |
switch (cantidadCifras) | |
{ | |
case 4: | |
resultado.Append(new String('M', digito)); | |
getRomanoR(num - resto, ref resultado); | |
break; | |
case 3: | |
resultado.Append(getParteCentenas(digito)); | |
getRomanoR(num - resto, ref resultado); | |
break; | |
case 2: | |
resultado.Append(getParteDecena(digito)); | |
getRomanoR(num - resto, ref resultado); | |
break; | |
case 1: | |
resultado.Append(getParteDecimal(num)); | |
break; | |
} | |
} | |
private string getParteDecena(int parteDecimal) | |
{ | |
switch (parteDecimal) | |
{ | |
case 1: | |
return "X"; | |
case 2: | |
return "XX"; | |
case 3: | |
return "XXX"; | |
case 4: | |
return "XL"; | |
case 5: | |
return "L"; | |
case 6: | |
return "LX"; | |
case 7: | |
return "LXX"; | |
case 8: | |
return "LXXX"; | |
case 9: | |
return "XC"; | |
default: return "X"; | |
} | |
} | |
private string getParteCentenas(int parteCentana) | |
{ | |
switch (parteCentana) | |
{ | |
case 1: | |
return "C"; | |
case 2: | |
return "CC"; | |
case 3: | |
return "CCC"; | |
case 4: | |
return "CD"; | |
case 5: | |
return "D"; | |
case 6: | |
return "DC"; | |
case 7: | |
return "DCC"; | |
case 8: | |
return "DCCC"; | |
case 9: | |
return "CM"; | |
default: return "C"; | |
} | |
} | |
private string getParteDecimal(int parteDecimal) | |
{ | |
switch (parteDecimal) | |
{ | |
case 1: | |
return "I"; | |
case 2: | |
return "II"; | |
case 3: | |
return "III"; | |
case 4: | |
return "IV"; | |
case 5: | |
return "V"; | |
case 6: | |
return "VI"; | |
case 7: | |
return "VII"; | |
case 8: | |
return "VIII"; | |
case 9: | |
return "IX"; | |
default: | |
return "NO FUNCA"; | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment