View Single Post
Old 14-02-2008, 14:19   #16
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Cittā: Londra (Torino)
Messaggi: 3692
Ci credi che e' proprio il nodo centrale del mio ultimo colloquio di assunzione?
Io l'avevo risolto piu' o meno come riporto qui.
Si puo' ottimizzare pesantemente, ma cosi' funziona (sono stato assunto).
Ovviamente poi sono stato assunto per un problema simile, e la prima ottimizzazione e' stata proprio quella di "compattare" e quindi sveltire le operazioni.

Codice:
class Program
    {
        static void Main(string[] args)
        {
            Agente ag = new Agente();
            Console.WriteLine("Compro 10 azioni a 70.0");
            ag.Compro(10, 70.0);
            Console.WriteLine("Compro 8 azioni a 75.0");
            ag.Compro(8, 75.0);
            Console.WriteLine("Vendo 15 azioni a 78.0");
            double gain = ag.Vendo(15, 78.0);
            Console.WriteLine("Gain ultima operazione={0}", gain);
            Console.ReadKey();
        }
    }

    class Agente
    {
        private Stack<double> Azioni = new Stack<double>();

        public void Compro(int Numeroazioni, double Prezzo)
        {
            for (int t = 0; t < Numeroazioni; t++)
            {
                Azioni.Push(Prezzo);
            }            
        }

        public double Vendo(int NumeroAzioni, double Prezzo)
        {
            double ret = 0;
            for (int t = 0; t < NumeroAzioni; t++)
            {
                double conf = Azioni.Pop();
                ret += (Prezzo - conf);
            }
            return ret;
        }
    }
Stampa 80, che dovrebbe essere giusto
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.

Ultima modifica di gugoXX : 14-02-2008 alle 14:24. Motivo: Risultato
gugoXX č offline   Rispondi citando il messaggio o parte di esso