EP5 - Boiando2

EP5 - Boiando2

por Vanessa Araujo Rodrigues -
Número de respostas: 12

Não consigo! passei os últimos três dias tentando e não consigo enxergar a solução. Muito menos recursiva... Alguém pode ajudar?

Em resposta à Vanessa Araujo Rodrigues

Re: EP5 - Boiando2

por Carlos Hitoshi Morimoto -

DICAS:

Tente simplificar, entender alguns casos mais simples.

Por exemplo, você sabe resolver o problema para um estoque com uma barra e um pedido?

e duas barras e um pedido? e N>2 barras e um pedido?

e 1 barra e dois pedidos?  e 1 barra e M>2 pedidos?

depois disso, comece a pensar em N barras e M pedidos.

 

Experimente com exemplos concretos, por exemplo, estoque com uma barra de 50 e um pedido de 40, e depois com um estoque com uma barra de 50 e um pedido de 60, etc.

 

Em resposta à Carlos Hitoshi Morimoto

Re: EP5 - Boiando2

por Bruna Thalenberg -

meu problema é com a recursão. consigo resolver iterativamente e, a partir da condição de parada, delimitei um caso base, etc. e tentei fazer a versão recursiva. mas, para funcionar, precisaria passar a lista de resultados como argumento em processe_pedidos, coisa que não posso fazer...

Em resposta à Bruna Thalenberg

Re: EP5 - Boiando2

por José Coelho de Pina -

precisaria passar a lista de resultados como argumento em processe_pedidos

Em vez disso, modifique a lista estoque e pedidos e faça a chamada recursiva a fim de resolver o subproblema.

Em resposta à Carlos Hitoshi Morimoto

Re: EP5 - Boiando2

por Emerson Castro -

Comigo o problema esta sendo para N barras e M pedidos. Com N e M igual a 2 ainda consigo pensar (logo tambem produzo o código). Mas quando tenho muitas barras e muitos pedidos, não consigo achar uma forma de fazer cortes de forma que dará certo, num caso possível.

Ex: Barras 85 90  Pedidos 70 60 30 10. Neste caso, não consigo pensar numa lógica para cortar o pedido da barra correta para atender a todos os pedidos. Meu programa corta 70 da barra 90 e aí já era, acabou a possibilidade de completar o pedido.

Há alguma dica de alguma função complementar ou algo que eu possa pensar para resolver este problema?

Em resposta à Emerson Castro

Re: EP5 - Boiando2

por José Coelho de Pina -

Ex: Barras 85 90 Pedidos 70 60 30 10.

Python 3.5.2 (default, Jul  5 2016, 12:43:10) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> main()
estoque >>> 85 90
Estoque possui 2 barras: 
    barra 0: 85 cm
    barra 1: 90 cm
pedidos >>> 70 60 30 10
Há 4 pedidos para serem atendidos:
    pedido 0: 70 cm
    pedido 1: 60 cm
    pedido 2: 30 cm
    pedido 3: 10 cm
Maneira para atender aos pedidos: 
    pedido 0: corte 70 cm da barra 0
    pedido 1: corte 60 cm da barra 1
    pedido 2: corte 30 cm da barra 1
    pedido 3: corte 10 cm da barra 0
Sobras no estoque: 
   barra 0: 5cm
   barra 1: 0cm
>>> 

Meu programa corta 70 da barra 90 e aí já era, acabou a possibilidade de completar o pedido.

Perfeito.
A sua função tomou um decisão.
Cortou e lá na frente não conseguiu estender essa decisão a uma solução do problema.
Assim que percebeu que não vai dar é hora de bater em retirada (= return False,[]).
A chamada que tomou a decisão errada, receberá o sinal de retirada e deverá: desfazer o corte e tentar uma nova possibilidade ou ainda, bater em retirada mais ainda. sorriso

Em resposta à Vanessa Araujo Rodrigues

Re: EP5 - Boiando2

por Vanessa Araujo Rodrigues -

Ainda nada... Vocês são os melhores professores ever, mas as dicas, para mim, foram insuficientes... Não consigo realizar esse EP.

Desisto... zero. 

Quem sabe no próximo....

Em resposta à Vanessa Araujo Rodrigues

Re: EP5 - Boiando2

por José Coelho de Pina -

não consigo pensar em nenhuma solução

Não consigo realizar esse EP.

O negócio é mais ou menos o seguinte, o que importa é o caminho, não o destino.
Tipo Yoga, nem todo mundo consegue colocar o pé direito atrás da orelha esquerda. virando os olhos
O que importa é tentar (espero... piscando).

Todos estão brigando com o problema.
Assim todos estão aprendendo muito. boca aberta
É isso que nós queremos. É isso que importa.
Sim, sim, ..., sabemos, tem esse negócio de nota etc. etc.

Entreguem um programa que não exploda.
Se a função recursiva processe_pedidos() algumas vezes diz que não é possível atender os pedidos, mas é, paciência.