lunes, 24 de septiembre de 2018

Progresión geométrica en Python

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 variable s 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 tipo while. 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')

10 comentarios:



  1. #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

    ResponderEliminar
  2. casillas = 64
    ciclos = 1
    granos = 1

    while ciclos <= casillas:
    granos = granos * 2
    ciclos = ciclos + 1

    print("En el tablero de ajedrez hay " + str(granos) + " de trigo.")

    ResponderEliminar
  3. resultado = 1
    for i in range(64):
    resultado += resultado
    Print(resultado)

    ResponderEliminar
  4. x = 1
    lista = [1]

    for i in range(1,64):
    x = x*2
    lista.append(x)
    print("Resultado : " + str(sum(lista)))

    ResponderEliminar
  5. ¿Que opinan de mi solución?

    def 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()

    ResponderEliminar
  6. Solucionado con unos compañeros en tiempo libre
    //
    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)

    ResponderEliminar
  7. par1=1
    par2=0
    for i in range(64):
    par1*=2
    print(par1)

    ResponderEliminar
  8. casillas = 64
    granos = 1
    mult = 2


    for i in range(casillas):

    granos *= mult
    casillas -= 1


    print(granos)

    ResponderEliminar