QUIÉN hay detrás

QUÉ hay detrás

INICIO


Pgs. 1    2     

Problema de las taquillas


Copio el enunciado original y la traducción que hago, más que nada para resaltar la concisión del inglés frente a la necesaria extensión del español.


A high school has a strange principal. On the first day, he has his students perform an odd opening day ceremony:

There are one thousand lockers and one thousand students in the school. The principal asks the first student to go to every locker and open it. Then he has the second student go to every second locker and close it. The third goes to every third locker and, if it is closed, he opens it, and if it is open, he closes it. The fourth student does this to every fourth locker, and so on. After the process is completed with the thousandth student, how many lockers are open?


Una escuela secundaria tiene un extraño director. El día de inicio del curso sus alumnos tienen que realizar una rara ceremonia de apertura:

Hay mil taquillas y mil estudiantes en la escuela. El director pide al primer estudiante que abra todas las taquillas. Después, el segundo estudiante debe contar las taquillas de dos en dos e ir cerrando la segunda, la cuarta, la sexta etc. (las pares). Y dejando las demás tal como están. El tercero irá contando las taquillas de tres en tres (o sea las que son múltiplo de tres) y, si están cerradas, las abre, pero si están abiertas, las cierra. Y dejando las demás tal como están. El cuarto, hace lo mismo pero contando de cuatro en cuatro, y así sucesivamente. Pero siempre dejando las demás tal como están. Después de que el proceso se haya completado con el estudiante número mil, ¿cuántas taquillas estarán abiertas?


SOLUCIÓN     


Empecé dibujando una matriz taquillera de 10 x 10 para que los 10 primeros alumnos hicieran sus operaciones, a fin de observar la ley de formación de la maniobra. La mecánica es sencilla pero requiere atención para cumplir con lo subrayado del enunciado y con lo que no está subrayado.


El hecho es que ya el tercer alumno cometió un solo error que desvirtuó por completo el resultado final. Vigilaré a este chico por si tengo que suspenderlo, pensé. Decidí entonces hacer yo mismo la maniobra, pero el resultado fue peor aún. Así pues, desistí de efectuar la maniobra a mano y generé un programa que, representando con exactitud lo que tenían que hacer los chicos, condujera a un resultado fiable. La ventaja añadida del programa sería una elasticidad que habría de permitir su aplicación a escuelas con distinto número de alumnos.


La matriz taquillera tiene esta estructura:

Las filas se corresponden con los alumnos. La primera fila refleja lo que el primer alumno hace con todas las taquillas, y así sucesivamente para los demás alumnos.

Las columnas representan a las taquillas. La columna nº 1 expresa lo que ha ocurrido con la primera taquilla al paso ante ella de cada alumno (aperturas, cierres, indiferencia).

Así pues, el programa TAQUI.BAS, seccionado en bloques, expresa (1 significa que la taquilla está abierta; 0, que está cerrada):


BLOQUE 1

El bloque hay que encabezarlo con una reserva de dimensionamiento para las matrices a (bidimensional: alumnos, taquillas) y s (unidimensional: sumatorio de unos), porque el sistema sólo da por defecto matrices de lado 10.

Refleja la maniobra del primer alumno abriendo todas las taquillas de la primera fila.


BLOQUE 2

Refleja la intervención en cada fila, su inicio y su final, incluyendo una derivación a la rutina del bloque 3.


BLOQUE 3

Esta rutina consigue que la situación de las taquillas de una fila quede sustituida por la de la fila anterior a fin de cumplir con los subrayados del enunciado.


BLOQUE 4

Se ocupa de detectar en cada fila si una taquilla es o no múltiplo de fila, para a continuación, abrirla o cerrarla según el enunciado. Además va haciendo la suma de unos y ceros de cada fila, que equivale a contar cuántas taquillas de esa fila quedan abiertas (los ceros, naturalmente, no añaden nada). Al final de este bloque se vuelve atrás para continuar con la fila siguiente.


                                       SIGUIENTE

PAG. 1 / 2