0votos
Brainfuck en Groovy
por

rchavarriat

usando groovy hace 4 años

He solucionado el problema mediante TDD, interpretando uno a uno cada comando hasta completarlos todos. El intérprete me ha quedado con un switch-case un poco grande y feo :(

0votos
Kata CodeBreaker en Groovy
por

rchavarriat

hace 4 años

He solucionado el problema en dos pasos. El primero, desarrollando el metodo 'unlock' siguiendo TDD. Una vez hecho el método que resuelve el problema, he creado el método 'play', que nos permite jugar a adivinar el código secreto. 'play' va leyendo de la consola el codigo secreto introducido por el usuario y va informando de los dígitos y posiciones acertadas.

0votos
SQL String Generator en Groovy
por

rchavarriat

hace 4 años

La solucion permite crear sentencias SELECT, DELETE, INSERT y UPDATE manejando tipos de datos string, number y boolean. Tiene varias restricciones: 1) en la clausula WHERE solo utilizo AND para anidar condiciones, 2) estas condiciones estan ordenadas alfabéticamente por el nombre del campo.

0votos
SENO sin lazos en Groovy
por

rchavarriat

hace 4 años

Como comentó josejuan a mi anterior solución, ésta no solucionaba correctamente el problema. Ofrecía la ruta más corta, sí, pero no respetaba la ruta. Esta nueva solución respeta la ruta introducida y elimina los bucles que en ella aparecen. Para ello uso una lista con los pasos que voy dando. En cada nuevo movimiento, compruebo si he estado antes en ese punto. Si es así, desecho los pasos desde ese punto. Al final, construyo la nueva ruta con los items que haya en la lista.

0votos
SMS en Groovy
por

rchavarriat

hace 4 años

Primero creo una lista que almacena objetos con el dígito pulsado y el número de veces que se ha pulsado. Luego, itero esta lista y voy creando el String de salida. En ambos casos hago uso del método 'inject', básicamente un bucle donde ir acumulando el resultado, pero propio del lenguaje. Existe un Map donde guardo los caracteres que corresponden a cada uno de los dígitos.

0votos
Extraer periodo de una secuencia binaria en Groovy
por

rchavarriat

hace 4 años

El método 'periodicLength' devuelve la longitud de la región que se repite (0 si no se repite). Para ello, tomo como candidatos desde 1 hasta la mitad de la longitud de la secuencia; y busco el primero que cumple que se repite al menos 2 veces comprobando regiones a partir de la segunda (la primera es la propia región y siempre será igual a la buscada). No es imprescindible que la longitud de la secuencia sea múltiplo de la longitud de la región.

0votos
Coordenadas de un número en una matriz caracol. en Groovy
por

rchavarriat

hace 4 años

Está claro que una solución eficiente no es recorrer toda la matriz hasta dar con el número buscado, así que con la cuenta de la vieja he llegado a una solución prácticamente igual a la de josejuan, pero no me queda claro cómo averigua él a qué anillo/perímetro/cuadrado pertenece un número dado (yo lo calculo recursivamente). En el README subido a github explico qué he considerado los conceptos 'ring', 'side' y demas: https://github.com/rchavarria/solveet-problems/tree/master/spiral-matrix-coor

0votos
Matriz Caracol en Groovy
por

rchavarriat

hace 4 años

Con un solo bucle voy iterando el número a escribir en cada casilla, y en cada iteración voy actualizando las coordenadas donde iría el número. De esta forma voy rellenando la matriz haciendo una espiral en lugar de recorrer la matriz de la forma tradicional.

0votos
Suma de binarios en Groovy
por

rchavarriat

hace 4 años

Solución a la fuerza bruta. Gracias a LWalker es menos bruta, ya que me he dado cuenta que con iterar de 1 a N/2 es suficiente. También incluyo una solución inspirada por santanor (potencias de 2), que es una solución muchísimo más eficiente que la puramente iterativa.

0votos
Números de Hamming en Groovy
por

rchavarriat

hace 4 años

Solución un poco más funcional, más groovy y menos java, inspirada en la solución de Jorge (C++): Mediante "metaClass" hago que Number tenga un nuevo método que me indique si es un número Hamming o no. Genero una secuencia de números mucho más larga de lo necesario pero no he encontrado una forma sencilla de averiguar el último número dado el número de elementos que queremos que contenga la serie :'(

0votos
SENO sin lazos en Groovy
por

rchavarriat

hace 4 años

Cuento los movimientos hacia el sur y el norte, y la diferencia me dice cuánto nos movemos en vertical. Cuento los movimientos hacia el este y el oeste, y la diferencia me dice cuánto nos movemos en horizontal. Se concatena y ya está la ruta calculada sin lazos.

0votos
La ruta del SENO en Groovy
por

rchavarriat

hace 4 años

Es la solución más directa a la que he llegado. Es algo bruta también, ya que si la celda vale '0' o la ruta se sale de la matriz de celdas, salta una excepción para devolver '-1', sin más. Pero por eso también el código ha quedado muy limpito y sencillo, ya que no comprueba los límites de la matriz, simplemente, falla. Al final del código, he dejado un par de líneas para poder probarlo en una consola de groovy.