Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: ThePaquet1 en 5 Marzo 2021, 16:37 pm



Título: Programa que pide un conjunto de números y los cambia de posición
Publicado por: ThePaquet1 en 5 Marzo 2021, 16:37 pm
Buenas, estoy haciendo un programa que su funcionamiento es el siguiente:

- Pido por teclado un conjunto de números separados por espacios, específicamente 5, por ejemplo:

Código:
1 5 4 3 2

- Esos números representan una torre, siendo el primer número introducido que está más abajo y el último el que está más arriba, así:

Código:
2
3
4
5
1

- Después pido que introduzcan "movimientos" (otro conjunto de números separados por espacios), específicamente 3 números, ejemplo:

Código:
2 3 2

- Estos números representan los movimientos que se han hecho sobre la torre. El primer movimiento da la vuelta a las 2 primeras tortitas, sobre la torre resultante se da la vuelta a las 3 primeras tortitas y sobre la torre resultante se da la vuelta a las 2 primeras. A continuación hago una demostración, la primera torre es la original que puse antes, y las demás son aplicando los movimientos (la segunda torre con el movimiento 2, la tercera torre con el movimiento 3 y la cuarta torre con el movimiento 2):

Código:
2        3        4        2
3        2        2        4
4   ->   4   ->   3   ->   3
5        5        5        5
1        1        1        1

- Por último, cuando se hayan realizado todos los movimientos, se devuelve el valor que se encuentre arriba de la torre. En el ejemplo que he puesto la salida sería:

Código:
2

Esto es lo que he hecho:
Código:
print("Introduzca la posición de los cinco números:")
num1, num2, num3, num4, num5 = input().split()
numeros = [num5, num4, num3, num2, num1]
numero = []

x = list(map(int, input("Introduzca los movimientos que va a realizar: ").split()))

for z in range(len(x)):
    for y in range(x[z]):
        numero.append(numeros[y])
    numero.reverse()
    for y in range(len(numero)):
        numeros[y] = numero[y]
    numero.clear()
for p in range(len(numeros)):
    print(numeros[p])
print("El número que se encuentra en la cima de la torre es el: " + numeros[0])

El programa funciona perfectamente, me muestra la torre final con los movimientos aplicados y el número que está arriba de la torre, pero al parecer me han dicho que debería haber hecho todo con arrays y que eso está mal, pero que yo sepa lo he hecho con un array, ¿no? ¿Hay alguna otra forma con arrays de hacer esto?

Muchas gracias por adelantado.


Título: Re: Programa que pide un conjunto de números y los cambia de posición
Publicado por: tincopasan en 9 Marzo 2021, 04:24 am
habría que ver que es lo que quieren o esperan quienes te dan el ejercicio, hay muchas formas de resolver esto, inclusive me cauda gracia el término array, es una lista como tal, según lo que pusiste un ejemplo:
Código
  1. #-*- coding: utf -8 -*-
  2. print("Introduzca la posición de los cinco números:")
  3. numeros=[int(x) for x in input(">> ").split()][::-1]
  4. movimientos = [int(x) for x in input("Introduzca los movimientos que va a realizar: ").split()]
  5. temp=numeros[:]
  6. for j in movimientos:
  7.  
  8.    numeros[0] = numeros[j-1]
  9.    numeros[j- 1] = temp[0]
  10.    temp=numeros[:]
  11.    print(numeros) #opcional
  12. print("El número que se encuentra en la cima de la torre es el: ",numeros[0])    
  13.  
  14.  

como dije es una de las tantas formas, no te muestro otra porque no me interesa el criterio que tengan los que esperan la respuesta.


Título: Re: Programa que pide un conjunto de números y los cambia de posición
Publicado por: Serapis en 9 Marzo 2021, 19:35 pm
... pero al parecer me han dicho que debería haber hecho todo con arrays y que eso está mal, pero que yo sepa lo he hecho con un array, ¿no? ¿Hay alguna otra forma con arrays de hacer esto?
Lo que quieren es que pienses, que sepas cómo sucede, no simplemente que hagas que suceda...

Dicho de otro modo: Quieren que uses bucles y que cambies elementos de un array a otro o dentro del mismo array usando variables temporales e índices entre elementos.
No quieren que utilices métodos de objetos que te faclitan el trabajo... eso para cuando seas profesional ahora toca aprender como hacerlo 'manualmente'.