Recopilatorio de snippets en Go – Probando en Codeforces

Así como en su día me dio por resolver problemas de Project Euler en Erlang (podéis revisar mi repositorio en GitHub), esta vez me ha dado por resolver problemas de Codeforces. Nada más allá de otra plataforma con problemas de programación (como tantas otras), esta vez patrocinada por el equipo de desarrollo de la aplicación Telegram.

Sin embargo, esta vez me he decantado por el lenguaje Go. Todo fue a raíz de escuchar un podcast tecnológico dónde entrevistaron a Francesc Campoy, Developer Advocate en Google. La charla estuvo centrada en los servicios en la nube de Google y del lenguaje desarrollado por la misma compañía llamado Go.

Por suerte para vosotros, mi intención no es seguir contando cosas acerca de mi vida, sino que es hacer de este artículo un pequeño recopilatorio de pequeños pedazos de código en Go que puedan servir a cualquier lector que se encuentre como yo: empezando directamente al grano.

Antes de pasar directamente al código pido perdón a aquellos expertos en este lenguaje, puesto que estoy seguro de que mi inexperiencia en este sentido me puede hacer pasar un mal trago.

Leyendo un entero de la entrada estándar

Posteriormente tendremos el entero leído en la variable i.

leyendo un string de la entrada estándar

Posteriormente tendremos el contenido leído en la variable sequence.

Leyendo varios strings de la entrada estándar

Os podéis reír de mi, pero el siguiente pedazo de código me llevó de cabeza durante varias horas, incluso llegué a redactar un artículo en la misma página solicitando ayuda.

La verdad es que el enfoque en pseudocódigo del problema es sumamente trivial, de hecho creo que nunca me ha resultado un problema en cualquier otro lenguaje (incluso en Erlang!), pero esta vez se me complicó el tema.

En este ejemplo, típico en los problemas de programación, se muestra como leer un número (de iteraciones, por ejemplo) y como posteriormente seguir haciendo uso del scanner para ir leyendo una nueva cadena de texto cada vez. Con tal de aprovechar el ejemplo también he mostrado como escribir por salida estándar la cadena leída.

Operaciones con cadenas de caracteres

De nuevo seguimos con los strings:

En este ejemplo podemos ver operaciones muy habituales con strings: poner todos los caracteres en minúsculas, partir la cadena (split), juntar la cadena (join) o reemplazar un elemento de la cadena por otro mediante expresiones regulares.

homemade funcTION para reemplazar el carácter de un string

No hace falta añadir mucho más.

Definiendo un map(a) de strings

En este caso tampoco hace falta añadir nada más.

Como podéis ver, aunque esto no se pueda considerar ni una introducción al lenguaje, Go tiene sus particularidades a la vez que comparte varias características con otros lenguajes populares. Como dijo Francesc en su día: Go es como C pero “seguro” como Java, con su garbage collector pero menos verbose.

Estad atentos, porqué a medida que vaya resolviendo más problemas de Codeforces no descarto ir extendiendo este recopilatorio.

Gracias!