NumeracionKlingon.vb

  1. ' NumeracionKlingon.vb — ProInf.net — 29-feb-2012
  2.  
  3. Public Class NumeracionKlingon
  4.  
  5. 'Rango entre 0 y 9.999.999
  6.  
  7. 'http://www.languagesandnumbers.com/como-contar-en-klingon/es/tlh/
  8.  
  9. ' Ejemplos:
  10. ' 10 = wa’maH
  11. ' 11 = wa’maH wa’
  12. ' 20 = cha’maH
  13. ' 30 = wejmaH
  14. ' 75 = SochmaH vagh
  15. ' 800 = chorghvatlh
  16. ' 50000 = vaghnetlh
  17.  
  18. Public Shared Function Obtener(ByVal numero As Decimal) As String
  19. If numero >= 0 And numero <= 9999999 Then
  20. If numero = 0 Then Return unidades(0)
  21. Dim resultados() As String = DescomponerEnPotencias(numero)
  22. Dim resultado As String = Join(resultados, " ")
  23. Return resultado
  24. Else
  25. Return "?"
  26. End If
  27. End Function
  28.  
  29. Private Shared Function DescomponerEnPotencias(ByVal numero As Decimal) As String()
  30. Dim resultado As New List(Of String)
  31. For i = 0 To sufijos_potencias.Length - 1
  32. Dim valor As Integer = numero Mod 10
  33. Dim sufijo = sufijos_potencias(i)
  34. If valor > 0 Then
  35. resultado.Insert(0, ObtenerValor(valor, sufijo))
  36. End If
  37. numero \= 10
  38. If numero = 0 Then Exit For
  39. Next
  40. Return resultado.ToArray()
  41. End Function
  42.  
  43. Private Shared Function ObtenerValor(
  44. ByVal valor As Integer,
  45. ByVal sufijo As String
  46. ) As String
  47. Dim unidad = unidades(valor)
  48. Return String.Format("{0}{1}", unidad, sufijo)
  49. End Function
  50.  
  51. '0..9
  52. Private Shared unidades = {"pagh", "wa’", "cha’", "wej", "loS",
  53. "vagh", "jav", "Soch", "chorgh", "Hut"}
  54.  
  55. '1, 10, 100, 1000, 10.000, 100.000, 1.000.000
  56. Private Shared sufijos_potencias = {
  57. "", "maH", "vatlh", "SaD", "netlh", "bIp", "’uy’"
  58. }
  59.  
  60. End Class
  61.  

Proinf.net