Mostrando las entradas con la etiqueta Algoritmos. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Algoritmos. Mostrar todas las entradas

lunes, 3 de marzo de 2014

Lunes 2 de Enero de 2006 a las 3 de la tarde con 4 minutos y Go

En una de mis tantas travesías por aprender nuevas cosas me encontré con la necesidad de manipular fechas en el lenguaje go y bueno me encontré con la ¿grata? sorpresa de no podía utilizar mis conocimientos "ancestrales" de transformación de fechas, por ejemplo %Y para años o %H para horas sino que go tratando de "facilitarle" la vida a los programadores decidió utilizar la mnemotecnia para el formato de fechas (y obviamente de horas) empleando el siguiente estándar:

  1. Día
  2. Mes
  3. Hora (en realidad se usa el 15 que significa 3pm)
  4. Minutos
  5. Segundos
  6. Año
  7. Timezone

Entonces resumiendo, en lugar de utilizar representaciones para hacer el formato, utiliza una fecha:

01/02 03:04:05PM '06 -0700

Ejemplo:

miércoles, 26 de febrero de 2014

Numeros a letras

Hoy estaba todo juicioso como siempre, trabajando, cuando me quisieron meter la pica de cómo hacer el típico algoritmo para transformar de números a letras, pues bueno como estaba todo juicioso no cambié de tema y seguí trabajando (porque siempre trabajo juicioso) pero llegué a la casa y me puse manos a la obra.

Los requisitos eran hacerlo en ingles (you know numbers to words) y hacerlo en ruby.

¿Qué lógica utilicé?
Bueno, tanto las unidades como las centenas utilizan los mismos nombres salvo que las centenas llevan incorporada la palabra hundred así que utilicé un arreglo para manejar estas dos posiciones, luego caí en cuenta que en inglés (¿también en español?) el proceso se repite cada tres dígitos, es decir procesar por ejemplo 123 y 123xxx (nada en particular las 3 x's solo me refiero a cuales quiera dígitos que usemos) da exactamente igual salvo que cada 3 dígitos toca ponerle un nombre (miles, millones, billones, etc) por lo que para esta parte también generé un arreglo con los nombres, y el último caso es que los nombres para las decenas dependen del valor de las unidades cuando la decena es 1, es decir para los dieces (¿cómo se dice esto en español?) once, doce, etc, así que creé 2 arreglos, uno para las decenas con dígito 1 y otro para las decenas con cualquier otro dígito.

Y bueno, esto es lo que salió:

En Gist para que lo copien, mejoren, etc: