Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Cuenta la leyenda que el invento del ajedrez entusiasmo de tal modo a un rey de la India que quiso saber enseguida
en que poda ayudar al s
ubdito que lo haba ideado. Este solo peda arroz: un grano por la primera casilla del tablero,
dos por la segunda, cuatro por la tercera, ocho por la cuarta. . . , y de este modo, doblando en cada casilla los granos
de la anterior, hasta completar las sesenta y cuatro. Al rey le parecio un deseo facil de satisfacer y se puso a la
tarea de calcular la cantidad de cereal pedida para entregarsela al inventor. Escribe un programa ajedrez1() para
calcular los granos y los gramos de arroz solicitados, suponiendo que en cada gramo entran cinco granos. Escribe
otro, ajedrez2() que, despues de preguntar al usuario cuanto granos de arroz hay en los graneros de palacio,
calcule cu
antas casillas como m
aximo tendra que haber tenido el tablero para que la gratificacion hubiera sido
factible. Por u
ltimo, dise
na un tercer programa ajedrez3() que, como el anterior, calcule el mayor tama
no posible
del tablero para el que se podra cumplir con el inventor, pero restringiendose a tableros cuadrados (de 1, 4, 9, 16,
25, . . . casillas).
Ejercicio
Es la siguiente implementaci
on una soluci
on para el programa ajedrez3() ? En caso negativo, propon una soluci
on.
Justifica tus respuestas.
1
2
3
4
5
6
7
8
9
def ajedrez3():
n = int(input(Cu
antos granos de
r=len(bin(n))-2
s=int(r**(1/2))
if s**2<r:
return s
elif n==2**r-1:
return s
return s-1
def ajedrez2():
n = int(input(Cu
antos granos de
r=len(bin(n))-2
if n==2**r-1:
return r
return r-1