none
trabajo con Tuple<int,int> RRS feed

  • Pregunta

  • Hola amigos me tope con una pregunta en mi estudio del lenguaje c# y tengo dudas espero k me ayuden

    Es un ejercicio con uso del tipo de datos Tuple el cual consiste en implementar un metodo que dado una lista de enteros y un entero devolver una tuple<int,int> que cumpla que devuelva en ese formato los elementos de mi lista que sumen el otro entero que se pasa como parametro al metodo ej:

    FindTwoSum(new List<int>() { 3, 1, 5, 7, 5, 9 }, 10)

    devolveria 0 y 3, 1 y 5,2 y 4

    ahora tengo hecho esto pero no se como adicionar las coincidencias a mi tuple

    class TwoSum
        {
            public static Tuple<int, int> FindTwoSum(IList<int> list, int sum)
            {
                Tuple<int, int> tupla;            
                for (int i = 0; i < list.Count-1; i++)
                {
                    for (int j = 1; j < list.Count; j++)
                    {
                        if (list[i]+list[j]==sum)
                        {
                            //tupla.Add   //No c como adicionar los elemntos a la tupla
                        }
                    }
                }
            }

            public static void Main(string[] args)
            {
                Tuple<int, int> indices = FindTwoSum(new List<int>() { 3, 1, 5, 7, 5, 9 }, 10);
                if (indices != null)
                {
                    Console.WriteLine(indices.Item1 + " " + indices.Item2);
                }
            }
        }

    jueves, 23 de agosto de 2018 21:23

Respuestas

Todas las respuestas

  • hola

    >>los elementos de mi lista que sumen el otro entero que se pasa como parametro al metodo

    no entendi, los ejemplos de resultado no suman 10 ninguno

    o sea 0 y 3 no es 10, tampoco 1 y 5

    >>tupla.Add   //No c como adicionar los elemntos a la tupla

    Pero Tuple es un item, para tener una lista necesitas un List<Tuple<int, int>>

    Tipos de tupla de C#

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    jueves, 23 de agosto de 2018 21:49
  • Deleted
    • Marcado como respuesta jlpavon1987 viernes, 24 de agosto de 2018 13:39
    jueves, 23 de agosto de 2018 22:55
  • genial, eso es justo lo que comentaba con List<> puede agregar items de Tuple

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 24 de agosto de 2018 12:10
  • Gracias los valores que devolveria como respuesta no son los items sino la posicion dentro de la lista
    viernes, 24 de agosto de 2018 13:40
  • Disculpa pero me exprese mal antes el ejercicio me pide k devuelva una tupla no una lista aki te va:

    Write a function that, when passed a list and a target sum, returns two distinct zero-based indices of any two of the numbers, whose sum is equal to the target sum. If there are no two numbers, the function should return  null.

    For example, FindTwoSum(new List<int>() { 3, 1, 5, 7, 5, 9 }, 10) should return a Tuple<int, int> containing any of the following pairs of indices:

    • 0 and 3 (or 3 and 0) as 3 + 7 = 10
    • 1 and 5 (or 5 and 1) as 1 + 9 = 10
    • 2 and 4 (or 4 and 2) as 5 + 5 = 10

    esto fue lo k hice gracias a ti pero de 4 especificaciones que presenta el problema tengo 3 cumplidas y 1 fallida la cual me dice que para listas mas largas excedo el limite de tiempo es decir que tengo que optimizar mi metodo pero no c me ocurre otra cosa me sugieres alguna idea??

     class TwoSum
        {
            public static Tuple<int, int> FindTwoSum(IList<int> list, int sum)
            {
               
                Tuple<int, int> tuplas=null;
                for (int i = 0; i < list.Count - 1; i++)
                {
                    for (int j = i + 1; j < list.Count; j++)
                    {
                        if (list[i] + list[j] == sum)
                        {
                            return tuplas = new System.Tuple<int, int>(i, j);

                        }
                    }
                }
                return tuplas;
            }

            public static void Main(string[] args)
            {
                Tuple<int, int> indices = FindTwoSum(new List<int>() { 3, 1, 5, 7, 5, 9 }, 10);
                if (indices != null)
                {
                    Console.WriteLine(indices.Item1 + " " + indices.Item2);
                    Console.ReadLine();
                }
            }
        }

    viernes, 24 de agosto de 2018 17:39