Algoritmo y números capicúas

Un algoritmo no es algo que tiene ritmo (¿o sí lo tiene? ve­re­mos…).  La de­fi­ni­ción reza “pro­ceso especial para resolver, de modo mecánico, todos los pro­ble­mas de un cierto tipo”; por ejemplo, la extracción de la raíz cua­dra­da de un nú­mero o el cál­culo del máximo común divisor de dos números.”

Etimológicamente, pareciera que (según el Dr. Aurelio Baldor) la palabra “algoritmo” proviene del mundo árabe. Y tiene sentido! Nuestro sistema de nume­ra­ción actual se basa en los “números arábigos” y un gran matemático musulmán, Al-Juarismi, dio al álgebra (al-gabr) la forma que después iba a ser clásica allá por el año 825. Al-gabr significa ecuación o restauración; al-muqabala son los tér­mi­nos que hay que agregar o quitar para que la igualdad no se altere.

Al-muqabala rima con cábala y me parece que son parientes… Ritmo sig­ni­fi­ca, fi­gu­ra­ti­va­mente, “orden acompasado en la sucesión de las cosas”, de modo que pareciera haber una sucesión acom­pasada entre las dos palabras; cuál precede/sucede a la otra… no lo sé por ahora. Algo­ritmo suena a “algo que tiene ritmo”; y no está,  para nada, alejado de la realidad; porque “resolver algo mecá­ni­ca­men­te” con­lleva la perio­di­ci­dad y el ritmo.

En el área de la programación de computadoras disponer de un algoritmo para resol­ver un pro­blema en particular es esencial. Si hay que deter­minar los números capicúas en un deter­minado rango de números, por ejemplo, sería tener poco arte analizar cada uno de los números del rango para ver si lo es. Recordemos que capicúa es a los números lo que palíndromo es a las frases o palabras: «anilina», «dábale arroz a la zorra el abad», etc.

 

“El movimiento se demuestra andando…” –Carlitos Balá

Supon­gamos que tenemos como tarea imprimir los prime­ros 100 números capicúas de 4 cifras. O sea, todos los que están en el rango [0..9999]; diez mil números. El mayor número de cuatro cifras, sea o no capicúa, es el número 9999; si la cifra de los millares es igual a la cifra de las unidades y las dos del medio son iguales entre sí, entonces el número es capicúa. El 9999 es capicúa; y lo mismo valdrá para el 8888, el 7777, el 6666, etc. Ya tenemos diez. En cuanto a las dos cifras del medio, que tienen que ser iguales entre sí, y como en nuestro sistema de nume­ración dis­po­ne­mos de diez dígitos, dedu­cimos sin mucha dificultad que habrá diez números capicúas de la forma n00n, n11n, n22n, n33n, etc. Sumados a los diez de la forma 0nn0, 1nn1, 2nn2, 3nn3, 4nn4, etc.,  ten­dremos 10 veces 10 núme­ros capicúas de cuatro cifras. Este análisis preli­minar no tiene como objetivo tomar­nos examen para saber cuán inte­li­gen­tes somos sino para ir esbo­zando un algo­ritmo de progra­mación. Ya lo dije más arriba: analizar cada uno de los 10.000 números indivi­dual­men­te para ver si es (o no) capicúa es tener poco arte; es no tener un algoritmo.

Ahora, con el esbozo algorítmico en mente, podremos comenzar a escribir líneas de código. La clave está en “10 veces 10” que nos indica hacer dos bucles ani­dados para recorrer todos los dígitos en el rango [0..9] 10*10 veces. Utilizando el lenguaje Visual Basic (universal), una primera apro­xi­mación sería la siguiente:

 

‘Imprimir todos los capicúas entre 0 y 9999 inclusive

Sub Print100Capicuas()

Dim i As byte, j As byte, capicua As integer

    For i = 0 To 9

        For j = 0 To 9

            capicua = (1000 * i) + (100 * j) + (10 * j) + i

            Debug.Print Format(capicua, “0000″)

        Next j

    Next  i

End Sub

Pero,

1000i + i = 1001i

100j + 10j = 110j

luego, podremos refinar un poco más el código para que resulte de la siguiente forma:

‘Imprimir todos los capicúas entre 0 y 9999 inclusive

Sub Print100Capicuas()

Dim i As byte, j As byte, capicua As integer

    For i = 0 To 9

        For j = 0 To 9

            capicua = 1001 * i + 110 * j

            Debug.Print Format(capicua, “0000″)

        Next j

    Next  i

End Sub

 

Así, hemos llegado a imple­­men­­tar un algoritmo para un de­ter­­mi­nado pro­ble­ma que es resuelto en 100 iteraciones en lugar de hacer 10.000 análisis indi­vi­dua­les. Como no se me ocurre nada para refinar aún más el algoritmo lo doy por ter­mi­na­do así como está dejando abierta la posibilidad de que a alguien se le ocurra en el futuro la manera de darle una vuelta de tuerca más al asunto; siempre fue, es y será posi­ble lograrlo.  Por supuesto que el problema que originó el algoritmo aquí presentado puede llegar a parecer algo banal; pero es sólo un ejemplo ilustrativo y nada más que eso. No obstante ya estuve tanteando el tema usando capicúas de 5 y 6 cifras y no me ha ido mal. Algún día, con tiempo y ganas, procuraré alcanzar el algoritmo para imprimir los capicúas de cualquier cantidad de cifras. Por ahora, ya está bien; es suficiente.

Ayudemos a que la PNA sea eficiente

Foto puesta de sol en el mar:            La Prefectura Naval Argentina (PNA para abreviar), adminis­tra­ti­va­men­te ha­blan­do, es un apa­ra­to arcaico que se mueve lento, como un pesado dinosaurio desubicado en el tiempo que se mero­dea en pleno año 2010 ine­fi­cien­te­men­te sin que nadie, apa­ren­te­men­te, le haga ver lo mal que se está de­sem­pe­ñan­do . Por lo menos, en lo que respecta a su sección POLINAVE ju­ris­dic­ción del Puerto La Plata, Argentina.

            Hoy en día, cuando el pasaporte (documento de validez internacional) se tramita en menos de quince días y el DNI en el día mismo del trámite, la PNA se toma su tiempo y con naturalidad total admi­nis­tra trá­mi­tes pú­bli­cos de hasta un año; y más aún. Los trámites que inicia el ciudadano y el marino mer­can­te «se pierden en el camino» algunas veces y nadie se hace cargo; deben ser presentados de nuevo, como si nada hubiera sucedido, y volver a esperar un tiempo de tra­mi­tación inau­di­ta­men­te extenso. Un simple trámite para obtener un certi­fi­cado puede llegar a demo­rar hasta tres meses; en pleno tercer milenio. La PNA trabaja de la misma manera desde hace muchas décadas; la llegada de la tecno­logía y la ins­tan­ta­nei­dad de las comu­ni­ca­cio­nes no mejo­raron en nada su mal desem­pe­ño. Entre lo que de­mo­ra­ban los trá­mi­tes en la década del ’80 y lo que ahora demoran no hay diferencia. Año tras año ingresan a la PNA muchos jóvenes con ímpetu y la fuerza de su sangre jóven pero no es sufi­cien­te para resistir la potencia de este dino­sau­rio buro­crá­ti­co; pronto se dan cuenta de ello, le toman el tiempo a la bestia y, ante la pregunta  del ciuda­da­no común “¿cuándo vengo a buscarlo?”  res­pon­den con acos­tum­bra­mien­to “Más o menos un año. Déje­nos un telé­fono que lo lla­ma­mos cuando pueda pasar a retirarlo.”  ¿? Es insólito; esto no puede ni debe suceder. Pero está suce­dien­do. Los que somos marinos mercantes ya tenemos suficiente con las innu­me­ra­bles exigen­cias que debemos cumplir para poder trabajar a bordo del buque: libreta de embarco, cursos inter­na­cio­na­les, salud física y mental óptima, certi­fi­ca­do de capacidad náutica, pérdida del contacto familiar y… paciencia, mucha pa­cien­cia cuando, encima, nos dicen, como si nada fuera, que el trámite va a tardar un tiempo inau­di­ta­men­te extenso. Más tiempo que el que toma­ría em­ba­ra­zar hoy mismo a la propia esposa y recibir con júbilo al nuevo hijo nueve meses después. Pero esto dista mucho de lo que significa “júbilo”.

            El ciudadano común, y más aún el marino mercante que inicia un trámite por ne­ce­si­da­des la­bo­ra­les, no puede darse el lujo de perder tanto tiempo cuando tiene ne­ce­si­dad de trabajar. La PNA es estatal; y es el Estado el que proclama el derecho al trabajo por un lado, pero man­tie­ne al dino­sau­rio con­for­me por el otro. La Industria del Juicio al Estado no se va a detener mientras esto con­ti­núe incólume.

            Hasta no hace muchos años la Policía Federal le entregaba el pasa­porte al ciu­da­da­no des­pués de seis meses de ini­cia­do el trámite; alguien se hizo cargo y las cosas cam­bia­ron: actua­lmen­te lo en­tre­gan en quince o menos días. Con cua­ren­ta millo­nes de argen­tinos, el Estado puede entre­gar el DNI en el día; pero la PNA, con unos pocos miles de marinos mercantes, no puede entre­gar la Libreta de Embarco en menos de nueve meses. Espero que hagan algo tam­bién con res­pec­to a la Prefectura Naval para que nunca más un trámite demore más de treinta días; para que la PNA sea efi­cien­te en el área ad­mi­nis­tra­ti­va; para que el marino mercante pueda ejercer su derecho al trabajo y llevar el pan a su hogar y para que los oficiales ayudantes que dan la cara en el mostrador de las de­pen­den­cias de la PNA pue­dan ejer­cer su función con orgullo en re­pre­sen­ta­ción de toda la fuerza. Por el bien de todos.

 

El físico Fizeau y su afortunado método para medir la luz

La Ciencia, a veces, nos sor­pren­de con historias curiosas; como aque­llas en las que vemos cómo un expe­ri­men­to obtiene de resultado algo total­mente contra­rio al que se esperaba o que obtiene con falacia el resul­tado espe­rado según la hipótesis. A pesar del “fracaso” del físico como indi­vi­duo, la Ciencia se nutre de eso y pro­clama una ley gene­ral de la que se vale para seguir evo­lu­cio­nan­do. Para la Ciencia no existe el fracaso: todo es útil, todo es éxito.

El físico francés Armand-Hippolyte Fizeau realizó en el año 1849 la primera de­ter­mi­nación expe­ri­men­tal de la velocidad absoluta de la luz; su método de me­di­ción fue adop­tado luego por Foulcault (1862).

fotones cruzando engranaje

Que los fotones puedan atravesar el engranaje depende del grosor, de la cantidad de dientes y vanos y de la velocidad angular del mismo.

Fizeau realizó su expe­rimento y obtuvo falaz­mente el resultado “exitoso” que todos cono­cemos; pero él hubiera llegado a felíz término igual­men­te apun­tando su aparato expe­ri­men­tal hacia cualquier ma­nan­tial de luz pues el re­sul­tado no de­pen­de en abso­luto de la distancia que debe recorrer la luz antes de ser medida su velocidad. La velo­ci­dad de los fotones de la luz que Fizeau emitió usando una lám­pa­ra para hacer­la rebotar en un espejo lejano es la mis­ma velo­ci­dad que la de la luz de, por ejemplo, una estrella lejana de modo que hu­bie­ra obtenido un re­sul­tado exi­toso de todas maneras. Lo vital en el aparato que utilizó Fizeau para medir la velocidad de la luz, c, fue el grosor de los engranajes; una distancia que los fotones debían salvar para poder llegar al ojo del experimentador pero que no pudieron hacer a causa de la gran velocidad angular que tenía el engranaje mismo. Sin embargo nadie se percató de ello en su época, Fizeau se coronó de gloria y hasta un admi­ra­do Foulcault adoptó el equivocado mé­todo de medición suce­dién­do­le lo mis­mo que sucede a los chicos escolares co­pián­dose de otro alumno que no sabe las res­pue­stas del exámen que les está to­man­do la maestra. Menos mal para el pobre Fizeau; hubiera sido un golpe muy bajo para su auto­es­tima.

 

La natu­ra­leza de la luz siempre ha sido (hoy también) un tema muy resba­la­di­zo de tomar entre manos.  Para concilar a los parti­darios de ideas dis­tin­tas se ha lle­gado a procla­mar que la luz es una duali­dad onda-partícula; y punto. El tiempo pa­sará, la naturaleza de la luz será develada ínte­gra­mente y la Ciencia procla­mará un vencedor. Mientras tanto surgi­rán perlitas, como esta, que nos arran­canrán una son­risa con deleite.

 

Seguir

Get every new post delivered to your Inbox.