Reto: Progresión geométrica
Calcular cuantos granos de trigo tendríamos que utilizar si por cada casilla de un tablero de ajedrez pusiéramos un grano en la primera casilla, dos en la segunda, cuatro en la tercera, y así doblando hasta la última.
Este es el caso de la leyenda de los granos de trigo y el tablero de ajedrez.
También puede interesarle ver La leyenda del Ajedrez
Método 1
La variables
se inicializa en cero, y contendrá la suma de todos los granos de trigo que se van anotando en cada casilla. Nos metemos en un bucle for
que usa la variable i
que va entre cero y 64, incluido el cero y excluido el 64. Dentro del bucle calculamos el número de granos de la casilla i-ésima elevando al cuadrado, y esto se va acumulando en la variable s
que es la suma de todos ellos. Se imprime el cómputo por cada casilla y fuera del bucle imprimimos nuevamente el resultado final en notación científica. Observe que hemos separado en dos líneas impresas usando /n
. La notación científica se puede implementar usando la e
minúscula o la E
mayúscula.s=0
for i in range(8*8):
s+=2**i
print(i+1,2**i,s)
print("En notación científica es %e,\n y el total es: %E granos de trigo." % (2**i,s))
Método 2
En este caso usamos un bucle de tipowhile
. Al final hacemos una estimación de que en un kilo de trigo hay 25.000 granos y con ella calculamos redondeando cuantos millones de toneladas serían necesarios, comparándolo con la producción mundial.i=0
s=0
while i<64:
s+=2**i
print(i+1,2**i,s)
i+=1
print('Unos',int(round(s/25000000000000,0)),'millones de toneladas')
print('En 2018, la producción mundial fue de 750 millones de toneladas')
ResponderEliminar#Calcular cuantos granos de trigo tendríamos que utilizar si por cada casilla de un tablero de ajedrez pusiéramos un grano en la primera casilla, dos en la segunda, cuatro en la tercera, y así doblando hasta la última. (tablero tiene 64 cuadros)
c = 1
contador = 0
while contador < 64:
contador = contador+1
print(('Los granos necesarios son: {:,.2f}'.format(c)))
c = c+c
casillas = 64
ResponderEliminarciclos = 1
granos = 1
while ciclos <= casillas:
granos = granos * 2
ciclos = ciclos + 1
print("En el tablero de ajedrez hay " + str(granos) + " de trigo.")
resultado = 1
ResponderEliminarfor i in range(64):
resultado += resultado
Print(resultado)
not here
Eliminaryour code gives: 18446744073709551616 unstead ...615
Eliminarx = 1
ResponderEliminarlista = [1]
for i in range(1,64):
x = x*2
lista.append(x)
print("Resultado : " + str(sum(lista)))
¿Que opinan de mi solución?
ResponderEliminardef run():
LIMIT = 65
initial_value = 1
for i in range(1, LIMIT):
initial_value = initial_value + initial_value
print(initial_value)
if __name__ == '__main__':
run()
Solucionado con unos compañeros en tiempo libre
ResponderEliminar//
Trigo = 1
contador=0
for Casilla in range(1,65):
print("Casilla N°: ", Casilla," Trigo: ",Trigo)
contador = Trigo + contador
Trigo=Trigo*2
print ("Total de Trigo: ",contador)
par1=1
ResponderEliminarpar2=0
for i in range(64):
par1*=2
print(par1)
casillas = 64
ResponderEliminargranos = 1
mult = 2
for i in range(casillas):
granos *= mult
casillas -= 1
print(granos)