miércoles, 28 de marzo de 2018

Leyenda creador ajedrez

   Buenas tardes, una de mis aficiones es el ajedrez y recuerdo que en uno de los libros que leía se contaba una leyenda sobre la creación de este juego:

       "En la India había un rey, en una batalla perdió a su único hijo, quedando sumido en la tristeza, un sabio llegó a la corte con un extraño tablero y unas piezas diciendo que el juego que había inventado mitigaría la tristeza del monarca. Tras jugar durante varios días, el rey consigo recuperar las ganas de vivir y prometió al sabio lo que quisiera, éste pidió un día para pensarlo y el monarca se lo concedió.

       Al día siguiente, el sabio se presentó y realizo su petición "Quiero un grano de trigo por la primera casilla del tablero, dos por la segunda, cuatro por la tercera y así hasta la casilla sesenta y cuatro", el rey sorprendido por tan "modesta" petición accedió, al empezar a calcular a cuánto ascendía la cantidad vieron que necesitaban las cosechas de varios años para cumplir la petición del sabio.


       Este problema matemático, de fácil solución, ha sido el entretenimiento esta mañana.

        Con una hoja de cálculo el problema se resuelve en minutos:

  
 A la celda A1 le asignamos un valor igual a 1 que vamos incrementando hasta 64, el número de casillas de un tablero de ajedrez, con la fórmula A1+1 (Ctrl+C y Ctrl+V) realizamos esta operación en segundos, la casilla B1 realizará el cálculo: 1*1, que será cambiado en la casilla B2 por la siguiente fórmula +b2*2, así obtenemos el resultado final tras copiar y pegar.



¿Cómo realizar este problema en nuestro Commodore 64?. Yo lo he hecho de la siguiente manera: 

- Asigno a la variable A un valor igual a 1.

- La variable B será el resultado de multiplicar 1*1 (podría haber puesto 1 directamente o igual a A, pero para no liarla y seguir el desarrollo de la petición del sabio, lo hice así).

- El  tercer paso sería mostrar este resultado en pantalla, fácil con print.

- Ahora debemos incrementar los valores, hasta llegar a sesenta y cuatro e incrementando en cada paso, cambiando el valor de las variables o finalizando el programa al llegar al punto indicado. El listado del programa en basic:

1 rem *** Problema ajedrez
5 print"CLR/HOME Problema ajedrez"
6 a=1
7 b=1*1
10 print a,b 
11 a=a+1
12 b=b*2
15 print a,b
20 if a<64 then goto 11
21 if a=64 then end

Creo que no necesita ninguna explicación, lleva más tiempo que hacerlo con la hoja de cálculo, pero el resultado es el mismo, me habría gustado que quedará "más elegante" ya que los resultados van apareciendo en pantalla desapareciendo los anteriores, podría haber puesto un retardo.

También me gustaría si alguno consigue plantearlo de otra manera.

He intentado realizarlo con VICE, para mostrar la captura de pantalla, pero he sido incapaz de encontrar el = en el teclado, así que para no perder más tiempo lo he publicado así.

P.D.: Este post no cuenta, así que estoy haciendo otro para realizar el reto de un post al mes.
 
 

 
 

 

5 comentarios:

  1. 2elevado a 64 -1

    flechita hacia arriba

    ResponderEliminar
    Respuestas
    1. Exacto anónimo, pero de esa manera veríamos el resultado final y la gracia está en ver como va aumentando. Un saludo.

      Eliminar
  2. Entonces...
    10 FORT =1TO64:PRINT 2^T -1:NEXT

    ResponderEliminar
  3. Y si quieres ver el nº de la casilla, emplea la coma como tabulador,

    10 FORT =1TO64:PRINT T, 2^T -1:NEXT

    ResponderEliminar