Rastreador

Un robot rastreador es aquel que intenta seguir una línea. Uno de los diseños más comunes consiste en tener una fila de sensores situada delante del robot, perpendicular a la dirección de la marcha. Asumiendo que nuestros sensores son binarios (cada sensor nos da un 00 si no detecta línea, y un 11 si sí la detecta), una lectura como la siguiente

1000111000

querría decir que disponemos de 10 sensores, y que el sensor de más a la izquierda y tres de los sensores del medio han detectado línea.

En este problema te pedimos que programes un algoritmo sencillo de rastreo de líneas, que a partir de las lecturas de esta fila de sensores decida cómo debe girar el robot. En concreto, sea xx el primer sensor empezando por la derecha que detecte línea, y sea nn el número total de sensores (en el ejemplo anterior, n=10n=10, x=4x=4). Tu programa deberá escribir un número MM entre el −90-90 (giro máximo a la izquierda) y el 9090 (giro máximo a la derecha) en función de los valores de xx y nn, según la fórmula M=90−180x−1n−1.M = 90 - 180\frac{x-1}{n-1}. En el ejemplo anterior se tendría, pues, M=30M=30. Si el valor resultante de MM no es entero, redondéalo hacia el 00.

Entrada

En una línea, el número de casos 0≤k≤10000\leq k\leq 1000, seguido de kk líneas, cada una de las cuales contiene una lectura de la fila de sensores. Las lecturas se te pueden pasar de dos formas distintas: en binario, o codificadas en decimal. Una lectura en binario son siempre 10 bits (00 o 11), donde siempre se cumple que el bit de más a la izquierda tiene el valor 11. Una lectura en decimal es un número del 22 al 999999999=109−1999999999=10^9-1 que, al ser pasado a binario (base 2), produce la lectura de los sensores. Por ejemplo, el número decimal 214214 se corresponde con el número binario 1101011011010110, puesto que 214=107⋅2=(53⋅2+1)⋅2=(26⋅2+1)⋅22+2=13⋅24+22+2=(6⋅2+1)⋅24+22+2=3⋅26+24+22+2=(1⋅2+1)⋅26+24+22+2=27+26+24+22+2=11010110b.\begin{align*} 214 &= 107\cdot 2 = (53\cdot 2 + 1)\cdot 2 = (26\cdot 2 +1)\cdot 2^2 + 2 = 13\cdot 2^4+2^2 + 2 = (6\cdot 2+1)\cdot 2^4+2^2+2 \\ &= 3\cdot 2^6+2^4+2^2+2 = (1\cdot 2+1)\cdot 2^6 +2^4 +2^2+2= 2^7 + 2^6 +2^4 + 2^2 + 2 = 11010110_b. \end{align*}

Salida

Escribe tantas líneas como casos, con la dirección que debe seguir el robot. En caso que la entrada sea binaria, siempre tendrás n=10n=10. Si la entrada es en decimal, debes asumir que nn és el mínimo número de dígitos binarios que necesitas para representar el número dado (n=8n=8 en el ejemplo anterior).

Puntuación

Información del problema

Autoría: Omer Giménez

Generación: 2026-01-25T11:09:21.773Z

© Jutge.org, 2006–2026.
https://jutge.org