Ir al contenido (saltar navegación)

¿Qué es?

¡Acepta el reto! es un almacén y juez en línea de problemas de programación en español que acepta soluciones en C, C++ y Java.

No es un mero listado de problemas, sino mucho más. ¡Es un corrector automático!

Si quieres poner a prueba tu habilidad programando y compararla con la de otros, ¡éste es tu sitio!

¿Por dónde empiezo?

Si no conoces este tipo de jueces, te ayudamos a resolver el primer problema para que entiendas la dinámica del uso y no cometas los errores más comunes.

Luego puedes resolver algún otro de los múltiples problemas disponibles. Si no sabes por cuál empezar, puedes recorrer las diferentes categorías o mirar el problema de la semana que te proponemos abajo. También puedes mirar lo que otros usuarios están resolviendo.

¿Aceptas el reto?

Problema de la semana

Teclado de televisor

Queremos buscar series y películas en la televisión de la forma más eficiente posible. Cuando se busca un texto en la televisión aparece un teclado virtual por el que nos desplazamos con las flechas del mando a distancia: arriba, derecha, abajo e izquierda. El objetivo es calcular el número mínimo de desplazamientos que hay que realizar dado un teclado y un texto a introducir determinados. Debe tenerse en cuenta que hay teclas de distinto tamaño y que se trata de un teclado circular: cuando el cursor se sale por un extremo del teclado, aparece por el extremo opuesto. El cursor se situa inicialmente sobre la tecla que ocupa la esquina superior izquierda.

A continuación se muestra un ejemplo de teclado:

AAABCD
AAAGHI
LEEEEK

Un teclado tiene forma rectangular, y todas sus teclas son también rectángulos, aunque puede haber teclas de diferentes tamaños. Así, en el teclado del ejemplo la tecla A tiene dimensiones 2 × 3, la tecla B tiene dimensiones 1 × 1, la E 1 × 4, etc. El efecto de pulsar cada una de las flechas del mando a distancia se describe a continuación:

  • Derecha: el cursor se desplaza a la tecla de la derecha, y si hay varias a la de más arriba. En el ejemplo, si se pulsa derecha cuando el cursor está sobre la tecla A, el cursor se situará sobre la tecla B.
  • Izquierda: el cursor se desplaza a la tecla de la izquierda, y si hay varias a la de más arriba. En el ejemplo, si se pulsa izquierda cuando el cursor está sobre la tecla A, el cursor se situará sobre la tecla D.
  • Arriba: el cursor se desplaza a la tecla de arriba, y si hay varias a la de más a la izquierda. En el ejemplo, si se pulsa arriba cuando el cursor está sobre la tecla E, el cursor se situará sobre la tecla A.
  • Abajo: el cursor se desplaza a la tecla de debajo, y si hay varias a la de más a la izquierda. En el ejemplo, si se pulsa abajo cuando el cursor está sobre la tecla A, el cursor se situará sobre la tecla L.

Para el teclado del ejemplo, una posible forma de teclar el texto ADKEAB con el mínimo número de desplazamientos podría ser: izquierda, arriba, izquierda, arriba y derecha.